1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
#ifndef SPRING_APP
#define SPRING_APP
#include <string>
#include <boost/cstdint.hpp>
class BaseCmd;
class CGameController;
union SDL_Event;
/**
* @brief Spring App
*
* Main Spring application class launched by main()
*/
class SpringApp
{
public:
SpringApp();
~SpringApp();
int Run(int argc, char *argv[]); //!< Run game loop
protected:
bool Initialize(); //!< Initialize app
void ParseCmdLine(); //!< Parse command line
void Startup(); //!< Parses startup data (script etc.) and starts SelectMenu or PreGame
bool InitWindow(const char* title); //!< Initializes window
void InitOpenGL(); //!< Initializes OpenGL
void UpdateOldConfigs(); //!< Forces an update to new config defaults
void LoadFonts(); //!< Initialize glFonts (font & smallFont)
bool SetSDLVideoMode(); //!< Sets SDL video mode
void Shutdown(); //!< Shuts down application
int Update(); //!< Run simulation and draw
#if defined(USE_GML) && GML_ENABLE_SIM
int Sim(); //!< Simulation loop
static void Simcb(void *c) {((SpringApp *)c)->Sim();}
volatile int gmlKeepRunning;
#endif
void UpdateSDLKeys(); //!< Update SDL key array
bool GetDisplayGeometry();
void SetupViewportGeometry();
void RestoreWindowPosition();
void SaveWindowPosition();
/**
* @brief command line
*
* Pointer to instance of commandline parser
*/
BaseCmd *cmdline;
/**
* @brief screen width
*
* Game screen width
*/
int screenWidth;
/**
* @brief screen height
*
* Game screen height
*/
int screenHeight;
/**
* @brief window position - X
*
* Game window position from the left of the screen (if not fullscreen)
*/
int windowPosX;
/**
* @brief window position - Y
*
* Game window position from the top of the screen (if not fullscreen)
*/
int windowPosY;
/**
* @brief window state
*
* Game window state (0=normal,1=maximized,2=minimized)
*/
int windowState;
/**
* @brief FSAA
*
* Level of fullscreen anti-aliasing
*/
bool FSAA;
/**
* @brief depthBufferBits
*
* number of Depthbuffer bits
*/
bool depthBufferBits;
/**
* @brief last required draw
*
* sim frame after which the last required draw was conducted
*/
int lastRequiredDraw;
private:
bool MainEventHandler(const SDL_Event& ev);
};
/**
* @brief current active controller
*
* Pointer to the currently active controller
* (could be a PreGame, could be a Game, etc)
*/
extern CGameController* activeController;
/**
* @brief global quit
*
* Global boolean indicating whether the user
* wants to quit
*/
extern bool globalQuit;
/**
* @brief keys
*
* Array of possible keys, and which are being pressed
*/
extern boost::uint8_t *keys;
/**
* @brief currentUnicode
*
* Unicode character for the current KeyPressed or KeyReleased
*/
extern boost::uint16_t currentUnicode;
/**
* @brief fullscreen
*
* Whether or not the game is running in fullscreen
*/
extern bool fullscreen;
#endif
|