projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added new animation mode "level_nr" to select frame according to level
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index 299fd72bdd934957fc06ca6e9343f1ad315c60aa..311777303723e2031c92b5b7eb46c2d268992561 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-3629,6
+3629,10
@@
void InitGame(void)
// force restarting global animations displayed during game play
RestartGlobalAnimsByStatus(GAME_MODE_PSEUDO_RESTARTING);
// force restarting global animations displayed during game play
RestartGlobalAnimsByStatus(GAME_MODE_PSEUDO_RESTARTING);
+ // this is required for "transforming" fade modes like cross-fading
+ // (else global animations will be stopped, but not restarted here)
+ SetAnimStatusBeforeFading(GAME_MODE_PSEUDO_RESTARTING);
+
SetGameStatus(GAME_MODE_PLAYING);
}
SetGameStatus(GAME_MODE_PLAYING);
}
@@
-10716,7
+10720,7
@@
static boolean ChangeElement(int x, int y, int element, int page)
ChangeCount[x][y]++; // count number of changes in the same frame
if (ei->has_anim_event)
ChangeCount[x][y]++; // count number of changes in the same frame
if (ei->has_anim_event)
- HandleGlobalAnimEventByElementChange(element, page);
+ HandleGlobalAnimEventByElementChange(element, page
, x, y
);
if (change->explode)
{
if (change->explode)
{
@@
-13461,8
+13465,9
@@
void TestIfPlayerTouchesCustomElement(int x, int y)
incorrectly give EL_PLAYER_1 for "player->element_nr") */
int player_element = PLAYERINFO(x, y)->initial_element;
incorrectly give EL_PLAYER_1 for "player->element_nr") */
int player_element = PLAYERINFO(x, y)->initial_element;
+ // as element "X" is the player here, check opposite (center) side
CheckElementChangeBySide(xx, yy, border_element, player_element,
CheckElementChangeBySide(xx, yy, border_element, player_element,
- CE_TOUCHING_X,
bord
er_side);
+ CE_TOUCHING_X,
cent
er_side);
}
}
else if (IS_PLAYER(xx, yy)) // player found at border element
}
}
else if (IS_PLAYER(xx, yy)) // player found at border element
@@
-13488,8
+13493,9
@@
void TestIfPlayerTouchesCustomElement(int x, int y)
incorrectly give EL_PLAYER_1 for "player->element_nr") */
int player_element = PLAYERINFO(xx, yy)->initial_element;
incorrectly give EL_PLAYER_1 for "player->element_nr") */
int player_element = PLAYERINFO(xx, yy)->initial_element;
+ // as element "X" is the player here, check opposite (border) side
CheckElementChangeBySide(x, y, center_element, player_element,
CheckElementChangeBySide(x, y, center_element, player_element,
- CE_TOUCHING_X,
cent
er_side);
+ CE_TOUCHING_X,
bord
er_side);
}
break;
}
break;
@@
-13596,7
+13602,7
@@
void TestIfElementTouchesCustomElement(int x, int y)
CheckElementChangeBySide(xx, yy, border_element, center_element,
CE_TOUCHING_X, center_side);
CheckElementChangeBySide(xx, yy, border_element, center_element,
CE_TOUCHING_X, center_side);
- // (center element cannot be player, so we dont have to check this here)
+ // (center element cannot be player, so we don
'
t have to check this here)
}
for (i = 0; i < NUM_DIRECTIONS; i++)
}
for (i = 0; i < NUM_DIRECTIONS; i++)
@@
-13623,6
+13629,7
@@
void TestIfElementTouchesCustomElement(int x, int y)
incorrectly give EL_PLAYER_1 for "player->element_nr") */
int player_element = PLAYERINFO(xx, yy)->initial_element;
incorrectly give EL_PLAYER_1 for "player->element_nr") */
int player_element = PLAYERINFO(xx, yy)->initial_element;
+ // as element "X" is the player here, check opposite (border) side
CheckElementChangeBySide(x, y, center_element, player_element,
CE_TOUCHING_X, border_side);
}
CheckElementChangeBySide(x, y, center_element, player_element,
CE_TOUCHING_X, border_side);
}