#include #include #include #include #include #include #include #include #include class Status; struct ILoDQuadManager; struct ISkyBox; class IoScriptingManager; namespace UI { class Console; class MainGUI; } class Water; struct RenderContext; class Camera; class Game: public IGame, public ActorStage, public SigObject { public: static Game * the_game; Game(int argc, const char **argv); ~Game(); void run(); virtual void renderScene(SceneRenderPass *) ; virtual const RenderContext *getCurrentContext(); virtual Ptr createRenderPass(Ptr view_head); virtual Ptr getTexMan(); virtual JRenderer *getRenderer(); virtual Ptr getEventRemapper(); virtual Ptr getModelMan(); virtual Ptr getConfig(); virtual Ptr getCamera(); virtual UI::Surface getScreenSurface(); virtual Ptr getClock(); virtual Ptr getTerrain(); virtual Ptr getEnvironment(); virtual Ptr getWater(); virtual Ptr getFontMan(); virtual Ptr getSoundMan(); virtual Ptr getCollisionMan(); virtual Ptr getIoScriptingManager(); virtual void infoMessage(const char * msg, const Vector color); virtual double getTimeDelta(); virtual bool debugMode(); virtual Ptr getDebugData(); virtual Ptr getCurrentView(); virtual void setCurrentView(Ptr); virtual Ptr getCurrentlyControlledActor(); virtual void setCurrentlyControlledActor(Ptr); virtual void restartSimulation(); virtual void clearScreen(); virtual void endGame(); virtual bool isInteractive(); virtual void setInteractive(bool); private: void startupSystem(Status &); void teardownSystem(Status &); void startupSimulation(Status &); void teardownSimulation(Status &); void initControls(); void doEvents(); void setupRenderer(); void updateSimulation(); void updateView(); void updateSound(); void setupMainRender(); void updateIoScripting(); void doFrame(); void mainMenu(); void actionTriggered(const char *); public: void togglePauseMode(); void toggleDebugMode(); private: void toggleFollowMode(); void accelerateSpeed(); void decelerateSpeed(); void setView(int); void externalView(); void nextTarget(); void toggleControlMode(); private: int argc; const char **argv; bool game_done; bool debug_mode; bool is_interactive; Ptr debug_data; SDL_Surface *surface; JOpenGLRenderer *renderer; const RenderContext *render_context; Ptr texman; Ptr event_remapper; Ptr event_sheet; Ptr current_view; Ptr previous_view; bool view_is_external; Ptr current_actor; Ptr camera; Ptr clock; Ptr config; Ptr fontman; Ptr soundman; Ptr modelman; Ptr collisionman; Ptr quadman; Ptr skybox; Ptr environment; Ptr water; Ptr io_scripting_manager; Ptr console; Ptr renderpass_main; Ptr renderpass_overlay; Ptr main_gui; };