diff options
author | Stijn Buys <ingar@osirion.org> | 2008-02-05 00:10:02 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-02-05 00:10:02 +0000 |
commit | 95ca0e469ef856c0182bb0da411e4417391e3780 (patch) | |
tree | a07db9b9d726d175d8305dc3cc5520b8a70f7a73 /src/server/server.cc | |
parent | cf61370df80de6dc659dbd9b803c973b300c1b4c (diff) |
renamed client and server application objects
cleaned up namespaces
Diffstat (limited to 'src/server/server.cc')
-rw-r--r-- | src/server/server.cc | 97 |
1 files changed, 92 insertions, 5 deletions
diff --git a/src/server/server.cc b/src/server/server.cc index fc37aa6..b6b6515 100644 --- a/src/server/server.cc +++ b/src/server/server.cc @@ -4,17 +4,104 @@ the terms and conditions of the GNU General Public License version 2 */ -// project headers - -#include "server/application.h" #include "server/console.h" +#include "server/server.h" +#include "server/timer.h" +#include "core/core.h" #include "game/game.h" namespace server { -Application application; -Console console; +//--- private definition ------------------------------------------ + +/// server Application implementation +class Server : public core::ApplicationInterface { +public: + /// initialize the server Application + virtual void init(); + + /// run the server Application + virtual void run(); + + /// shutdown the server Application + virtual void shutdown(); + + /// quit the server Application + virtual void quit(int status); +}; + +Server app; game::Game *game; +//--- public ------------------------------------------------------ + +/// the server main loop +void main(int count, char **arguments) +{ + std::cout << "The Osirion Project " << VERSION << std::endl; + for (int i =0; i < count; i++) + std::cout << arguments[i] << " "; + std::cout << std::endl; + + app.init(); + app.run(); + app.shutdown(); +} + +//--- private ----------------------------------------------------- + +void Server::init() +{ + // FIXME core should be able to load game.so - + // force initialization of the game object + server::game = new game::Game(); + + con_print << "Initializing server..." << std::endl; + + core::ApplicationInterface::init(); + + console::init(); + + core::ApplicationInterface::connect(); } +void Server::run() +{ + const float server_framerate = 1.0f / 20.0f; + server::Timer timer; + + timer.mark(); + + while(true) { + float elapsed = timer.elapsed(); + + frame(elapsed); + + sys::sleep(server_framerate - elapsed); + timer.mark(); + } + +} + +void Server::shutdown() +{ + con_debug << "Shutting down server..." << std::endl; + + console::shutdown(); + + core::ApplicationInterface::shutdown(); + + quit(0); +} + +void Server::quit(int status) +{ + // FIXME core should be able to unload game.so + delete server::game; + + core::ApplicationInterface::quit(status); +} + + +} // namespace server + |