#ifndef __GUI_HH__ #define __GUI_HH__ #include #include #include "menu.hh" #include "font.hh" #include "gui_view.hh" /* Frodo stuff */ #include #include #include #if defined(GEKKO) #define THEME_ROOT_PATH "/frodo/themes" #define METADATA_ROOT_PATH "/frodo/metadata" #define GAME_ROOT_PATH "/frodo/images" #define GAME_ROOT_PATH_SD "sd:/" #define GAME_ROOT_PATH_USB "usb:/" #define GAME_ROOT_PATH_SMB "smb:/" #define TMP_ROOT_PATH "/frodo/tmp" #define SAVE_GAME_ROOT_PATH "/frodo/saves" #else #define THEME_ROOT_PATH "themes" #define METADATA_ROOT_PATH "metadata" #define GAME_ROOT_PATH "images" #define TMP_ROOT_PATH "tmp" #define SAVE_GAME_ROOT_PATH "saves" #endif class DialogueBox; class StatusBar; class NetworkServerMessages; class GameInfo; class MainView; class BindKeysView; class DiscView; class SaveGameView; class OptionsView; class NetworkView; class ThemeView; class GameInfoView; class NetworkUserView; class NetworkRegionView; class VirtualKeyboard; class Gui { public: Gui(); ~Gui(); bool setTheme(const char *path); void activate(); void runLogic(void); void pushJoystickEvent(event_t ev); void pushEvent(event_t ev); void pushEvent(SDL_Event *ev); void draw(SDL_Surface *where); void pushView(GuiView *view); void pushVirtualKeyboard(VirtualKeyboard *kbd); void pushDialogueBox(DialogueBox *dlg); DialogueBox *popDialogueBox(); GuiView *popView(); GuiView *peekView() { if (!this->views) return NULL; return this->views[this->n_views-1]; } void updateGameInfo(GameInfo *gi); void saveGameInfo(const char *base_path, const char *name); void exitMenu(); /* These are private, keep off! */ const char *getThemePath(const char *dir, const char *what); SDL_Surface *loadThemeImage(const char *dir, const char *what); Font *loadThemeFont(const char *dir, const char *what, int size); bool is_active; Menu *focus; /* Where the focus goes */ Menu *main_menu; SDL_Surface *screenshot; SDL_Surface *background; SDL_Surface *main_menu_bg; SDL_Surface *status_bar_bg; SDL_Surface *infobox; SDL_Surface *bind_key_box; SDL_Surface *network_message_box; SDL_Surface *keyboard; SDL_Surface *dialogue_bg; SDL_Surface *disc_info; SDL_Surface *network_info; SDL_Surface *bg_left, *bg_right, *bg_middle, *bg_submenu_left, *bg_submenu_right, *bg_submenu_middle; SDL_Surface *highlighted_key; SDL_Surface *selected_key; Font *default_font; Font *small_font; TimerController *controller; /* Handled specially */ VirtualKeyboard *kbd; DialogueBox *dlg; StatusBar *status_bar; NetworkServerMessages *server_msgs; MainView *mv; DiscView *dv; SaveGameView *sgv; OptionsView *ov; NetworkView *nv; GameInfoView *giv; ThemeView *tv; BindKeysView *bkv; NetworkUserView *nuv; NetworkRegionView *nrv; GuiView **views; int n_views; const char *metadata_base_path; const char *theme_base_path; const char *game_base_path; const char *game_base_path_sd; const char *game_base_path_usb; const char *game_base_path_smb; const char *tmp_path; const char *save_game_path; GameInfo *cur_gameInfo; bool gameInfoChanged; /* New preferences */ Prefs cur_prefs; Prefs *np; /* Singleton */ static void init(); static Gui *gui; }; #endif /* GUI_HH */