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