projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed support for wrap-around levels in EM engine for old tapes
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index f366a36823529583faf4d0e570c77d3080410d4a..8c243a4954c3bbec07e28c79afa20bfbbc1cec21 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-1785,7
+1785,7
@@
static void InitPlayerField(int x, int y, int element, boolean init_game)
player->jy = player->last_jy = y;
}
player->jy = player->last_jy = y;
}
- if (!init_game)
+ // always check if player was just killed and should be reanimated
{
int player_nr = GET_PLAYER_NR(element);
struct PlayerInfo *player = &stored_player[player_nr];
{
int player_nr = GET_PLAYER_NR(element);
struct PlayerInfo *player = &stored_player[player_nr];
@@
-2991,6
+2991,9
@@
static void InitGameEngine(void)
game_em.use_old_explosions =
(game.engine_version < VERSION_IDENT(4,1,4,2));
game_em.use_old_explosions =
(game.engine_version < VERSION_IDENT(4,1,4,2));
+ game_em.use_wrap_around =
+ (game.engine_version > VERSION_IDENT(4,1,4,1));
+
// --------------------------------------------------------------------------
// set maximal allowed number of custom element changes per game frame
// --------------------------------------------------------------------------
// set maximal allowed number of custom element changes per game frame
@@
-4394,12
+4397,6
@@
void UpdateEngineValues(int actual_scroll_x, int actual_scroll_y,
{
// this is used for non-R'n'D game engines to update certain engine values
{
// this is used for non-R'n'D game engines to update certain engine values
- if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
- {
- actual_player_x = correctLevelPosX_EM(actual_player_x);
- actual_player_y = correctLevelPosY_EM(actual_player_y);
- }
-
// needed to determine if sounds are played within the visible screen area
scroll_x = actual_scroll_x;
scroll_y = actual_scroll_y;
// needed to determine if sounds are played within the visible screen area
scroll_x = actual_scroll_x;
scroll_y = actual_scroll_y;
@@
-14859,8
+14856,8
@@
void PlayLevelSound_EM(int xx, int yy, int element_em, int sample)
{
int element = (element_em > -1 ? map_element_EM_to_RND_game(element_em) : 0);
int offset = 0;
{
int element = (element_em > -1 ? map_element_EM_to_RND_game(element_em) : 0);
int offset = 0;
- int x = xx -
1 -
offset;
- int y = yy -
1 -
offset;
+ int x = xx - offset;
+ int y = yy - offset;
switch (sample)
{
switch (sample)
{