From bfeaf5944b5ee2a08f76426bf4b9f8f62bdeb977 Mon Sep 17 00:00:00 2001 From: eukos Date: Mon, 11 Jan 2016 23:20:00 +0100 Subject: [PATCH] Some small launcher stuff, such as support for mod commandline paramters --- launcher/main.c | 85 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 30 deletions(-) diff --git a/launcher/main.c b/launcher/main.c index 4c84777..5c1faad 100644 --- a/launcher/main.c +++ b/launcher/main.c @@ -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);