Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-05 00:10:02 +0000
committerStijn Buys <ingar@osirion.org>2008-02-05 00:10:02 +0000
commit95ca0e469ef856c0182bb0da411e4417391e3780 (patch)
treea07db9b9d726d175d8305dc3cc5520b8a70f7a73 /src/server/server.cc
parentcf61370df80de6dc659dbd9b803c973b300c1b4c (diff)
renamed client and server application objects
cleaned up namespaces
Diffstat (limited to 'src/server/server.cc')
-rw-r--r--src/server/server.cc97
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
+