From 457e98ec0803cd9005a522018e7c255454d1e915 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sat, 1 Apr 2017 17:18:26 +0200 Subject: [PATCH] fixed sound for charging level time (energy) for MM engine --- sounds/snd_classic/fuel.wav | Bin 0 -> 2744 bytes src/conf_snd.c | 3 +++ src/game.c | 41 ++++++++++++++++++++++++++++++++++++ src/game.h | 4 ++++ src/game_mm/export.h | 3 +++ src/game_mm/mm_game.c | 14 ++++++------ src/tools.c | 18 ++++++++++++++++ src/tools.h | 2 ++ 8 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 sounds/snd_classic/fuel.wav diff --git a/sounds/snd_classic/fuel.wav b/sounds/snd_classic/fuel.wav new file mode 100644 index 0000000000000000000000000000000000000000..cc9463c9d8b97d93645bf38adf33ee8214035fd9 GIT binary patch literal 2744 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 literal 0 HcmV?d00001 diff --git a/src/conf_snd.c b/src/conf_snd.c index e2d7a530..957259b5 100644 --- a/src/conf_snd.c +++ b/src/conf_snd.c @@ -240,8 +240,11 @@ struct ConfigInfo sound_config[] = /* sounds for other game actions */ { "game.starting", UNDEFINED_FILENAME }, + { "game.leveltime_charging", "fuel.wav" }, + { "game.health_charging", UNDEFINED_FILENAME }, { "game.running_out_of_time", "gong.wav" }, { "game.leveltime_bonus", "sirr.wav" }, + { "game.health_bonus", "sirr.wav" }, { "game.losing", "lachen.wav" }, { "game.winning", UNDEFINED_FILENAME }, { "game.sokoban_solving", "buing.wav" }, diff --git a/src/game.c b/src/game.c index cc6f27d6..de844f42 100644 --- a/src/game.c +++ b/src/game.c @@ -14695,6 +14695,47 @@ void PlayLevelSound_SP(int xx, int yy, int element_sp, int action_sp) PlayLevelSoundElementAction(x, y, element, action); } +void PlayLevelSound_MM(int xx, int yy, int element_mm, int action_mm) +{ + int element = map_element_MM_to_RND(element_mm); + int action = map_action_MM_to_RND(action_mm); + int offset = 0; + int x = xx - offset; + int y = yy - offset; + + PlayLevelSoundElementAction(x, y, element, action); +} + +void PlaySound_MM(int sound_mm) +{ + int sound = map_sound_MM_to_RND(sound_mm); + + if (sound == SND_UNDEFINED) + return; + + PlaySound(sound); +} + +void PlaySoundLoop_MM(int sound_mm) +{ + int sound = map_sound_MM_to_RND(sound_mm); + + if (sound == SND_UNDEFINED) + return; + + PlaySoundLoop(sound); +} + +void StopSound_MM(int sound_mm) +{ + int sound = map_sound_MM_to_RND(sound_mm); + + if (sound == SND_UNDEFINED) + return; + + StopSound(sound); +} + void RaiseScore(int value) { local_player->score += value; diff --git a/src/game.h b/src/game.h index 0e87912e..c6f74f86 100644 --- a/src/game.h +++ b/src/game.h @@ -384,6 +384,10 @@ void ScrollLevel(int, int); void InitPlayLevelSound(); void PlayLevelSound_EM(int, int, int, int); void PlayLevelSound_SP(int, int, int, int); +void PlayLevelSound_MM(int, int, int, int); +void PlaySound_MM(int); +void PlaySoundLoop_MM(int); +void StopSound_MM(int); void RaiseScore(int); void RaiseScoreElement(int); diff --git a/src/game_mm/export.h b/src/game_mm/export.h index a46f89d5..1ea220b4 100644 --- a/src/game_mm/export.h +++ b/src/game_mm/export.h @@ -50,6 +50,9 @@ #define EL_MM_EMPTY_NATIVE 0 #define EL_DF_EMPTY_NATIVE 304 +/* sounds */ +#define SND_MM_GAME_LEVELTIME_CHARGING 0 + /* ------------------------------------------------------------------------- */ /* data structure definitions */ diff --git a/src/game_mm/mm_game.c b/src/game_mm/mm_game.c index a649d233..ed84121d 100644 --- a/src/game_mm/mm_game.c +++ b/src/game_mm/mm_game.c @@ -378,13 +378,14 @@ void InitGameActions_MM() OpenDoor(DOOR_OPEN_ALL); #endif - if (setup.sound_loops) - PlaySoundExt(SND_FUEL, SOUND_MAX_VOLUME, SOUND_MAX_RIGHT, SND_CTRL_PLAY_LOOP); - for (i = 0; i <= num_init_game_frames; i++) { - if (!setup.sound_loops) - PlaySoundStereo(SND_FUEL, SOUND_MAX_RIGHT); + if (i == num_init_game_frames) + StopSound_MM(SND_MM_GAME_LEVELTIME_CHARGING); + else if (setup.sound_loops) + PlaySoundLoop_MM(SND_MM_GAME_LEVELTIME_CHARGING); + else + PlaySound_MM(SND_MM_GAME_LEVELTIME_CHARGING); game_mm.energy_left = native_mm_level.time * i / num_init_game_frames; @@ -407,9 +408,6 @@ void InitGameActions_MM() #endif } - if (setup.sound_loops) - StopSound(SND_FUEL); - #if 0 if (setup.sound_music && num_bg_loops) PlayMusic(level_nr % num_bg_loops); diff --git a/src/tools.c b/src/tools.c index ee00da19..e1ff8140 100644 --- a/src/tools.c +++ b/src/tools.c @@ -7396,6 +7396,24 @@ int map_element_MM_to_RND(int element_mm) EL_EMPTY); } +int map_action_MM_to_RND(int action_mm) +{ + /* all MM actions are defined to exactly match their RND counterparts */ + return action_mm; +} + +int map_sound_MM_to_RND(int sound_mm) +{ + switch (sound_mm) + { + case SND_MM_GAME_LEVELTIME_CHARGING: + return SND_GAME_LEVELTIME_CHARGING; + + default: + return SND_UNDEFINED; + } +} + int map_mm_wall_element(int element) { return (element >= EL_MM_STEEL_WALL_START && diff --git a/src/tools.h b/src/tools.h index b1f67434..7727ab69 100644 --- a/src/tools.h +++ b/src/tools.h @@ -224,6 +224,8 @@ int map_action_SP_to_RND(int); int map_element_RND_to_MM(int); int map_element_MM_to_RND(int); +int map_action_MM_to_RND(int); +int map_sound_MM_to_RND(int); int map_mm_wall_element(int); int map_mm_wall_element_editor(int); -- 2.34.1