320 |
Game::change_state(State newstate) |
Game::change_state(State newstate) |
321 |
{ |
{ |
322 |
if (state == newstate) return; |
if (state == newstate) return; |
323 |
state = newstate; |
switch (newstate) { |
|
current_state_dtime = 0; |
|
|
|
|
|
switch (state) { |
|
324 |
case NOMORELIVES: |
case NOMORELIVES: |
325 |
sound::PlaySound("exit"); |
sound::PlaySound("exit"); |
326 |
break; |
break; |
327 |
|
|
328 |
case LEVELFINISHED: |
case LEVELFINISHED: |
329 |
sound::PlaySound("finished"); |
if (state==INGAME) { |
330 |
display::GetStatusBar()->show_text("Level finished!", display::TEXT_STATIC); |
sound::PlaySound("finished"); |
331 |
player::LevelFinished(); // remove player-controlled actors |
display::GetStatusBar()->show_text("Level finished!", display::TEXT_STATIC); |
332 |
|
player::LevelFinished(); // remove player-controlled actors |
333 |
options::SetLevelFinished(level_pack->name, |
|
334 |
level_pack->levels[icurrent_level].filename, |
options::SetLevelFinished(level_pack->name, |
335 |
DIFFICULTY_HARD); |
level_pack->levels[icurrent_level].filename, |
336 |
|
DIFFICULTY_HARD); |
337 |
|
} |
338 |
|
else |
339 |
|
return; // do not enter state |
340 |
break; |
break; |
341 |
case PLAYERDEAD: |
case PLAYERDEAD: |
342 |
actor_dead_dtime=0; |
actor_dead_dtime=0; |
344 |
break; |
break; |
345 |
default: break; |
default: break; |
346 |
} |
} |
347 |
|
state = newstate; |
348 |
|
current_state_dtime = 0; |
349 |
} |
} |
350 |
|
|
351 |
void |
void |
390 |
break; |
break; |
391 |
|
|
392 |
case LEVELFINISHED: |
case LEVELFINISHED: |
393 |
if (current_state_dtime <= 1.5) { |
if (current_state_dtime <= 2.5) { |
394 |
handle_events(); |
handle_events(); |
395 |
player::Tick(dtime); |
player::Tick(dtime); |
396 |
world::Tick(dtime); |
world::Tick(dtime); |