X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=0312c695cccb3ba28d2a893c667d9ecadd79b058;hb=62e8f84edbffc67d743bb2d6afff258079f041d5;hp=d096ac20d4e1f6492ba149ab8345ca157947a4af;hpb=9a7426789c04bf396df78eb915522f9e57af985e;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index d096ac20..0312c695 100644 --- a/src/game.c +++ b/src/game.c @@ -76,6 +76,7 @@ #define DX_TIME (DX + XX_TIME) #define DY_TIME (DY + YY_TIME) +#if 0 #define IS_LOOP_SOUND(s) ((s) == SND_BD_MAGIC_WALL_RUNNING || \ (s) == SND_BD_BUTTERFLY_MOVING || \ (s) == SND_BD_FIREFLY_MOVING || \ @@ -98,6 +99,7 @@ (s) == SND_PIG_MOVING || \ (s) == SND_DRAGON_MOVING || \ (s) == SND_DRAGON_BREATHING_FIRE) +#endif /* values for player movement speed (which is in fact a delay value) */ #define MOVE_DELAY_NORMAL_SPEED 8 @@ -128,6 +130,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 +753,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 +6507,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)