diff --git a/common/main/fwd-vclip.h b/common/main/fwd-vclip.h new file mode 100644 index 000000000..6c6b86a6c --- /dev/null +++ b/common/main/fwd-vclip.h @@ -0,0 +1,34 @@ +/* + * This file is part of the DXX-Rebirth project . + * It is copyright by its individual contributors, as recorded in the + * project's Git history. See COPYING.txt at the top level for license + * terms and a link to the Git history. + */ +#pragma once + +#include +#include + +#include "dxxsconf.h" +#include "dsx-ns.h" + +using std::array; + +namespace dcx { +struct vclip; +extern unsigned Num_vclips; +} + +#ifdef dsx +namespace dsx { +#if defined(DXX_BUILD_DESCENT_I) +#define VCLIP_MAXNUM 70 +#elif defined(DXX_BUILD_DESCENT_II) +#define VCLIP_MAXNUM 110 +#endif + +using d_vclip_array = array; +extern d_vclip_array Vclip; +#undef VCLIP_MAXNUM +} +#endif diff --git a/common/main/vclip.h b/common/main/vclip.h index 5ada24b02..73a1fff28 100644 --- a/common/main/vclip.h +++ b/common/main/vclip.h @@ -29,9 +29,8 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #ifdef __cplusplus #include "dxxsconf.h" -#include "dsx-ns.h" -#include "compiler-array.h" #include "fwd-valptridx.h" +#include "fwd-vclip.h" #define VCLIP_SMALL_EXPLOSION 2 @@ -43,13 +42,10 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #ifdef dsx namespace dsx { #if defined(DXX_BUILD_DESCENT_I) -constexpr std::integral_constant VCLIP_MAXNUM{}; #elif defined(DXX_BUILD_DESCENT_II) #define VCLIP_WATER_HIT 84 #define VCLIP_AFTERBURNER_BLOB 95 #define VCLIP_MONITOR_STATIC 99 - -constexpr std::integral_constant VCLIP_MAXNUM{}; #endif } @@ -72,14 +68,9 @@ struct vclip : public prohibit_void_ptr constexpr std::integral_constant vclip_none{}; -extern unsigned Num_vclips; - } namespace dsx { -using d_vclip_array = array; -extern d_vclip_array Vclip; - // draw an object which renders as a vclip. void draw_vclip_object(grs_canvas &, vcobjptridx_t obj, fix timeleft, int lighted, const vclip &); void draw_weapon_vclip(grs_canvas &, vcobjptridx_t obj); diff --git a/similar/main/bmread.cpp b/similar/main/bmread.cpp index e2e6b2aaa..083944158 100644 --- a/similar/main/bmread.cpp +++ b/similar/main/bmread.cpp @@ -1126,7 +1126,7 @@ static void bm_read_vclip(int skip) #endif { bitmap_index bi; - Assert(clip_num < VCLIP_MAXNUM); + assert(clip_num < Vclip.size()); #if defined(DXX_BUILD_DESCENT_II) if (clip_num >= Num_vclips) diff --git a/similar/main/gamesave.cpp b/similar/main/gamesave.cpp index 3a027239f..6c235ef4a 100644 --- a/similar/main/gamesave.cpp +++ b/similar/main/gamesave.cpp @@ -166,7 +166,7 @@ static array Save_pof_names; static int convert_vclip(int vc) { if (vc < 0) return vc; - if ((vc < VCLIP_MAXNUM) && (Vclip[vc].num_frames != ~0u)) + if (vc < Vclip.size() && (Vclip[vc].num_frames != ~0u)) return vc; return 0; } diff --git a/similar/main/multi.cpp b/similar/main/multi.cpp index c5c5e208c..d16ab27e4 100644 --- a/similar/main/multi.cpp +++ b/similar/main/multi.cpp @@ -5429,7 +5429,7 @@ void init_hoard_data() //Create orb vclip orb_vclip = Num_vclips++; - Assert(Num_vclips <= VCLIP_MAXNUM); + assert(Num_vclips <= Vclip.size()); Vclip[orb_vclip].play_time = F1_0/2; Vclip[orb_vclip].num_frames = n_orb_frames; Vclip[orb_vclip].frame_time = Vclip[orb_vclip].play_time / Vclip[orb_vclip].num_frames;