diff options
Diffstat (limited to 'src/core/applicationinterface.cc')
-rw-r--r-- | src/core/applicationinterface.cc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/core/applicationinterface.cc b/src/core/applicationinterface.cc new file mode 100644 index 0000000..9ef5c16 --- /dev/null +++ b/src/core/applicationinterface.cc @@ -0,0 +1,68 @@ +/* + core/applicationinterface.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#include "core/core.h" +#include "filesystem/filesystem.h" +#include "common/common.h" + +#include <iostream> + +#include <stdlib.h> + +namespace core { + +ApplicationInterface *ApplicationInterface::applicationinterface_instance = 0; + +ApplicationInterface::ApplicationInterface() { + if (applicationinterface_instance) { + std::cerr << "multiple singleton instances: core::ApplicationInterface" << std::endl; + exit(2); + } + applicationinterface_instance = this; +} + +ApplicationInterface::~ApplicationInterface() +{ + applicationinterface_instance = 0; +} + +ApplicationInterface *ApplicationInterface::instance() +{ + return applicationinterface_instance; +} + +void ApplicationInterface::init() +{ + filesystem::init(); + + con_debug << "Initializing core..." << std::endl; + + if (game()) + game()->init(); + else + con_warn << "No game module found!" << std::endl; + +} + +void ApplicationInterface::shutdown() +{ + con_debug << "Shutting down core..." << std::endl; + + if (game()) + game()->shutdown(); + else + con_warn << "No game module found!" << std::endl; + + filesystem::shutdown(); +} + +void ApplicationInterface::frame(float seconds) +{ + if (game()) + game()->frame(seconds); +} + +} |