projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
moved code for fading out laser to separate function in MM engine
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index 97617bb336003beddee02f2b2f1d37b73ea81d49..31a52004fc77bd999cc7f86ac9468364c0fb4057 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-1784,7
+1784,7
@@
static void InitPlayerField(int x, int y, int element, boolean init_game)
player->active = TRUE;
// remove potentially duplicate players
player->active = TRUE;
// remove potentially duplicate players
- if (StorePlayer[jx][jy] == Tile[x][y])
+ if (
IN_LEV_FIELD(jx, jy) &&
StorePlayer[jx][jy] == Tile[x][y])
StorePlayer[jx][jy] = 0;
StorePlayer[x][y] = Tile[x][y];
StorePlayer[jx][jy] = 0;
StorePlayer[x][y] = Tile[x][y];
@@
-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)
@@
-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)
{
@@
-11990,25
+12011,23
@@
void GameActions(void)
void GameActions_EM_Main(void)
{
byte effective_action[MAX_PLAYERS];
void GameActions_EM_Main(void)
{
byte effective_action[MAX_PLAYERS];
- boolean warp_mode = (tape.playing && tape.warp_forward && !tape.pausing);
int i;
for (i = 0; i < MAX_PLAYERS; i++)
effective_action[i] = stored_player[i].effective_action;
int i;
for (i = 0; i < MAX_PLAYERS; i++)
effective_action[i] = stored_player[i].effective_action;
- GameActions_EM(effective_action
, warp_mode
);
+ GameActions_EM(effective_action);
}
void GameActions_SP_Main(void)
{
byte effective_action[MAX_PLAYERS];
}
void GameActions_SP_Main(void)
{
byte effective_action[MAX_PLAYERS];
- boolean warp_mode = (tape.playing && tape.warp_forward && !tape.pausing);
int i;
for (i = 0; i < MAX_PLAYERS; i++)
effective_action[i] = stored_player[i].effective_action;
int i;
for (i = 0; i < MAX_PLAYERS; i++)
effective_action[i] = stored_player[i].effective_action;
- GameActions_SP(effective_action
, warp_mode
);
+ GameActions_SP(effective_action);
for (i = 0; i < MAX_PLAYERS; i++)
{
for (i = 0; i < MAX_PLAYERS; i++)
{
@@
-12021,9
+12040,9
@@
void GameActions_SP_Main(void)
void GameActions_MM_Main(void)
{
void GameActions_MM_Main(void)
{
-
boolean warp_mode = (tape.playing && tape.warp_forward && !tape.pausing
);
+
AdvanceGfxFrame(
);
- GameActions_MM(local_player->effective_mouse_action
, warp_mode
);
+ GameActions_MM(local_player->effective_mouse_action);
}
void GameActions_RND_Main(void)
}
void GameActions_RND_Main(void)
@@
-12087,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();
}
@@
-14706,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)
@@
-15840,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