24 */ |
24 */ |
25 LogLevel Engine::log_level = DEBUG; |
25 LogLevel Engine::log_level = DEBUG; |
26 |
26 |
27 Engine::Engine (const EngineConfig &config) : |
27 Engine::Engine (const EngineConfig &config) : |
28 terrain(NULL), game_state(NULL), graphics(NULL), net_server(NULL), net_client_connect(NULL), |
28 terrain(NULL), game_state(NULL), graphics(NULL), net_server(NULL), net_client_connect(NULL), |
|
29 game_view(NULL), |
29 is_running(true), resources(config.resource_path) |
30 is_running(true), resources(config.resource_path) |
30 { |
31 { |
31 // update global log_level |
32 // update global log_level |
32 Engine::log_level = config.log_level; |
33 Engine::log_level = config.log_level; |
33 } |
34 } |
34 |
35 |
35 GameState& Engine::setupGame (Terrain *terrain) { |
36 void Engine::setupGame (Terrain *terrain) { |
36 // ensure this isn't called in inappropriate ways |
37 // ensure this isn't called in inappropriate ways |
37 assert(!net_server); |
38 assert(!net_server); |
38 |
39 |
39 // remember the terrain |
40 // remember the terrain |
40 this->terrain = terrain; |
41 this->terrain = terrain; |
41 |
42 |
42 // create the GameState |
43 // create the GameState |
43 game_state = new GameState(*terrain); |
44 game_state = new GameState(*terrain); |
44 |
|
45 // XXX: NetworkClient + GameView? |
|
46 |
|
47 return *game_state; |
|
48 } |
45 } |
49 |
46 |
50 void Engine::setupGame (const TerrainConfig &config) { |
47 void Engine::setupGame (const TerrainConfig &config) { |
51 // proxy off to setupGame(Terrain *) |
48 // proxy off to setupGame(Terrain *) |
52 setupGame(new Terrain(config)); |
49 setupGame(new Terrain(config)); |
136 game_state->setLocalPlayer(lp); |
133 game_state->setLocalPlayer(lp); |
137 |
134 |
138 // put graphics into GameView mode |
135 // put graphics into GameView mode |
139 if (graphics) |
136 if (graphics) |
140 startGameView(lp); |
137 startGameView(lp); |
141 |
138 } |
|
139 |
|
140 |
|
141 GameState& Engine::onNetworkClientConnected (Terrain *terrain) { |
|
142 // setup the game |
|
143 setupGame(terrain); |
|
144 |
|
145 // start the GameView, but no LocalPlayer yet |
|
146 startGameView(NULL); |
|
147 |
|
148 // return GameState |
|
149 return *game_state; |
|
150 } |
|
151 |
|
152 void Engine::onNetworkClientPlayer (LocalPlayer *player) { |
|
153 assert(game_view); |
|
154 |
|
155 // set the GameView's player |
|
156 game_view->setPlayer(player); |
142 } |
157 } |
143 |
158 |
144 void Engine::stop (void) { |
159 void Engine::stop (void) { |
145 is_running = false; |
160 is_running = false; |
146 } |
161 } |