src/Engine.cc
branchnew_graphics
changeset 419 9cd4e54693b6
parent 418 194bc810a570
child 423 947ab54de4b7
equal deleted inserted replaced
418:194bc810a570 419:9cd4e54693b6
    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));
    70 }
    67 }
    71         
    68         
    72 void Engine::startGameView (LocalPlayer *player) {
    69 void Engine::startGameView (LocalPlayer *player) {
    73 
    70 
    74 #if GRAPHICS_ENABLED    
    71 #if GRAPHICS_ENABLED    
    75     assert(graphics);
    72     assert(graphics && !game_view);
    76 
    73 
    77     graphics->displayGameView(*game_state, player);
    74     game_view = graphics->displayGameView(*game_state, player);
    78 
    75 
    79 #else
    76 #else
    80     (void) player;
    77     (void) player;
    81 
    78 
    82     throw Error("No Graphics support available");
    79     throw Error("No Graphics support available");
   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 }