Launcher will now look for an info file containing the title of the games.
This commit is contained in:
parent
c1cfd0796b
commit
065b156f1a
1 changed files with 56 additions and 22 deletions
|
@ -6,13 +6,16 @@
|
|||
#include <stdio.h>
|
||||
#include <pwd.h> // pwd for home dir
|
||||
|
||||
typedef unsigned char byte;
|
||||
|
||||
static char cmd_args[32];
|
||||
|
||||
static int engine_memory;
|
||||
static int engine_vid_width;
|
||||
static int engine_vid_height;
|
||||
static byte engine_vid_border;
|
||||
static char engine_cfg_path[80];
|
||||
static int iGameCnt;
|
||||
|
||||
void launcher_settings_save()
|
||||
{
|
||||
|
@ -22,6 +25,7 @@ void launcher_settings_save()
|
|||
fprintf(fFile, "%d\n", engine_memory);
|
||||
fprintf(fFile, "%d\n", engine_vid_width);
|
||||
fprintf(fFile, "%d\n", engine_vid_height);
|
||||
fprintf(fFile, "%d\n", engine_vid_border);
|
||||
fclose(fFile);
|
||||
printf("[LAUNCHER] Saved settings...\n");
|
||||
}
|
||||
|
@ -33,41 +37,52 @@ void launcher_settings_load()
|
|||
struct passwd *pw = getpwuid(uid);
|
||||
sprintf(engine_cfg_path, "%s/.ngunixrc", pw->pw_dir);
|
||||
|
||||
if(access(engine_cfg_path, R_OK) != -1 ) {
|
||||
if(access(engine_cfg_path, R_OK) != -1 )
|
||||
{
|
||||
fFile = fopen(engine_cfg_path, "r");
|
||||
fscanf(fFile,"%d %d %d", &engine_memory, &engine_vid_width, &engine_vid_height);
|
||||
fscanf(fFile,"%d %d %d", &engine_memory, &engine_vid_width, &engine_vid_height, &engine_vid_border);
|
||||
fclose(fFile);
|
||||
printf("[LAUNCHER] Loaded settings... %dx%d @ %dMB memory\n", engine_vid_width, engine_vid_height, engine_memory);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
engine_memory = 60;
|
||||
engine_vid_width = 640;
|
||||
engine_vid_height = 480;
|
||||
engine_vid_border = 1;
|
||||
launcher_settings_save();
|
||||
}
|
||||
}
|
||||
|
||||
enum
|
||||
{
|
||||
LIST_ITEM = 0,
|
||||
LIST_ITEM,
|
||||
LIST_DIR,
|
||||
N_COLUMNS
|
||||
};
|
||||
|
||||
void launcher_init_list(GtkWidget *list)
|
||||
{
|
||||
GtkCellRenderer *renderer;
|
||||
GtkTreeViewColumn *column;
|
||||
GtkCellRenderer *renderer1;
|
||||
GtkCellRenderer *renderer2;
|
||||
GtkTreeViewColumn *column1, *column2;
|
||||
GtkListStore *store;
|
||||
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
column = gtk_tree_view_column_new_with_attributes("Custom Game", renderer, "text", LIST_ITEM, NULL);
|
||||
gtk_tree_view_append_column(GTK_TREE_VIEW(list), column);
|
||||
store = gtk_list_store_new(N_COLUMNS, G_TYPE_STRING);
|
||||
renderer1 = gtk_cell_renderer_text_new ();
|
||||
column1 = gtk_tree_view_column_new_with_attributes("Game", renderer1, "text", LIST_ITEM, NULL);
|
||||
|
||||
renderer2 = gtk_cell_renderer_text_new ();
|
||||
column2 = gtk_tree_view_column_new_with_attributes("Directory", renderer1, "text", LIST_DIR, NULL);
|
||||
|
||||
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);
|
||||
|
||||
gtk_tree_view_set_model(GTK_TREE_VIEW(list), GTK_TREE_MODEL(store));
|
||||
g_object_unref(store);
|
||||
}
|
||||
|
||||
void launcher_add_to_list(GtkWidget *list, const gchar *str)
|
||||
void launcher_add_to_list(GtkWidget *list, const gchar *gcTitle, const gchar *gcDir)
|
||||
{
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
@ -75,7 +90,8 @@ void launcher_add_to_list(GtkWidget *list, const gchar *str)
|
|||
store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(list)));
|
||||
|
||||
gtk_list_store_append(store, &iter);
|
||||
gtk_list_store_set(store, &iter, LIST_ITEM, str, -1);
|
||||
gtk_list_store_set(store, &iter, LIST_ITEM, gcTitle, -1);
|
||||
gtk_list_store_set(store, &iter, LIST_DIR, gcDir, -1);
|
||||
}
|
||||
|
||||
void launcher_list_changed(GtkWidget *widget, gpointer label) {
|
||||
|
@ -86,8 +102,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_ITEM, &value, -1);
|
||||
//gtk_label_set_text(GTK_LABEL(label), value);
|
||||
gtk_tree_model_get(model, &iter, LIST_DIR, &value, -1);
|
||||
sprintf(cmd_args, "%s", value);
|
||||
g_free(value);
|
||||
}
|
||||
|
@ -95,9 +110,12 @@ void launcher_list_changed(GtkWidget *widget, gpointer label) {
|
|||
|
||||
void launcher_cachefolders(const char *name, GtkWidget *list)
|
||||
{
|
||||
DIR *d;
|
||||
DIR *d;
|
||||
FILE *f;
|
||||
struct dirent *dir;
|
||||
char fname[32];
|
||||
char cFile[80];
|
||||
|
||||
d = opendir(name);
|
||||
if (d)
|
||||
{
|
||||
|
@ -105,9 +123,19 @@ void launcher_cachefolders(const char *name, GtkWidget *list)
|
|||
{
|
||||
if (dir->d_type == DT_DIR && !(strcmp(dir->d_name, ".") == 0 || strcmp(dir->d_name, "..") == 0))
|
||||
{
|
||||
printf("[LAUNCHER] Found directory: %s\n", dir->d_name);
|
||||
sprintf(fname, "%s", dir->d_name);
|
||||
launcher_add_to_list(list, fname);
|
||||
sprintf(cFile, "%s/%s/info", name, dir->d_name);
|
||||
|
||||
if(access(cFile, R_OK) != -1 )
|
||||
{
|
||||
f = fopen(cFile, "r");
|
||||
char cTemp[32];
|
||||
fscanf(f, "%35[^\n]", cTemp);
|
||||
fclose(f);
|
||||
printf(" Found %s (%s)\n", cTemp, dir->d_name);
|
||||
sprintf(fname, "%s", dir->d_name);
|
||||
launcher_add_to_list(list, cTemp, fname);
|
||||
iGameCnt++;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir(d);
|
||||
|
@ -117,8 +145,12 @@ void launcher_cachefolders(const char *name, GtkWidget *list)
|
|||
void launcher_start()
|
||||
{
|
||||
char cmd[128];
|
||||
sprintf(cmd, "./ngunix.x11 -data id1 -game %s -winsize %d %d -mem %d\n",
|
||||
cmd_args, engine_vid_width, engine_vid_height, engine_memory);
|
||||
|
||||
if(strlen(cmd_args) > 0)
|
||||
sprintf(cmd, "./ngunix.x11 -data id1 -game %s -winsize %d %d -mem %d\n", cmd_args, engine_vid_width, engine_vid_height, engine_memory);
|
||||
else
|
||||
sprintf(cmd, "./ngunix.x11 -data id1 -winsize %d %d -mem %d\n", engine_vid_width, engine_vid_height, engine_memory);
|
||||
|
||||
printf(cmd);
|
||||
system(cmd);
|
||||
}
|
||||
|
@ -181,8 +213,7 @@ int main(int argc, char *argv[])
|
|||
listgames = gtk_tree_view_new();
|
||||
gtk_scrolled_window_add_with_viewport (
|
||||
GTK_SCROLLED_WINDOW (listwindow), listgames);
|
||||
gtk_widget_set_size_request(listwindow, 144, 160);
|
||||
//gtk_widget_set_size_request(listgames, 143, 159);
|
||||
gtk_widget_set_size_request(listwindow, 440, 160);
|
||||
|
||||
launcher_init_list(listgames);
|
||||
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(listgames));
|
||||
|
@ -194,7 +225,10 @@ int main(int argc, char *argv[])
|
|||
gtk_signal_connect (GTK_OBJECT (btnplay), "clicked", GTK_SIGNAL_FUNC (launcher_start),NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (btnquit), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit),NULL);
|
||||
|
||||
iGameCnt = 1;
|
||||
printf("[LAUNCHER] Scanning directories....\n");
|
||||
launcher_cachefolders(".", listgames);
|
||||
printf(".......... %d folder(s) found\n", iGameCnt);
|
||||
|
||||
gtk_main();
|
||||
|
||||
|
|
Loading…
Reference in a new issue