projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed regression bug with growing steel wall turning into normal wall
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index ce032327ab47d2837007a85944a8940a30d83ca6..68916166423958080b3b6718bdbf5f2d355a331c 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-2566,7
+2566,9
@@
static void UpdateGameControlValues(void)
int element = gpc->value;
int graphic = el2panelimg(element);
int init_gfx_random = (graphic_info[graphic].anim_global_sync ?
int element = gpc->value;
int graphic = el2panelimg(element);
int init_gfx_random = (graphic_info[graphic].anim_global_sync ?
- sync_random_frame : INIT_GFX_RANDOM());
+ sync_random_frame :
+ graphic_info[graphic].anim_global_anim_sync ?
+ getGlobalAnimSyncFrame() : INIT_GFX_RANDOM());
if (gpc->value != gpc->last_value)
{
if (gpc->value != gpc->last_value)
{
@@
-2601,7
+2603,9
@@
static void UpdateGameControlValues(void)
int last_anim_random_frame = gfx.anim_random_frame;
int graphic = gpc->graphic;
int init_gfx_random = (graphic_info[graphic].anim_global_sync ?
int last_anim_random_frame = gfx.anim_random_frame;
int graphic = gpc->graphic;
int init_gfx_random = (graphic_info[graphic].anim_global_sync ?
- sync_random_frame : INIT_GFX_RANDOM());
+ sync_random_frame :
+ graphic_info[graphic].anim_global_anim_sync ?
+ getGlobalAnimSyncFrame() : INIT_GFX_RANDOM());
if (gpc->value != gpc->last_value)
{
if (gpc->value != gpc->last_value)
{
@@
-5305,6
+5309,8
@@
static void ResetGfxFrame(int x, int y)
if (graphic_info[graphic].anim_global_sync)
GfxFrame[x][y] = FrameCounter;
if (graphic_info[graphic].anim_global_sync)
GfxFrame[x][y] = FrameCounter;
+ else if (graphic_info[graphic].anim_global_anim_sync)
+ GfxFrame[x][y] = getGlobalAnimSyncFrame();
else if (ANIM_MODE(graphic) == ANIM_CE_VALUE)
GfxFrame[x][y] = CustomValue[x][y];
else if (ANIM_MODE(graphic) == ANIM_CE_SCORE)
else if (ANIM_MODE(graphic) == ANIM_CE_VALUE)
GfxFrame[x][y] = CustomValue[x][y];
else if (ANIM_MODE(graphic) == ANIM_CE_SCORE)
@@
-5611,7
+5617,7
@@
static void setScreenCenteredToAllPlayers(int *sx, int *sy)
*sy = (sy1 + sy2) / 2;
}
*sy = (sy1 + sy2) / 2;
}
-static void DrawRelocateScreen(int old_x, int old_y, int x, int y,
int move_dir,
+static void DrawRelocateScreen(int old_x, int old_y, int x, int y,
boolean center_screen, boolean quick_relocation)
{
unsigned int frame_delay_value_old = GetVideoFrameDelay();
boolean center_screen, boolean quick_relocation)
{
unsigned int frame_delay_value_old = GetVideoFrameDelay();
@@
-5782,7
+5788,7
@@
static void RelocatePlayer(int jx, int jy, int el_player_raw)
}
// only visually relocate centered player
}
// only visually relocate centered player
- DrawRelocateScreen(old_jx, old_jy, player->jx, player->jy,
player->MovDir,
+ DrawRelocateScreen(old_jx, old_jy, player->jx, player->jy,
FALSE, level.instant_relocation);
TestIfPlayerTouchesBadThing(jx, jy);
FALSE, level.instant_relocation);
TestIfPlayerTouchesBadThing(jx, jy);
@@
-6421,7
+6427,7
@@
static void ToggleBeltSwitch(int x, int y)
}
}
}
}
-static void ToggleSwitchgateSwitch(
int x, int y
)
+static void ToggleSwitchgateSwitch(
void
)
{
int xx, yy;
{
int xx, yy;
@@
-6901,7
+6907,7
@@
static void Impact(int x, int y)
smashed == EL_DC_SWITCHGATE_SWITCH_UP ||
smashed == EL_DC_SWITCHGATE_SWITCH_DOWN)
{
smashed == EL_DC_SWITCHGATE_SWITCH_UP ||
smashed == EL_DC_SWITCHGATE_SWITCH_DOWN)
{
- ToggleSwitchgateSwitch(
x, y + 1
);
+ ToggleSwitchgateSwitch();
}
else if (smashed == EL_LIGHT_SWITCH ||
smashed == EL_LIGHT_SWITCH_ACTIVE)
}
else if (smashed == EL_LIGHT_SWITCH ||
smashed == EL_LIGHT_SWITCH_ACTIVE)
@@
-9853,7
+9859,7
@@
static void CheckWallGrowing(int ax, int ay)
if (((stop_top && stop_bottom) || stop_horizontal) &&
((stop_left && stop_right) || stop_vertical))
if (((stop_top && stop_bottom) || stop_horizontal) &&
((stop_left && stop_right) || stop_vertical))
- Tile[ax][ay] =
EL_WALL
;
+ Tile[ax][ay] =
(is_steelwall ? EL_STEELWALL : EL_WALL)
;
if (new_wall)
PlayLevelSoundAction(ax, ay, ACTION_GROWING);
if (new_wall)
PlayLevelSoundAction(ax, ay, ACTION_GROWING);
@@
-11672,6
+11678,21
@@
void AdvanceFrameAndPlayerCounters(int player_nr)
}
}
}
}
+void AdvanceFrameCounter(void)
+{
+ FrameCounter++;
+}
+
+void AdvanceGfxFrame(void)
+{
+ int x, y;
+
+ SCAN_PLAYFIELD(x, y)
+ {
+ GfxFrame[x][y]++;
+ }
+}
+
void StartGameActions(boolean init_network_game, boolean record_tape,
int random_seed)
{
void StartGameActions(boolean init_network_game, boolean record_tape,
int random_seed)
{
@@
-12019,6
+12040,8
@@
void GameActions_SP_Main(void)
void GameActions_MM_Main(void)
{
void GameActions_MM_Main(void)
{
+ AdvanceGfxFrame();
+
GameActions_MM(local_player->effective_mouse_action);
}
GameActions_MM(local_player->effective_mouse_action);
}
@@
-12083,7
+12106,7
@@
void GameActions_RND(void)
game.centered_player_nr = game.centered_player_nr_next;
game.set_centered_player = FALSE;
game.centered_player_nr = game.centered_player_nr_next;
game.set_centered_player = FALSE;
- DrawRelocateScreen(0, 0, sx, sy,
MV_NONE,
TRUE, setup.quick_switch);
+ DrawRelocateScreen(0, 0, sx, sy, TRUE, setup.quick_switch);
DrawGameDoorValues();
}
DrawGameDoorValues();
}
@@
-14702,7
+14725,7
@@
static int DigField(struct PlayerInfo *player,
element == EL_DC_SWITCHGATE_SWITCH_UP ||
element == EL_DC_SWITCHGATE_SWITCH_DOWN)
{
element == EL_DC_SWITCHGATE_SWITCH_UP ||
element == EL_DC_SWITCHGATE_SWITCH_DOWN)
{
- ToggleSwitchgateSwitch(
x, y
);
+ ToggleSwitchgateSwitch();
}
else if (element == EL_LIGHT_SWITCH ||
element == EL_LIGHT_SWITCH_ACTIVE)
}
else if (element == EL_LIGHT_SWITCH ||
element == EL_LIGHT_SWITCH_ACTIVE)
@@
-15836,7
+15859,7
@@
static ListNode *SaveEngineSnapshotBuffers(void)
if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
SaveEngineSnapshotValues_SP(&buffers);
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
SaveEngineSnapshotValues_SP(&buffers);
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
- SaveEngineSnapshotValues_MM(
&buffers
);
+ SaveEngineSnapshotValues_MM();
// save values stored in special snapshot structure
// save values stored in special snapshot structure