Some small launcher stuff, such as support for mod commandline paramters

This commit is contained in:
eukos 2016-01-11 23:20:00 +01:00
parent 025da296fe
commit bfeaf5944b

View file

@ -8,8 +8,9 @@
typedef unsigned char byte;
static char cmd_args[32];
static char cmd_args[128];
static char engine_game[16];
static int engine_memory;
static int engine_vid_width;
static int engine_vid_height;
@ -80,6 +81,9 @@ void launcher_init_list(GtkWidget *list)
column2 = gtk_tree_view_column_new_with_attributes("Directory", renderer1, "text", LIST_DIR, NULL);
gtk_tree_view_column_set_sort_column_id (column2, LIST_DIR);
//gtk_tree_sortable_set_sort_column_id (column1, LIST_ITEM, GTK_SORT_ASCENDING);
gtk_tree_view_column_set_expand(column1, TRUE);
gtk_tree_view_append_column(GTK_TREE_VIEW(list), column1);
gtk_tree_view_append_column(GTK_TREE_VIEW(list), column2);
store = gtk_list_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
@ -109,7 +113,7 @@ void launcher_list_changed(GtkWidget *widget, gpointer label)
if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), &model, &iter))
{
gtk_tree_model_get(model, &iter, LIST_DIR, &value, -1);
sprintf(cmd_args, "%s", value);
sprintf(engine_game, "%s", value);
g_free(value);
}
}
@ -119,7 +123,7 @@ void launcher_cachefolders(GtkWidget *list)
DIR *d;
FILE *f;
struct dirent *dir;
char cFile[80];
char cFile[32];
d = opendir(".");
@ -152,23 +156,28 @@ void launcher_cachefolders(GtkWidget *list)
void launcher_start()
{
char cmd[128];
char cbase[64];
char cFile[32];
char cArgs[64];
if(strlen(cmd_args) > 0)
{
if(engine_vid_border == 1)
sprintf(cmd, "./ngunix.x11 -game %s -winsize %d %d -mem %d\n", cmd_args, engine_vid_width, engine_vid_height, engine_memory);
else
sprintf(cmd, "./ngunix.x11 -game %s -winsize %d %d -mem %d -noborder\n", cmd_args, engine_vid_width, engine_vid_height, engine_memory);
sprintf(cFile, "./%s/cmdline", engine_game);
if(access(cFile, R_OK) != -1 )
{
FILE *f;
f = fopen(cFile, "r");
fscanf(f, "%63[^\n]", cArgs);
fclose(f);
}
else
{
if(engine_vid_border)
sprintf(cmd, "./ngunix.x11 -winsize %d %d -mem %d\n", engine_vid_width, engine_vid_height, engine_memory);
else
sprintf(cmd, "./ngunix.x11 -winsize %d %d -mem %d -noborder\n", engine_vid_width, engine_vid_height, engine_memory);
}
sprintf(cArgs, "");
sprintf(cbase, "./ngunix.x11 -data id1 -winsize %d %d -mem %d", engine_vid_width, engine_vid_height, engine_memory);
if(engine_vid_border == 1)
sprintf(cmd, "%s -game %s %s\n", cbase, engine_game, cArgs);
else
sprintf(cmd, "%s -noborder -game %s %s\n", cbase, engine_game, cArgs);
printf(cmd);
system(cmd);
}
@ -182,19 +191,22 @@ gboolean resize_list(GtkWidget *window, GdkEvent *event, GtkWidget *widget)
void launcher_settings_window()
{
GtkWidget *prefwindow;
/* GtkWidget *prefwindow;
GtkWidget *hbox1, *hbox2;
GtkWidget *vbox1, *vbox2;
//GtkWidget *frame;
GtkWidget *ltable1;
ltable1 = gtk_fixed_new();
vbox1 = gtk_vbox_new(TRUE, 1);
vbox2 = gtk_vbox_new(TRUE, 1);
hbox1 = gtk_hbox_new(TRUE, 1);
hbox2 = gtk_hbox_new(TRUE, 1);
prefwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
prefwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (prefwindow, "NGUNIX - Engine Settings");
gtk_container_set_border_width(GTK_CONTAINER(prefwindow), 10);
//frame = gtk_frame_new("Video Options");
//gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
gtk_container_add(GTK_CONTAINER(prefwindow), ltable1);
gtk_container_add(GTK_CONTAINER(prefwindow), vbox1);
gtk_container_add(GTK_CONTAINER(vbox1), hbox1);
gtk_container_add(GTK_CONTAINER(vbox1), hbox2);
GtkLabel *label1 = gtk_label_new("Video Width");
GtkLabel *label2 = gtk_label_new("Video Height");
@ -206,19 +218,30 @@ void launcher_settings_window()
GtkWidget *entry1 = gtk_entry_new();
GtkWidget *entry2 = gtk_entry_new();
GtkWidget *entry3 = gtk_entry_new();
char vid_width[4], vid_height[4], vid_mem[3];
sprintf(vid_width, "%d", engine_vid_width);
sprintf(vid_height, "%d", engine_vid_height);
sprintf(vid_mem, "%d", engine_memory);
GtkEntryBuffer *buf1 = gtk_entry_buffer_new(vid_width, 4);
GtkEntryBuffer *buf2 = gtk_entry_buffer_new(vid_height, 4);
GtkEntryBuffer *buf3 = gtk_entry_buffer_new(vid_mem, 3);
gtk_fixed_put(GTK_FIXED(ltable1), entry1, 90, 0);
gtk_fixed_put(GTK_FIXED(ltable1), entry2, 90, 20);
gtk_fixed_put(GTK_FIXED(ltable1), entry3, 90, 40);
gtk_entry_set_buffer(entry1, buf1);
gtk_entry_set_buffer(entry2, buf2);
gtk_entry_set_buffer(entry3, buf3);
GtkWidget *check1 = gtk_check_button_new_with_label("Window Borders");
GtkWidget *check2 = gtk_check_button_new_with_label("Hide Unknown Mods");
gtk_fixed_put(GTK_FIXED(ltable1), check1, 0, 60);
gtk_fixed_put(GTK_FIXED(ltable1), check2, 0, 80);
gtk_widget_show_all(prefwindow);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check1), engine_vid_border ? TRUE : FALSE);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check2), engine_hidden ? TRUE : FALSE);
gtk_widget_show_all(prefwindow);
g_signal_connect(prefwindow, "destroy", G_CALLBACK(gtk_widget_hide), NULL);
g_signal_connect(prefwindow, "destroy", G_CALLBACK(gtk_widget_hide), NULL);*/
}
int main(int argc, char *argv[])
@ -245,6 +268,8 @@ int main(int argc, char *argv[])
printf("[LAUNCHER] Using Directory %s\n", argv[1]);
}
sprintf(engine_game, "data");
gtk_init(&argc, &argv);
launcher_settings_load();
@ -293,7 +318,7 @@ int main(int argc, char *argv[])
listgames = gtk_tree_view_new();
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (listwindow), listgames);
gtk_scrolled_window_set_policy(listwindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(listwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_widget_set_size_request(listwindow, 440, 300);
launcher_init_list(listgames);