/[enigma]/enigma/src/game.cc
ViewVC logotype

Diff of /enigma/src/game.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.40 by reallysoft, Sat Aug 16 23:56:20 2003 UTC revision 1.41 by reallysoft, Sun Aug 17 22:43:48 2003 UTC
# Line 310  void Game::change_state(State newstate) Line 310  void Game::change_state(State newstate)
310              return;             // do not enter state              return;             // do not enter state
311          break;          break;
312      case PLAYERDEAD:      case PLAYERDEAD:
313          actor_dead_dtime=0;          actor_dead_dtime = 0;
314  //        display::ShowText("You lost", display::TEXT_STATIC);  //        display::ShowText("You lost", display::TEXT_STATIC);
315          break;          break;
316    
317        case LEVELINIT:
318            if (state == LEVELINFO) break; // inventory already updated in state LEVELINFO
319            // fall-through
320        case LEVELINFO:
321            player::GetInventory(player::CurrentPlayer())->redraw(); // draw inventory
322            break;
323    
324      default: break;      default: break;
325      }      }
326    
# Line 355  Game::tick(double dtime) Line 363  Game::tick(double dtime)
363      switch (state) {      switch (state) {
364      case STARTGAME:      case STARTGAME:
365      case RESTARTGAME:      case RESTARTGAME:
366          player::NewGame(2, level_pack->needs_twoplayers());     // two virtual players          player::NewGame(2, level_pack->needs_twoplayers()); // two virtual players
367          change_state(load_level(icurrent_level)          change_state(load_level(icurrent_level)
368                       ? (state == STARTGAME ? LEVELINFO : LEVELINIT)                       ? (state == STARTGAME ? LEVELINFO : LEVELINIT)
369                       : ABORT);                       : ABORT);
370          break;          break;
371    
372        case LEVELINFO: {
373            // show level information (name, author, etc.)
374            string disp = displayedLevelInfo(level_pack->get_info(icurrent_level));
375            display::GetStatusBar()->show_text(disp.c_str(),
376                                               display::TEXT_5SECONDS,
377                                               true); // may interrupt
378            change_state(LEVELINIT);
379            break;
380        }
381        case LEVELINIT:  {
382            const int  BUFSIZE = 50;
383            const LevelInfo *info    = level_pack->get_info(icurrent_level);
384            char       buffer[BUFSIZE+1];
385    
386            snprintf(buffer, BUFSIZE, "Enigma - %s ", info->name.c_str());
387            video::SetCaption(buffer);
388    
389            change_state(INGAME);
390            break;
391        }
392        case INGAME:
393            handle_events();
394            world::Tick(dtime);
395            player::Tick(dtime);
396            display::Tick(dtime);
397            display::Redraw(screen);
398            break;
399    
400      case PLAYERDEAD:      case PLAYERDEAD:
401          actor_dead_dtime += dtime;          actor_dead_dtime += dtime;
402          if (actor_dead_dtime <= 0.5) {          if (actor_dead_dtime <= 0.5) {
# Line 391  Game::tick(double dtime) Line 427  Game::tick(double dtime)
427          }          }
428          break;          break;
429    
     case LEVELINFO: {  
         // draw inventory  
         player::GetInventory(player::CurrentPlayer())->redraw();  
   
         // show level information (name, author, etc.)  
         string disp = displayedLevelInfo(level_pack->get_info(icurrent_level));  
         display::GetStatusBar()->show_text(disp.c_str(),  
                                            display::TEXT_5SECONDS,  
                                            true); // may interrupt  
         change_state(LEVELINIT);  
         break;  
     }  
     case LEVELINIT:  {  
         const int  BUFSIZE = 50;  
         const LevelInfo *info    = level_pack->get_info(icurrent_level);  
         char       buffer[BUFSIZE+1];  
   
         snprintf(buffer, BUFSIZE, "Enigma - %s ", info->name.c_str());  
         video::SetCaption(buffer);  
   
         change_state(INGAME);  
         break;  
     }  
430      case LEVELFINISHED:      case LEVELFINISHED:
431          if (current_state_dtime <= 2.5) {          if (current_state_dtime <= 2.5) {
432              handle_events();              handle_events();
# Line 426  Game::tick(double dtime) Line 439  Game::tick(double dtime)
439          }          }
440          break;          break;
441    
     case INGAME:  
   
         handle_events();  
         world::Tick(dtime);  
         player::Tick(dtime);  
         display::Tick(dtime);  
         display::Redraw(screen);  
         break;  
   
442      default:      default:
443          break;          break;
444      }      }
# Line 664  Game::on_keydown(SDL_Event &e) Line 668  Game::on_keydown(SDL_Event &e)
668    
669      case SDLK_F3:      case SDLK_F3:
670          player::Suicide();          player::Suicide();
         change_state(RELOADLEVEL);  
671          break;          break;
672    
673      case SDLK_F4:      case SDLK_F4:

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.41

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26