frodo-wii/Src/gui/gui.hh

168 lines
3.2 KiB
C++
Raw Normal View History

#ifndef __GUI_HH__
#define __GUI_HH__
#include <SDL.h>
#include <timer.hh>
#include "menu.hh"
#include "font.hh"
#include "gui_view.hh"
/* Frodo stuff */
#include <sysdeps.h>
#include <main.h>
#include <Prefs.h>
#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;
2010-02-28 08:59:36 +01:00
class NetworkServerMessages;
class GameInfo;
class MainView;
class BindKeysView;
class DiscView;
class SaveGameView;
class OptionsView;
class NetworkView;
class ThemeView;
class GameInfoView;
2010-02-11 19:57:08 +01:00
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);
2010-02-24 21:19:37 +01:00
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;
2010-03-15 07:11:31 +01:00
SDL_Surface *screenshot;
SDL_Surface *background;
SDL_Surface *main_menu_bg;
SDL_Surface *status_bar_bg;
SDL_Surface *infobox;
2010-02-28 09:25:59 +01:00
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;
2010-02-28 08:59:36 +01:00
NetworkServerMessages *server_msgs;
MainView *mv;
DiscView *dv;
SaveGameView *sgv;
OptionsView *ov;
NetworkView *nv;
GameInfoView *giv;
ThemeView *tv;
BindKeysView *bkv;
2010-02-11 19:57:08 +01:00
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;
2011-08-08 13:21:52 +02:00
const char *game_base_path_smb;
const char *tmp_path;
const char *save_game_path;
GameInfo *cur_gameInfo;
bool gameInfoChanged;
/* New preferences */
2010-01-25 15:25:19 +01:00
Prefs cur_prefs;
Prefs *np;
/* Singleton */
static void init();
static Gui *gui;
};
#endif /* GUI_HH */