Launcher will now look for an info file containing the title of the games.

This commit is contained in:
eukos 2016-01-08 12:13:41 +01:00
parent c1cfd0796b
commit 065b156f1a

View file

@ -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();