projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed bug with high scores for wrong level when auto-playing next level
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index 18d020bdf802d695ae9d10429b854a4613916456..40efde17d7321a5dcac60e754bea4c0230e16ddf 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-4667,6
+4667,8
@@
void GameWon(void)
void GameEnd(void)
{
void GameEnd(void)
{
+ /* used instead of "level_nr" (needed for network games) */
+ int last_level_nr = levelset.level_nr;
int hi_pos;
local_player->LevelSolved_GameEnd = TRUE;
int hi_pos;
local_player->LevelSolved_GameEnd = TRUE;
@@
-4723,14
+4725,13
@@
void GameEnd(void)
}
}
}
}
- /* used instead of last "level_nr" (for network games) */
- hi_pos = NewHiScore(levelset.level_nr);
+ hi_pos = NewHiScore(last_level_nr);
if (hi_pos >= 0 && !setup.skip_scores_after_game)
{
SetGameStatus(GAME_MODE_SCORES);
if (hi_pos >= 0 && !setup.skip_scores_after_game)
{
SetGameStatus(GAME_MODE_SCORES);
- DrawHallOfFame(l
evelset.
level_nr, hi_pos);
+ DrawHallOfFame(l
ast_
level_nr, hi_pos);
}
else if (setup.auto_play_next_level && setup.increment_levels &&
!network_playing)
}
else if (setup.auto_play_next_level && setup.increment_levels &&
!network_playing)
@@
-8896,7
+8897,6
@@
static void Life(int ax, int ay)
int *life_parameter = (element == EL_GAME_OF_LIFE ? level.game_of_life :
level.biomaze);
boolean changed = FALSE;
int *life_parameter = (element == EL_GAME_OF_LIFE ? level.game_of_life :
level.biomaze);
boolean changed = FALSE;
- boolean use_life_bugs = FALSE;
if (IS_ANIMATED(graphic))
DrawLevelGraphicAnimationIfNeeded(ax, ay, graphic);
if (IS_ANIMATED(graphic))
DrawLevelGraphicAnimationIfNeeded(ax, ay, graphic);
@@
-8933,7
+8933,7
@@
static void Life(int ax, int ay)
boolean is_player_cell = (element == EL_GAME_OF_LIFE && IS_PLAYER(x, y));
boolean is_neighbour = FALSE;
boolean is_player_cell = (element == EL_GAME_OF_LIFE && IS_PLAYER(x, y));
boolean is_neighbour = FALSE;
- if (use_life_bugs)
+ if (
level.
use_life_bugs)
is_neighbour =
(((Feld[x][y] == element || is_player_cell) && !Stop[x][y]) ||
(IS_FREE(x, y) && Stop[x][y]));
is_neighbour =
(((Feld[x][y] == element || is_player_cell) && !Stop[x][y]) ||
(IS_FREE(x, y) && Stop[x][y]));
@@
-8947,7
+8947,7
@@
static void Life(int ax, int ay)
boolean is_free = FALSE;
boolean is_free = FALSE;
- if (use_life_bugs)
+ if (
level.
use_life_bugs)
is_free = (IS_FREE(xx, yy));
else
is_free = (IS_FREE(xx, yy) && Last[xx][yy] == EL_EMPTY);
is_free = (IS_FREE(xx, yy));
else
is_free = (IS_FREE(xx, yy) && Last[xx][yy] == EL_EMPTY);