X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=89d556d3a057070deb4f8ceb6fdfdd32d52778fa;hb=9c6293f12f9dea224bff9050050253e9f52e3819;hp=d096ac20d4e1f6492ba149ab8345ca157947a4af;hpb=9a7426789c04bf396df78eb915522f9e57af985e;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index d096ac20..89d556d3 100644 --- a/src/game.c +++ b/src/game.c @@ -76,29 +76,6 @@ #define DX_TIME (DX + XX_TIME) #define DY_TIME (DY + YY_TIME) -#define IS_LOOP_SOUND(s) ((s) == SND_BD_MAGIC_WALL_RUNNING || \ - (s) == SND_BD_BUTTERFLY_MOVING || \ - (s) == SND_BD_FIREFLY_MOVING || \ - (s) == SND_SP_SNIKSNAK_MOVING || \ - (s) == SND_SP_ELECTRON_MOVING || \ - (s) == SND_DYNAMITE_BURNING || \ - (s) == SND_BUG_MOVING || \ - (s) == SND_SPACESHIP_MOVING || \ - (s) == SND_YAMYAM_MOVING || \ - (s) == SND_YAMYAM_WAITING || \ - (s) == SND_ROBOT_WHEEL_RUNNING || \ - (s) == SND_MAGIC_WALL_RUNNING || \ - (s) == SND_BALLOON_MOVING || \ - (s) == SND_MOLE_MOVING || \ - (s) == SND_TIMEGATE_WHEEL_RUNNING || \ - (s) == SND_CONVEYOR_BELT_RUNNING || \ - (s) == SND_DYNABOMB_BURNING || \ - (s) == SND_PACMAN_MOVING || \ - (s) == SND_PENGUIN_MOVING || \ - (s) == SND_PIG_MOVING || \ - (s) == SND_DRAGON_MOVING || \ - (s) == SND_DRAGON_BREATHING_FIRE) - /* values for player movement speed (which is in fact a delay value) */ #define MOVE_DELAY_NORMAL_SPEED 8 #define MOVE_DELAY_HIGH_SPEED 4 @@ -128,6 +105,36 @@ static void HandleGameButtons(struct GadgetInfo *); static struct GadgetInfo *game_gadget[NUM_GAME_BUTTONS]; +static boolean is_loop_sound[NUM_SOUND_EFFECTS]; +static boolean is_loop_sound_initialized = FALSE; +static int loop_sounds[] = +{ + SND_BD_MAGIC_WALL_RUNNING, + SND_BD_BUTTERFLY_MOVING, + SND_BD_FIREFLY_MOVING, + SND_SP_SNIKSNAK_MOVING, + SND_SP_ELECTRON_MOVING, + SND_DYNAMITE_BURNING, + SND_BUG_MOVING, + SND_SPACESHIP_MOVING, + SND_YAMYAM_MOVING, + SND_YAMYAM_WAITING, + SND_ROBOT_WHEEL_RUNNING, + SND_MAGIC_WALL_RUNNING, + SND_BALLOON_MOVING, + SND_MOLE_MOVING, + SND_TIMEGATE_WHEEL_RUNNING, + SND_CONVEYOR_BELT_RUNNING, + SND_DYNABOMB_BURNING, + SND_PACMAN_MOVING, + SND_PENGUIN_MOVING, + SND_PIG_MOVING, + SND_DRAGON_MOVING, + SND_DRAGON_BREATHING_FIRE +}; + +#define IS_LOOP_SOUND(x) (is_loop_sound[x]) + #ifdef DEBUG @@ -721,6 +728,20 @@ void InitGame() } } + /* initialize sound effect properties */ + if (!is_loop_sound_initialized) + { + int i; + + for (i=0; i= SCR_FIELDX+silence_distance || - sy < -silence_distance || sy >= SCR_FIELDY+silence_distance) + sx < -silence_distance || sx >= SCR_FIELDX + silence_distance || + sy < -silence_distance || sy >= SCR_FIELDY + silence_distance) return; volume = PSND_MAX_VOLUME; #if !defined(PLATFORM_MSDOS) - stereo = (sx - SCR_FIELDX/2) * 12; + stereo_position = (sx - SCR_FIELDX / 2) * 12; #else - stereo = PSND_MIDDLE + (2 * sx - (SCR_FIELDX - 1)) * 5; - if (stereo > PSND_MAX_RIGHT) - stereo = PSND_MAX_RIGHT; - if (stereo < PSND_MAX_LEFT) - stereo = PSND_MAX_LEFT; + stereo_position = PSND_MIDDLE + (2 * sx - (SCR_FIELDX - 1)) * 5; + if (stereo_position > PSND_MAX_RIGHT) + stereo_position = PSND_MAX_RIGHT; + if (stereo_position < PSND_MAX_LEFT) + stereo_position = PSND_MAX_LEFT; #endif if (!IN_SCR_FIELD(sx, sy)) @@ -6460,7 +6481,7 @@ void PlaySoundLevel(int x, int y, int sound_nr) volume -= volume * (dx > dy ? dx : dy) / silence_distance; } - PlaySoundExt(sound_nr, volume, stereo, SND_CTRL_PLAY_SOUND); + PlaySoundExt(nr, volume, stereo_position, type); } void RaiseScore(int value)