#define EX_TYPE_DYNA (1 << 4)
#define EX_TYPE_SINGLE_TILE (EX_TYPE_CENTER | EX_TYPE_BORDER)
-#define PANEL_OFF() (local_player->LevelSolved_PanelOff)
+#define PANEL_OFF() (game.panel.active == FALSE)
#define PANEL_DEACTIVATED(p) ((p)->x < 0 || (p)->y < 0 || PANEL_OFF())
#define PANEL_XPOS(p) (DX + ALIGNED_TEXT_XPOS(p))
#define PANEL_YPOS(p) (DY + ALIGNED_TEXT_YPOS(p))
player->LevelSolved_GameWon = FALSE;
player->LevelSolved_GameEnd = FALSE;
- player->LevelSolved_PanelOff = FALSE;
player->LevelSolved_SaveTape = FALSE;
player->LevelSolved_SaveScore = FALSE;
AllPlayersGone = FALSE;
+ game.panel.active = TRUE;
+
game.no_time_limit = (level.time == 0);
game.yamyam_content_nr = 0;
game.restart_level = FALSE;
game.restart_game_message = NULL;
+ game.request_active = FALSE;
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
InitGameActions_MM();
return;
}
- local_player->LevelSolved_PanelOff = TRUE;
+ game.panel.active = FALSE;
if (game_over_delay_3 > 0)
{
}
}
+boolean checkGameSolved(void)
+{
+ /* set for all game engines if level was solved */
+ return local_player->LevelSolved_GameEnd;
+}
+
+boolean checkGameFailed(void)
+{
+ if (!AllPlayersGone)
+ return FALSE;
+
+ if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
+ return (level.native_em_level->lev->home > 0);
+ else if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
+ return (game_sp.GameOver && !game_sp.LevelSolved);
+ else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ return (game_mm.game_over && !game_mm.level_solved);
+ else /* GAME_ENGINE_TYPE_RND */
+ return (local_player->GameOver && !local_player->LevelSolved);
+}
+
+boolean checkGameEnded(void)
+{
+ return (checkGameSolved() || checkGameFailed());
+}
+
/* ------------------------------------------------------------------------- */
/* random generator functions */