From ffe5b4f7f8db01217558b2de54edc2f54eb75f03 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Mon, 17 Sep 2007 02:49:01 +0200 Subject: [PATCH] rnd-20070917-1-src --- src/conftime.h | 2 +- src/game.c | 2 +- src/game_em/export.h | 6 ++++++ src/game_em/synchro_2.c | 29 +++++++++++++++++++++++++++ src/libgame/system.h | 3 +++ src/tools.c | 43 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 83 insertions(+), 2 deletions(-) diff --git a/src/conftime.h b/src/conftime.h index e57d99c8..73469ff5 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "2007-09-16 00:50" +#define COMPILE_DATE_STRING "2007-09-17 02:41" diff --git a/src/game.c b/src/game.c index 30a12e54..88bca397 100644 --- a/src/game.c +++ b/src/game.c @@ -8662,7 +8662,7 @@ void ContinueMoving(int x, int y) } #if USE_NEW_CUSTOM_VALUE - CustomValue[newx][newy] = CustomValue[x][y]; + CustomValue[newx][newy] = CustomValue[x][y]; #endif ChangeDelay[x][y] = 0; diff --git a/src/game_em/export.h b/src/game_em/export.h index 20987253..05e7ae65 100644 --- a/src/game_em/export.h +++ b/src/game_em/export.h @@ -353,6 +353,12 @@ enum Xsand_stonesand_2, Xsand_stonesand_3, Xsand_stonesand_4, + +#ifdef EM_ENGINE_USE_ADDITIONAL_ELEMENTS + Xsand_stonesand_quickout_1, + Xsand_stonesand_quickout_2, +#endif + Xsand_stoneout_1, Xsand_stoneout_2, Xsand_sandstone_1, diff --git a/src/game_em/synchro_2.c b/src/game_em/synchro_2.c index 7657bf8d..82ca79b6 100644 --- a/src/game_em/synchro_2.c +++ b/src/game_em/synchro_2.c @@ -4716,6 +4716,16 @@ void synchro_2(void) case Xacid_6: case Xacid_7: case Xacid_8: +#if 1 + Cave[y][x] = Xsand_stonesand_quickout_1; + if (Cave[y][x+1] == Xblank) + Cave[y][x+1] = Yacid_splash_eB; + if (Cave[y][x-1] == Xblank) + Cave[y][x-1] = Yacid_splash_wB; + Next[y][x] = Xsand_stonesand_quickout_2; + play_element_sound(x, y, SAMPLE_acid, Xacid_1); + goto loop; +#else Cave[y][x] = Xsand_stonesand_3; if (Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB; @@ -4724,15 +4734,24 @@ void synchro_2(void) Next[y][x] = Xsand_stonesand_4; play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; +#endif case Xblank: case Yacid_splash_eB: case Yacid_splash_wB: +#if 1 + Cave[y][x] = Xsand_stonesand_quickout_1; + Cave[y+1][x] = Xsand_stoneout_1; + Next[y][x] = Xsand_stonesand_quickout_2; + Next[y+1][x] = Xsand_stoneout_2; + goto loop; +#else Cave[y][x] = Xsand_stonesand_3; Cave[y+1][x] = Xsand_stoneout_1; Next[y][x] = Xsand_stonesand_4; Next[y+1][x] = Xsand_stoneout_2; goto loop; +#endif case Xsand: Cave[y][x] = Xsand_stonesand_1; @@ -4777,6 +4796,16 @@ void synchro_2(void) Next[y][x] = Xsand; goto loop; +#if 1 + case Xsand_stonesand_quickout_1: + Next[y][x] = Xsand_stonesand_quickout_2; + goto loop; + + case Xsand_stonesand_quickout_2: + Next[y][x] = Xsand; + goto loop; +#endif + case Xsand_stoneout_1: Next[y][x] = Xsand_stoneout_2; goto loop; diff --git a/src/libgame/system.h b/src/libgame/system.h index db3c5118..59522dc6 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -858,6 +858,9 @@ struct SetupInfo boolean override_level_graphics; boolean override_level_sounds; boolean override_level_music; +#if 0 + boolean override_classic_artwork; +#endif struct SetupEditorInfo editor; struct SetupEditorCascadeInfo editor_cascade; diff --git a/src/tools.c b/src/tools.c index 7e2c3752..23be2acb 100644 --- a/src/tools.c +++ b/src/tools.c @@ -4813,6 +4813,14 @@ em_object_mapping_list[] = Xsand_stonesand_4, FALSE, FALSE, EL_QUICKSAND_EMPTYING, -1, -1 }, + { + Xsand_stonesand_quickout_1, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 + }, + { + Xsand_stonesand_quickout_2, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 + }, #else { Xsand_stonesand_1, FALSE, FALSE, @@ -6024,7 +6032,10 @@ inline static boolean check_linear_animation_EM(int tile) switch (tile) { case Xsand_stonesand_1: + case Xsand_stonesand_quickout_1: case Xsand_sandstone_1: + case Xsand_stonein_1: + case Xsand_stoneout_1: case Xboom_1: case Xdynamite_1: case Ybug_w_n: @@ -6117,10 +6128,29 @@ void SetGfxAnimation_EM(struct GraphicInfo_EM *g_em, action == ACTION_FILLING || action == ACTION_EMPTYING); +#if 0 + if (tile == Xsand_stonesand_1 || + tile == Xsand_stonesand_2 || + tile == Xsand_stonesand_3 || + tile == Xsand_stonesand_4) + printf("::: 1: quicksand frame %d [%d]\n", GfxFrame[x][y], tile); +#endif + +#if 1 + if ((action_removing || check_linear_animation_EM(tile)) && frame_em == 0) + { + GfxFrame[x][y] = 0; + + // printf("::: resetting... [%d]\n", tile); + } +#else if (action_removing || check_linear_animation_EM(tile)) { GfxFrame[x][y] = frame_em; + + // printf("::: resetting... [%d]\n", tile); } +#endif else if (action_moving) { boolean is_backside = object_mapping[tile].is_backside; @@ -6145,8 +6175,21 @@ void SetGfxAnimation_EM(struct GraphicInfo_EM *g_em, else { GfxFrame[x][y]++; + + /* special case: animation for Xsand_stonesand_quickout_1/2 twice as fast */ + if (tile == Xsand_stonesand_quickout_1 || + tile == Xsand_stonesand_quickout_2) + GfxFrame[x][y]++; } +#if 0 + if (tile == Xsand_stonesand_1 || + tile == Xsand_stonesand_2 || + tile == Xsand_stonesand_3 || + tile == Xsand_stonesand_4) + printf("::: 2: quicksand frame %d [%d]\n", GfxFrame[x][y], tile); +#endif + #if 1 if (graphic_info[graphic].anim_global_sync) sync_frame = FrameCounter; -- 2.34.1