terom@185: terom@185: #include "Engine.hh" terom@185: #include "SinglePlayer.hh" terom@185: terom@185: #include terom@185: terom@233: Engine::Engine (const std::string resource_xml_path) : terom@233: is_running(true), resources(resource_xml_path) terom@233: { terom@233: terom@185: } terom@185: terom@185: void Engine::setupGraphics (void) { terom@185: // create the graphics terom@185: graphics = new Graphics(*this, game_state); terom@185: } terom@185: terom@185: void Engine::setupNetworkServer (const std::string &listen_port) { terom@185: // create the server terom@185: net_server = new NetworkServer(game_state, listen_port); terom@185: } terom@185: terom@185: void Engine::setupNetworkClient (const std::string &connect_host, const std::string &connect_port) { terom@185: // connect_to terom@378: NetworkAddress connect_addr(connect_host, connect_port); terom@185: terom@185: // create the client terom@332: net_client = new NetworkClient(*this, game_state, connect_addr); terom@185: } terom@185: terom@185: void Engine::setupSinglePlayer (void) { terom@185: // create player directly terom@185: LocalPlayer* lp = new SinglePlayer(game_state); terom@185: terom@185: // add to gamestate terom@274: game_state.setLocalPlayer(lp); terom@185: } terom@185: terom@185: void Engine::stop (void) { terom@185: is_running = false; terom@185: } terom@185: terom@185: void Engine::run (void) { terom@185: while (is_running) { terom@185: // this does.... magical things terom@185: CL_System::keep_alive(); terom@185: terom@185: // if I can't find some better way to do this in ClanLib by next thursday, then it f*%!ing sucks terom@185: // ideally, we should be able to have a main loop that does timed waits on I/O, fufilling some set of timers terom@185: // but as far as I can tell, ClanLib doesn't have anything like that terom@185: CL_System::sleep(10); terom@185: } terom@185: } terom@185: terom@233: CL_ResourceManager* Engine::getResourceManager (void) { terom@233: return &resources; terom@218: } terom@218: terom@185: Logger Engine::log (enum LogLevel level, const char *type) { terom@185: return Logger(level <= WARN ? std::cerr : std::cout, level, type); terom@185: } terom@185: