/* core/application.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2. */ #ifndef __INCLUDED_CORE_APPLICATION_H__ #define __INCLUDED_CORE_APPLICATION_H__ #include "core/commandbuffer.h" #include "core/netserver.h" #include "core/netconnection.h" #include "core/gameinterface.h" namespace core { /// core interface for the client and server Application classes class Application { public: /// default constructor Application(); /// default destructor virtual ~Application(); /// initialize the application virtual void init(); /// shutdown the application virtual void shutdown(); /// a pointer to the current application instance static Application *instance(); /// time the has been connected, in seconds float time() const; /// preloaded game object GameInterface *gameinterface_preload; /// true if the core is connected to a game module or a remote server bool connected() const; /// network server instance NetServer *netserver; /// network client to server connection NetConnection netconnection; /// global application object static Application *application_instance; /// quit the application without proper shutdown virtual void quit(int status); /// start the server or connect to remote host void connect(std::string const &host); /// disconnect from the game module void disconnect(); protected: /// clear all game related objects void clear(); /// run a core frame virtual void frame(float seconds); private: /// time the core has been running float game_time; }; /// pointer to the current ApplicationInterface Application *application(); } // namespace core #endif // __INCLUDED_CORE_APPLICATION_H__