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 |
|
|
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) { |
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(); |
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 |
} |
} |
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: |