added separate game variable to check for time limit setup option
[rocksndiamonds.git] / src / game.c
index 68fb40c6e12dc3c2c27433c0955fb5ea7a4e086a..e650f4d3a6c6d867fa9573eb1a67a65fdf3f6be1 100644 (file)
@@ -2239,7 +2239,7 @@ static void UpdateGameControlValues(void)
              game_sp.time_played :
              level.game_engine_type == GAME_ENGINE_TYPE_MM ?
              game_mm.energy_left :
-             game.no_time_limit ? TimePlayed : TimeLeft);
+             game.no_level_time_limit ? TimePlayed : TimeLeft);
   int score = (game.LevelSolved ?
               game.LevelSolved_CountingScore :
               level.game_engine_type == GAME_ENGINE_TYPE_EM ?
@@ -3818,7 +3818,8 @@ void InitGame(void)
 
   game.panel.active = TRUE;
 
-  game.no_time_limit = (level.time == 0);
+  game.no_level_time_limit = (level.time == 0);
+  game.time_limit = (setup.time_limit);
 
   game.yamyam_content_nr = 0;
   game.robot_wheel_active = FALSE;
@@ -4726,7 +4727,7 @@ void InitAmoebaNr(int x, int y)
 
 static void LevelSolved_SetFinalGameValues(void)
 {
-  game.time_final = (game.no_time_limit ? TimePlayed : TimeLeft);
+  game.time_final = (game.no_level_time_limit ? TimePlayed : TimeLeft);
   game.score_time_final = (level.use_step_counter ? TimePlayed :
                           TimePlayed * FRAMES_PER_SECOND + TimeFrames);
 
@@ -4835,7 +4836,7 @@ void GameWon(void)
        time_final = 0;
        time_frames = time_frames_left;
       }
-      else if (game.no_time_limit && TimePlayed < time_final_max)
+      else if (game.no_level_time_limit && TimePlayed < time_final_max)
       {
        time_final = time_final_max;
        time_frames = time_frames_final_max - time_frames_played;
@@ -10227,7 +10228,7 @@ static void ExecuteCustomElementAction(int x, int y, int element, int page)
 
        DisplayGameControlValues();
 
-       if (!TimeLeft && setup.time_limit)
+       if (!TimeLeft && game.time_limit)
          for (i = 0; i < MAX_PLAYERS; i++)
            KillPlayer(&stored_player[i]);
       }
@@ -11637,18 +11638,18 @@ static void CheckLevelTime_StepCounter(void)
   {
     TimeLeft--;
 
-    if (TimeLeft <= 10 && setup.time_limit && !game.LevelSolved)
+    if (TimeLeft <= 10 && game.time_limit && !game.LevelSolved)
       PlaySound(SND_GAME_RUNNING_OUT_OF_TIME);
 
     game_panel_controls[GAME_PANEL_TIME].value = TimeLeft;
 
     DisplayGameControlValues();
 
-    if (!TimeLeft && setup.time_limit && !game.LevelSolved)
+    if (!TimeLeft && game.time_limit && !game.LevelSolved)
       for (i = 0; i < MAX_PLAYERS; i++)
        KillPlayer(&stored_player[i]);
   }
-  else if (game.no_time_limit && !game.all_players_gone)
+  else if (game.no_level_time_limit && !game.all_players_gone)
   {
     game_panel_controls[GAME_PANEL_TIME].value = TimePlayed;
 
@@ -11686,7 +11687,7 @@ static void CheckLevelTime(void)
       {
        TimeLeft--;
 
-       if (TimeLeft <= 10 && setup.time_limit)
+       if (TimeLeft <= 10 && game.time_limit)
          PlaySound(SND_GAME_RUNNING_OUT_OF_TIME);
 
        /* this does not make sense: game_panel_controls[GAME_PANEL_TIME].value
@@ -11694,7 +11695,7 @@ static void CheckLevelTime(void)
 
        game_panel_controls[GAME_PANEL_TIME].value = TimeLeft;
 
-       if (!TimeLeft && setup.time_limit)
+       if (!TimeLeft && game.time_limit)
        {
          if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
            game_em.lev->killed_out_of_time = TRUE;
@@ -11703,12 +11704,12 @@ static void CheckLevelTime(void)
              KillPlayer(&stored_player[i]);
        }
       }
-      else if (game.no_time_limit && !game.all_players_gone)
+      else if (game.no_level_time_limit && !game.all_players_gone)
       {
        game_panel_controls[GAME_PANEL_TIME].value = TimePlayed;
       }
 
-      game_em.lev->time = (game.no_time_limit ? TimePlayed : TimeLeft);
+      game_em.lev->time = (game.no_level_time_limit ? TimePlayed : TimeLeft);
     }
 
     if (tape.recording || tape.playing)
@@ -14882,7 +14883,7 @@ static int DigField(struct PlayerInfo *player,
       if (level.time > 0 || level.use_time_orb_bug)
       {
        TimeLeft += level.time_orb_time;
-       game.no_time_limit = FALSE;
+       game.no_level_time_limit = FALSE;
 
        game_panel_controls[GAME_PANEL_TIME].value = TimeLeft;
 
@@ -16300,9 +16301,8 @@ void CreateGameButtons(void)
     int y = (is_touch_button ? pos->y : GDI_ACTIVE_POS(pos->y));
     int id = i;
 
-    // do not use touch buttons if touch controls are disabled
-    if (is_touch_button &&
-       strEqual(setup.touch.control_type, TOUCH_CONTROL_OFF))
+    // do not use touch buttons if overlay touch buttons are disabled
+    if (is_touch_button && !setup.touch.overlay_buttons)
       continue;
 
     if (gfx->bitmap == NULL)