From 514c63efadd589a542723c04a35db6fb9259a61d Mon Sep 17 00:00:00 2001 From: Kp Date: Mon, 24 Aug 2020 01:31:28 +0000 Subject: [PATCH] Expose both MAX_SOUNDS in both games --- common/main/sounds.h | 38 ++++++++++++++++++-------------------- similar/main/bm.cpp | 11 +++++------ similar/main/bmread.cpp | 7 ++----- similar/main/piggy.cpp | 4 ++-- 4 files changed, 27 insertions(+), 33 deletions(-) diff --git a/common/main/sounds.h b/common/main/sounds.h index de1e15c58..56ee0693e 100644 --- a/common/main/sounds.h +++ b/common/main/sounds.h @@ -28,6 +28,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define _SOUNDS_H #include "digi.h" +#include #ifdef dsx #if defined(DXX_BUILD_DESCENT_I) @@ -39,6 +40,16 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define SOUND_GOOD_SELECTION_SECONDARY SOUND_GOOD_SELECTION_SECONDARY_FULL_DATA #define SOUND_CHEATER SOUND_CHEATER_FULL_DATA #endif + +namespace d1x { +constexpr std::integral_constant MAX_SOUNDS{}; +} +namespace d2x { +//-------------------------------------------------------------- +// bad to have sound 255! +constexpr std::integral_constant MAX_SOUNDS{}; +} + //------------------- List of sound effects -------------------- namespace dcx { @@ -70,6 +81,8 @@ enum sound_effect : unsigned SOUND_LASER_HIT_CLUTTER = 30, SOUND_CONTROL_CENTER_DESTROYED = 31, SOUND_EXPLODING_WALL = 31, // one long sound + SOUND_BIG_ENDLEVEL_EXPLOSION = SOUND_EXPLODING_WALL, + SOUND_TUNNEL_EXPLOSION = SOUND_EXPLODING_WALL, SOUND_CONTROL_CENTER_WARNING_SIREN = 32, SOUND_MINE_BLEW_UP = 33, SOUND_FUSION_WARMUP = 34, @@ -89,6 +102,7 @@ enum sound_effect : unsigned SOUND_ALREADY_SELECTED = 155, // Adam: New sound number here! MK, 01/30/95 SOUND_BAD_SELECTION = 156, SOUND_CLOAK_OFF = 161, // sound when cloak goes away + SOUND_WALL_CLOAK_OFF = SOUND_CLOAK_OFF, SOUND_INVULNERABILITY_OFF = 163, // sound when invulnerability goes away ROBOT_SEE_SOUND_DEFAULT = 170, ROBOT_ATTACK_SOUND_DEFAULT = 171, @@ -134,6 +148,7 @@ enum sound_effect : unsigned SOUND_SHIP_IN_WATERFALL = 158, // under a waterfall SOUND_CLOAK_ON = 160, // USED FOR WALL CLOAK + SOUND_WALL_CLOAK_ON = SOUND_CLOAK_ON, SOUND_AMBIENT_LAVA = 222, SOUND_AMBIENT_WATER = 223, @@ -159,30 +174,13 @@ enum sound_effect : unsigned }; } -#endif - -#define SOUND_BIG_ENDLEVEL_EXPLOSION SOUND_EXPLODING_WALL -#define SOUND_TUNNEL_EXPLOSION SOUND_EXPLODING_WALL - -#if defined(DXX_BUILD_DESCENT_I) -constexpr std::integral_constant MAX_SOUNDS{}; -#elif defined(DXX_BUILD_DESCENT_II) -#define SOUND_WALL_CLOAK_ON SOUND_CLOAK_ON -#define SOUND_WALL_CLOAK_OFF SOUND_CLOAK_OFF - -//-------------------------------------------------------------- -// bad to have sound 255! -constexpr std::integral_constant MAX_SOUNDS{}; -#endif +namespace dsx { // I think it would be nice to have a scrape sound... //#define SOUND_PLAYER_SCRAPE_WALL 72 -#if defined(DXX_BUILD_DESCENT_I) || defined(DXX_BUILD_DESCENT_II) -#include "dxxsconf.h" -#include - -extern std::array Sounds, AltSounds; +extern std::array Sounds, AltSounds; +} constexpr std::integral_constant sound_none{}; #endif diff --git a/similar/main/bm.cpp b/similar/main/bm.cpp index 3707082b4..8deeb1e2b 100644 --- a/similar/main/bm.cpp +++ b/similar/main/bm.cpp @@ -70,8 +70,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "partial_range.h" #include -std::array Sounds, AltSounds; - unsigned NumTextures; #if DXX_USE_EDITOR @@ -79,6 +77,7 @@ int Num_object_subtypes = 1; #endif namespace dsx { +std::array Sounds, AltSounds; #if defined(DXX_BUILD_DESCENT_I) int Num_total_object_types; @@ -175,8 +174,8 @@ void properties_read_cmp(d_vclip_array &Vclip, PHYSFS_File * fp) range_for (tmap_info &ti, TmapInfo) tmap_info_read(ti, fp); - PHYSFS_read(fp, Sounds, sizeof(Sounds[0]), Sounds.size()); - PHYSFS_read(fp, AltSounds, sizeof(AltSounds[0]), AltSounds.size()); + PHYSFS_read(fp, Sounds, sizeof(Sounds[0]), MAX_SOUNDS); + PHYSFS_read(fp, AltSounds, sizeof(AltSounds[0]), MAX_SOUNDS); Num_vclips = PHYSFSX_readInt(fp); range_for (vclip &vc, Vclip) @@ -233,8 +232,8 @@ void properties_read_cmp(d_vclip_array &Vclip, PHYSFS_File * fp) Num_cockpits = PHYSFSX_readInt(fp); bitmap_index_read_n(fp, cockpit_bitmap); - PHYSFS_read(fp, Sounds, sizeof(Sounds[0]), Sounds.size()); - PHYSFS_read(fp, AltSounds, sizeof(AltSounds[0]), AltSounds.size()); + PHYSFS_read(fp, Sounds, sizeof(Sounds[0]), MAX_SOUNDS); + PHYSFS_read(fp, AltSounds, sizeof(AltSounds[0]), MAX_SOUNDS); Num_total_object_types = PHYSFSX_readInt(fp); PHYSFS_read( fp, ObjType, sizeof(ubyte), MAX_OBJTYPE ); diff --git a/similar/main/bmread.cpp b/similar/main/bmread.cpp index 7ec23d9ff..8fad9bde4 100644 --- a/similar/main/bmread.cpp +++ b/similar/main/bmread.cpp @@ -488,11 +488,8 @@ int gamedata_read_tbl(d_vclip_array &Vclip, int pc_shareware) load_palette(DEFAULT_PIG_PALETTE,-2,0); //special: tell palette code which pig is loaded #endif - for (unsigned i = 0; i < MAX_SOUNDS; ++i) - { - Sounds[i] = 255; - AltSounds[i] = 255; - } + Sounds.fill(255); + AltSounds.fill(255); DXX_MAKE_VAR_UNDEFINED(TmapInfo); range_for (auto &ti, TmapInfo) diff --git a/similar/main/piggy.cpp b/similar/main/piggy.cpp index 9218f85f0..b9a4bee84 100644 --- a/similar/main/piggy.cpp +++ b/similar/main/piggy.cpp @@ -1166,9 +1166,9 @@ static int piggy_is_needed(int soundnum) if (!CGameArg.SysLowMem) return 1; - range_for (auto i, AltSounds) + for (const auto i : AltSounds) { - if (i < 255 && Sounds[i] == soundnum) + if (i < Sounds.size() && Sounds[i] == soundnum) return 1; } return 0;