projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added separate game variable to check for time limit setup option
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index 259d19b6c54f858bee6ca6701bd6ce5b64ec94fd..e650f4d3a6c6d867fa9573eb1a67a65fdf3f6be1 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-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_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 ?
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.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;
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)
{
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);
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;
}
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;
{
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();
DisplayGameControlValues();
- if (!TimeLeft &&
setup
.time_limit)
+ if (!TimeLeft &&
game
.time_limit)
for (i = 0; i < MAX_PLAYERS; i++)
KillPlayer(&stored_player[i]);
}
for (i = 0; i < MAX_PLAYERS; i++)
KillPlayer(&stored_player[i]);
}
@@
-11637,18
+11638,18
@@
static void CheckLevelTime_StepCounter(void)
{
TimeLeft--;
{
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();
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]);
}
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;
{
game_panel_controls[GAME_PANEL_TIME].value = TimePlayed;
@@
-11686,7
+11687,7
@@
static void CheckLevelTime(void)
{
TimeLeft--;
{
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
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;
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;
{
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]);
}
}
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_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)
}
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;
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;
game_panel_controls[GAME_PANEL_TIME].value = TimeLeft;
@@
-15692,6
+15693,7
@@
void RequestQuitGameExt(boolean skip_request, boolean quick_quit, char *message)
{
// prevent short reactivation of overlay buttons while closing door
SetOverlayActive(FALSE);
{
// prevent short reactivation of overlay buttons while closing door
SetOverlayActive(FALSE);
+ UnmapGameButtons();
// door may still be open due to skipped or envelope style request
CloseDoor(score_info_tape_play ? DOOR_CLOSE_ALL : DOOR_CLOSE_1);
// door may still be open due to skipped or envelope style request
CloseDoor(score_info_tape_play ? DOOR_CLOSE_ALL : DOOR_CLOSE_1);
@@
-16299,6
+16301,10
@@
void CreateGameButtons(void)
int y = (is_touch_button ? pos->y : GDI_ACTIVE_POS(pos->y));
int id = i;
int y = (is_touch_button ? pos->y : GDI_ACTIVE_POS(pos->y));
int id = i;
+ // do not use touch buttons if overlay touch buttons are disabled
+ if (is_touch_button && !setup.touch.overlay_buttons)
+ continue;
+
if (gfx->bitmap == NULL)
{
game_gadget[id] = NULL;
if (gfx->bitmap == NULL)
{
game_gadget[id] = NULL;