mirror of
https://github.com/Oibaf66/uae-wii.git
synced 2024-11-22 10:39:19 +01:00
Add frodo-style menu (very much not working mind you)
This commit is contained in:
parent
4c0097d100
commit
8da0b00534
@ -11,6 +11,9 @@
|
|||||||
|
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
|
extern SDL_Surface *screen;
|
||||||
|
|
||||||
|
|
||||||
void gui_init (int argc, char **argv)
|
void gui_init (int argc, char **argv)
|
||||||
@ -28,6 +31,7 @@ void gui_notify_state (int state)
|
|||||||
|
|
||||||
int gui_update (void)
|
int gui_update (void)
|
||||||
{
|
{
|
||||||
|
printf("Al-mibb: Gui is updejted!\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,15 +92,48 @@ void gui_handle_events (void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *main_menu_messages[] = {
|
||||||
|
/*02*/ "File",
|
||||||
|
/*03*/ "^|Insert|Start",
|
||||||
|
/*04*/ "States",
|
||||||
|
/*05*/ "^|Load|Save|Delete",
|
||||||
|
/*06*/ "Keyboard",
|
||||||
|
/*07*/ "^|Type|Macro|Bind",
|
||||||
|
/*08*/ "#1-------------------------------------",
|
||||||
|
/*09*/ "Reset the C=64",
|
||||||
|
/*10*/ "Networking",
|
||||||
|
/*11*/ "Options",
|
||||||
|
/*12*/ "Advanced Options",
|
||||||
|
/*13*/ "Help",
|
||||||
|
/*15*/ "Quit",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void gui_display(int shortcut)
|
void gui_display(int shortcut)
|
||||||
{
|
{
|
||||||
|
static int is_inited = 0;
|
||||||
|
int submenus[3];
|
||||||
|
int opt;
|
||||||
|
|
||||||
|
printf("Initing gui with %p\n", screen);
|
||||||
|
printf("Al-mibb: Gui is display!\n");
|
||||||
|
|
||||||
|
if (!is_inited)
|
||||||
|
{
|
||||||
|
menu_init(screen);
|
||||||
|
is_inited = 1;
|
||||||
|
}
|
||||||
|
opt = menu_select_title("Main menu", main_menu_messages, submenus);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gui_message (const char *format,...)
|
void gui_message (const char *format,...)
|
||||||
{
|
{
|
||||||
char msg[2048];
|
char msg[2048];
|
||||||
va_list parms;
|
va_list parms;
|
||||||
|
|
||||||
|
printf("Al-mibb: Gui is al-message!\n");
|
||||||
|
|
||||||
va_start (parms,format);
|
va_start (parms,format);
|
||||||
vsprintf ( msg, format, parms);
|
vsprintf ( msg, format, parms);
|
||||||
va_end (parms);
|
va_end (parms);
|
||||||
|
@ -11,15 +11,16 @@
|
|||||||
********************************************************************/
|
********************************************************************/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#if defined(GEKKO)
|
#include "sysconfig.h"
|
||||||
#include <wiiuse/wpad.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "sysdeps.h"
|
|
||||||
#include "Display.h"
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "menutexts.h"
|
|
||||||
|
#define FULL_DISPLAY_X 640
|
||||||
|
#define FULL_DISPLAY_Y 480
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -28,7 +29,6 @@ typedef struct
|
|||||||
int sel;
|
int sel;
|
||||||
} submenu_t;
|
} submenu_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char title[256];
|
char title[256];
|
||||||
@ -47,13 +47,15 @@ typedef struct
|
|||||||
int n_entries;
|
int n_entries;
|
||||||
} menu_t;
|
} menu_t;
|
||||||
|
|
||||||
|
static SDL_Surface *real_screen;
|
||||||
|
|
||||||
#define IS_SUBMENU(p_msg) ( (p_msg)[0] == '^' )
|
#define IS_SUBMENU(p_msg) ( (p_msg)[0] == '^' )
|
||||||
#define IS_TEXT(p_msg) ( (p_msg)[0] == '#' || (p_msg)[0] == ' ' )
|
#define IS_TEXT(p_msg) ( (p_msg)[0] == '#' || (p_msg)[0] == ' ' )
|
||||||
#define IS_MARKER(p_msg) ( (p_msg)[0] == '@' )
|
#define IS_MARKER(p_msg) ( (p_msg)[0] == '@' )
|
||||||
|
|
||||||
static TTF_Font *menu_font;
|
static TTF_Font *menu_font;
|
||||||
static TTF_Font *menu_font64;
|
static TTF_Font *menu_font64;
|
||||||
#if defined(GEKKO)
|
#if defined(GEKKO_)
|
||||||
#define FONT_PATH "/apps/uae/FreeMono.ttf"
|
#define FONT_PATH "/apps/uae/FreeMono.ttf"
|
||||||
#define FONT_ALT_PATH "/apps/uae/Smaller.ttf"
|
#define FONT_ALT_PATH "/apps/uae/Smaller.ttf"
|
||||||
#else
|
#else
|
||||||
@ -115,12 +117,12 @@ int msgInfo(char *text, int duration, SDL_Rect *irc)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool msgKill(SDL_Rect *rc)
|
int msgKill(SDL_Rect *rc)
|
||||||
{
|
{
|
||||||
SDL_UpdateRect(real_screen, rc->x, rc->y, rc->w,rc->h);
|
SDL_UpdateRect(real_screen, rc->x, rc->y, rc->w,rc->h);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool msgYesNo(char *text, bool default_opt, int x, int y)
|
int msgYesNo(char *text, int default_opt, int x, int y)
|
||||||
{
|
{
|
||||||
int len = strlen(text);
|
int len = strlen(text);
|
||||||
int X, Y, wX, wY;
|
int X, Y, wX, wY;
|
||||||
@ -128,7 +130,7 @@ bool msgYesNo(char *text, bool default_opt, int x, int y)
|
|||||||
SDL_Rect rc;
|
SDL_Rect rc;
|
||||||
SDL_Rect brc;
|
SDL_Rect brc;
|
||||||
uint32_t key;
|
uint32_t key;
|
||||||
bool old;
|
int old;
|
||||||
|
|
||||||
old = default_opt;
|
old = default_opt;
|
||||||
|
|
||||||
@ -188,7 +190,7 @@ bool msgYesNo(char *text, bool default_opt, int x, int y)
|
|||||||
}
|
}
|
||||||
else if (key & KEY_ESCAPE)
|
else if (key & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (key & KEY_LEFT)
|
else if (key & KEY_LEFT)
|
||||||
{
|
{
|
||||||
@ -217,26 +219,28 @@ static int cmpstringp(const void *p1, const void *p2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Return true if name ends with ext (for filenames) */
|
/* Return true if name ends with ext (for filenames) */
|
||||||
static bool ext_matches(const char *name, const char *ext)
|
static int ext_matches(const char *name, const char *ext)
|
||||||
{
|
{
|
||||||
int len = strlen(name);
|
int len = strlen(name);
|
||||||
int ext_len = strlen(ext);
|
int ext_len = strlen(ext);
|
||||||
|
|
||||||
if (len <= ext_len)
|
if (len <= ext_len)
|
||||||
return false;
|
return 0;
|
||||||
return (strcmp(name + len - ext_len, ext) == 0);
|
return (strcmp(name + len - ext_len, ext) == 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ext_matches_list(const char *name, const char **exts)
|
static int ext_matches_list(const char *name, const char **exts)
|
||||||
{
|
{
|
||||||
for (const char **p = exts; *p; p++)
|
const char **p;
|
||||||
|
|
||||||
|
for (p = exts; *p; p++)
|
||||||
{
|
{
|
||||||
if (ext_matches(name, *p))
|
if (ext_matches(name, *p))
|
||||||
return true;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char **get_file_list(const char *base_dir)
|
static const char **get_file_list(const char *base_dir)
|
||||||
@ -588,7 +592,8 @@ static int is_submenu_title(menu_t *p_menu, int n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void menu_init(menu_t *p_menu, const char *title, TTF_Font *p_font, const char **pp_msgs,
|
static void menu_init_internal(menu_t *p_menu, const char *title,
|
||||||
|
TTF_Font *p_font, const char **pp_msgs,
|
||||||
int16_t x1, int16_t y1, int16_t x2, int16_t y2)
|
int16_t x1, int16_t y1, int16_t x2, int16_t y2)
|
||||||
{
|
{
|
||||||
int submenu;
|
int submenu;
|
||||||
@ -670,57 +675,6 @@ uint32_t menu_wait_key_press(void)
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
#if defined(GEKKO)
|
|
||||||
Uint32 remote_keys, classic_keys;
|
|
||||||
WPADData *wpad, *wpad_other;
|
|
||||||
|
|
||||||
WPAD_ScanPads();
|
|
||||||
wpad = WPAD_Data(WPAD_CHAN_0);
|
|
||||||
wpad_other = WPAD_Data(WPAD_CHAN_1);
|
|
||||||
|
|
||||||
if (!wpad && !wpad_other)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
remote_keys = wpad->btns_d | wpad_other->btns_d;
|
|
||||||
classic_keys = 0;
|
|
||||||
|
|
||||||
/* Check classic controllers as well */
|
|
||||||
if (wpad->exp.type == WPAD_EXP_CLASSIC ||
|
|
||||||
wpad_other->exp.type == WPAD_EXP_CLASSIC)
|
|
||||||
{
|
|
||||||
static bool classic_keys_changed;
|
|
||||||
static Uint32 classic_last;
|
|
||||||
|
|
||||||
classic_keys = wpad->exp.classic.btns | wpad_other->exp.classic.btns;
|
|
||||||
|
|
||||||
classic_keys_changed = classic_keys != classic_last;
|
|
||||||
classic_last = classic_keys;
|
|
||||||
|
|
||||||
/* No repeat, thank you */
|
|
||||||
if (!classic_keys_changed)
|
|
||||||
classic_keys = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (remote_keys & WPAD_BUTTON_B)
|
|
||||||
keys |= KEY_HELP;
|
|
||||||
if ( (remote_keys & WPAD_BUTTON_DOWN) || (classic_keys & CLASSIC_CTRL_BUTTON_RIGHT) )
|
|
||||||
keys |= KEY_RIGHT;
|
|
||||||
if ( (remote_keys & WPAD_BUTTON_UP) || (classic_keys & CLASSIC_CTRL_BUTTON_LEFT) )
|
|
||||||
keys |= KEY_LEFT;
|
|
||||||
if ( (remote_keys & WPAD_BUTTON_LEFT) || (classic_keys & CLASSIC_CTRL_BUTTON_DOWN) )
|
|
||||||
keys |= KEY_DOWN;
|
|
||||||
if ( (remote_keys & WPAD_BUTTON_RIGHT) || (classic_keys & CLASSIC_CTRL_BUTTON_UP) )
|
|
||||||
keys |= KEY_UP;
|
|
||||||
if ( (remote_keys & WPAD_BUTTON_PLUS) || (classic_keys & CLASSIC_CTRL_BUTTON_PLUS) )
|
|
||||||
keys |= KEY_PAGEUP;
|
|
||||||
if ( (remote_keys & WPAD_BUTTON_MINUS) || (classic_keys & CLASSIC_CTRL_BUTTON_MINUS) )
|
|
||||||
keys |= KEY_PAGEDOWN;
|
|
||||||
if ( (remote_keys & (WPAD_BUTTON_A | WPAD_BUTTON_2) ) || (classic_keys & (CLASSIC_CTRL_BUTTON_A | CLASSIC_CTRL_BUTTON_X)) )
|
|
||||||
keys |= KEY_SELECT;
|
|
||||||
if ( (remote_keys & (WPAD_BUTTON_1 | WPAD_BUTTON_HOME) ) || (classic_keys & (CLASSIC_CTRL_BUTTON_B | CLASSIC_CTRL_BUTTON_Y)) )
|
|
||||||
keys |= KEY_ESCAPE;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
if (SDL_PollEvent(&ev))
|
if (SDL_PollEvent(&ev))
|
||||||
{
|
{
|
||||||
switch(ev.type)
|
switch(ev.type)
|
||||||
@ -783,12 +737,13 @@ extern char curdir[256];
|
|||||||
|
|
||||||
static int menu_select_internal(SDL_Surface *screen,
|
static int menu_select_internal(SDL_Surface *screen,
|
||||||
menu_t *p_menu, int *p_submenus, int sel,
|
menu_t *p_menu, int *p_submenus, int sel,
|
||||||
void (*select_next_cb)(menu_t *p, void *data) = NULL,
|
void (*select_next_cb)(menu_t *p, void *data),
|
||||||
void *select_next_cb_data = NULL)
|
void *select_next_cb_data)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
int i;
|
||||||
|
|
||||||
for (int i = 0; i < p_menu->n_submenus; i++)
|
for (i = 0; i < p_menu->n_submenus; i++)
|
||||||
p_menu->p_submenus[i].sel = p_submenus[i];
|
p_menu->p_submenus[i].sel = p_submenus[i];
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
@ -840,21 +795,21 @@ static int menu_select_internal(SDL_Surface *screen,
|
|||||||
|
|
||||||
int menu_select_sized(const char *title, const char **msgs, int *submenus, int sel,
|
int menu_select_sized(const char *title, const char **msgs, int *submenus, int sel,
|
||||||
int x, int y, int x2, int y2,
|
int x, int y, int x2, int y2,
|
||||||
void (*select_next_cb)(menu_t *p, void *data) = NULL,
|
void (*select_next_cb)(menu_t *p, void *data),
|
||||||
void *select_next_cb_data = NULL)
|
void *select_next_cb_data)
|
||||||
|
|
||||||
{
|
{
|
||||||
menu_t menu;
|
menu_t menu;
|
||||||
int out;
|
int out;
|
||||||
bool info;
|
int info;
|
||||||
|
|
||||||
if (!strcmp(title, "Folder") || !strcmp(title, "Single File") ||
|
if (!strcmp(title, "Folder") || !strcmp(title, "Single File") ||
|
||||||
!strcmp(title, "C-64 Disc") || !strcmp(title, "C-64 Tape") || sel < 0)
|
!strcmp(title, "C-64 Disc") || !strcmp(title, "C-64 Tape") || sel < 0)
|
||||||
info = false;
|
info = 0;
|
||||||
else
|
else
|
||||||
info = true;
|
info = 1;
|
||||||
|
|
||||||
menu_init(&menu, title, menu_font, msgs,
|
menu_init_internal(&menu, title, menu_font, msgs,
|
||||||
x, y, x2, y2);
|
x, y, x2, y2);
|
||||||
|
|
||||||
if (sel >= 0)
|
if (sel >= 0)
|
||||||
@ -867,94 +822,16 @@ int menu_select_sized(const char *title, const char **msgs, int *submenus, int s
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
int menu_select(const char *title, const char **msgs, int *submenus)
|
int menu_select_title(const char *title, const char **msgs, int *submenus)
|
||||||
{
|
{
|
||||||
return menu_select_sized(title, msgs, submenus, 0,
|
return menu_select_sized(title, msgs, submenus, 0,
|
||||||
32, 32, FULL_DISPLAY_X-32, FULL_DISPLAY_Y-64);
|
32, 32, FULL_DISPLAY_X-32, FULL_DISPLAY_Y-64,
|
||||||
|
NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int menu_select(const char **msgs, int *submenus)
|
int menu_select(const char **msgs, int *submenus)
|
||||||
{
|
{
|
||||||
return menu_select("", msgs, submenus);
|
return menu_select_title("", msgs, submenus);
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" const char **DirD64(const char *FileName);
|
|
||||||
|
|
||||||
static void d64_list_cb(menu_t *p, void *data)
|
|
||||||
{
|
|
||||||
const char *dp = (const char*)data;
|
|
||||||
const char *exts[] = {".d64", ".D64", NULL};
|
|
||||||
const char *name = p->pp_msgs[p->cur_sel];
|
|
||||||
SDL_Rect r = {FULL_DISPLAY_X / 2, 32,
|
|
||||||
FULL_DISPLAY_X / 2 - 32, FULL_DISPLAY_Y - 64};
|
|
||||||
|
|
||||||
SDL_FillRect(real_screen, &r, SDL_MapRGB(real_screen->format, 0x00, 0x90, 0x90));
|
|
||||||
if (ext_matches_list(name, exts))
|
|
||||||
{
|
|
||||||
char buf[255];
|
|
||||||
const char **dir;
|
|
||||||
menu_t menu;
|
|
||||||
|
|
||||||
snprintf(buf, 255, "%s/%s", dp, name);
|
|
||||||
dir = DirD64(buf);
|
|
||||||
if (!dir)
|
|
||||||
return;
|
|
||||||
|
|
||||||
menu_init(&menu, "D64 contents", menu_font, dir,
|
|
||||||
FULL_DISPLAY_X / 2, 32,
|
|
||||||
FULL_DISPLAY_X / 2 - 32, FULL_DISPLAY_Y - 64);
|
|
||||||
menu_draw(real_screen, &menu, 0);
|
|
||||||
menu_fini(&menu);
|
|
||||||
|
|
||||||
/* Cleanup dir list */
|
|
||||||
for ( int i = 0; dir[i]; i++ )
|
|
||||||
free((void*)dir[i]);
|
|
||||||
free(dir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *get_d64_file(const char *name)
|
|
||||||
{
|
|
||||||
const char **dir;
|
|
||||||
char *out = NULL;
|
|
||||||
|
|
||||||
dir = DirD64(name);
|
|
||||||
if (!dir)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
int which = menu_select("Select D64 file", dir, NULL);
|
|
||||||
|
|
||||||
if (which >= 0)
|
|
||||||
{
|
|
||||||
char *p = (char*)dir[which];
|
|
||||||
|
|
||||||
for (int i = 0; i < strlen(p); i++)
|
|
||||||
{
|
|
||||||
if (*p == '\"')
|
|
||||||
break;
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
p++;
|
|
||||||
for (int i = 0; i < strlen(p); i++)
|
|
||||||
{
|
|
||||||
if (p[i] == '\"')
|
|
||||||
{
|
|
||||||
p[i] = '\0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Copy and uppercase */
|
|
||||||
out = strdup(p);
|
|
||||||
for (int i = 0; i < strlen(out); i++)
|
|
||||||
out[i] = toupper(out[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cleanup dir list */
|
|
||||||
for ( int i = 0; dir[i]; i++ )
|
|
||||||
free((void*)dir[i]);
|
|
||||||
free(dir);
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *menu_select_file_internal(const char *dir_path,
|
static const char *menu_select_file_internal(const char *dir_path,
|
||||||
@ -964,20 +841,21 @@ static const char *menu_select_file_internal(const char *dir_path,
|
|||||||
char *sel;
|
char *sel;
|
||||||
char *out;
|
char *out;
|
||||||
int opt;
|
int opt;
|
||||||
|
int i;
|
||||||
|
|
||||||
if (file_list == NULL)
|
if (file_list == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
opt = menu_select_sized("Select file", file_list, NULL, 0,
|
opt = menu_select_sized("Select file", file_list, NULL, 0,
|
||||||
x, y, x2, y2,
|
x, y, x2, y2,
|
||||||
d64_list_cb, (void*)dir_path);
|
NULL, NULL);
|
||||||
|
|
||||||
if (opt < 0)
|
if (opt < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
sel = strdup(file_list[opt]);
|
sel = strdup(file_list[opt]);
|
||||||
|
|
||||||
/* Cleanup everything - file_list is NULL-terminated */
|
/* Cleanup everything - file_list is NULL-terminated */
|
||||||
for ( int i = 0; file_list[i]; i++ )
|
for ( i = 0; file_list[i]; i++ )
|
||||||
free((void*)file_list[i]);
|
free((void*)file_list[i]);
|
||||||
free(file_list);
|
free(file_list);
|
||||||
|
|
||||||
@ -989,7 +867,6 @@ static const char *menu_select_file_internal(const char *dir_path,
|
|||||||
char buf[255];
|
char buf[255];
|
||||||
int len = strlen(sel);
|
int len = strlen(sel);
|
||||||
int s;
|
int s;
|
||||||
const char *p;
|
|
||||||
|
|
||||||
/* Remove trailing ] */
|
/* Remove trailing ] */
|
||||||
sel[len-1] = '\0';
|
sel[len-1] = '\0';
|
||||||
@ -1015,12 +892,9 @@ const char *menu_select_file_start(const char *dir_path, const char **d64_name)
|
|||||||
{
|
{
|
||||||
const char *file = menu_select_file_internal(dir_path,
|
const char *file = menu_select_file_internal(dir_path,
|
||||||
32, 32, FULL_DISPLAY_X/2, FULL_DISPLAY_Y - 32);
|
32, 32, FULL_DISPLAY_X/2, FULL_DISPLAY_Y - 32);
|
||||||
const char *exts[] = {".d64", ".D64", NULL};
|
|
||||||
|
|
||||||
if (!file)
|
if (!file)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (ext_matches_list(file, exts))
|
|
||||||
*d64_name = get_d64_file(file);
|
|
||||||
|
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
@ -1057,17 +931,19 @@ static TTF_Font *read_font(const char *path)
|
|||||||
if (!out)
|
if (!out)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Unable to open font %s\n", path);
|
fprintf(stderr, "Unable to open font %s\n", path);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_init()
|
void menu_init(SDL_Surface *screen)
|
||||||
{
|
{
|
||||||
Uint8 *data64 = (Uint8*)malloc(1 * 1024*1024);
|
TTF_Init();
|
||||||
|
|
||||||
menu_font = read_font(FONT_PATH);
|
menu_font = read_font(FONT_PATH);
|
||||||
menu_font64 = read_font(FONT_ALT_PATH);
|
menu_font64 = read_font(FONT_ALT_PATH);
|
||||||
|
|
||||||
|
real_screen = screen;
|
||||||
}
|
}
|
@ -30,21 +30,18 @@ void menu_print_font(SDL_Surface *screen, int r, int g, int b, int x, int y, con
|
|||||||
void menu_print_font64(SDL_Surface *screen, int r, int g, int b, int x, int y, const char *msg);
|
void menu_print_font64(SDL_Surface *screen, int r, int g, int b, int x, int y, const char *msg);
|
||||||
|
|
||||||
/* Various option selects */
|
/* Various option selects */
|
||||||
int menu_select(const char *title, const char **pp_msgs, int *p_submenus);
|
int menu_select_title(const char *title, const char **pp_msgs, int *p_submenus);
|
||||||
int menu_select(const char **pp_msgs, int *p_submenus);
|
int menu_select(const char **pp_msgs, int *p_submenus);
|
||||||
int menu_select_sized(char *title, const char **msgs, int *submenus,
|
|
||||||
int x, int y, int w, int h);
|
|
||||||
const char *menu_select_file(const char *dir_path);
|
const char *menu_select_file(const char *dir_path);
|
||||||
const char *menu_select_file_start(const char *dir_path, const char **d64_name);
|
const char *menu_select_file_start(const char *dir_path, const char **d64_name);
|
||||||
|
|
||||||
uint32_t menu_wait_key_press(void);
|
uint32_t menu_wait_key_press(void);
|
||||||
|
|
||||||
extern bool msgKill(SDL_Rect *rc);
|
extern int msgKill(SDL_Rect *rc);
|
||||||
extern int msgInfo(char *text, int duration, SDL_Rect *rc);
|
extern int msgInfo(char *text, int duration, SDL_Rect *rc);
|
||||||
|
|
||||||
extern bool msgYesNo(char *text, bool def,int x, int y);
|
extern int msgYesNo(char *text, int def,int x, int y);
|
||||||
|
|
||||||
|
void menu_init(SDL_Surface *screen);
|
||||||
void menu_init();
|
|
||||||
|
|
||||||
#endif /* !__MENU_H__ */
|
#endif /* !__MENU_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user