Propagate MAX_OBJ_BITMAPS

This commit is contained in:
Kp 2016-07-10 04:11:35 +00:00
parent b6970e2a98
commit 0b6af7fcbe
5 changed files with 29 additions and 31 deletions

View file

@ -55,8 +55,9 @@ constexpr unsigned MAX_TEXTURES = 1200;
#define TMI_GOAL_HOARD 32 //this is used to remap the goals
#endif
#if defined(DXX_BUILD_DESCENT_I) || defined(DXX_BUILD_DESCENT_II)
#ifdef dsx
#include "inferno.h"
namespace dsx {
struct tmap_info : prohibit_void_ptr<tmap_info>
{
#if defined(DXX_BUILD_DESCENT_I)
@ -81,6 +82,7 @@ struct tmap_info : prohibit_void_ptr<tmap_info>
#define N_COCKPIT_BITMAPS 6
#endif
};
}
extern int Num_object_types;
@ -127,14 +129,14 @@ extern int8_t ObjType[MAX_OBJTYPE]; // Type of an object, such as Robot, eg if
extern int8_t ObjId[MAX_OBJTYPE]; // ID of a robot, within its class, eg if ObjType[11] == 3, then object #11 is the third robot
extern fix ObjStrength[MAX_OBJTYPE]; // initial strength of each object
#define MAX_OBJ_BITMAPS 210
constexpr unsigned MAX_OBJ_BITMAPS = 210;
#elif defined(DXX_BUILD_DESCENT_II)
//the model number of the marker object
extern int Marker_model_num;
extern int Robot_replacements_loaded;
#define MAX_OBJ_BITMAPS 610
constexpr unsigned MAX_OBJ_BITMAPS = 610;
extern unsigned N_ObjBitmaps;
extern int extra_bitmap_num;
#endif
@ -146,9 +148,7 @@ extern array<ushort, MAX_OBJ_BITMAPS> ObjBitmapPtrs;
extern int First_multi_bitmap_num;
void compute_average_rgb(grs_bitmap *bm, array<fix, 3> &rgb);
void load_robot_replacements(const d_fname &level_name);
#endif
#ifdef dsx
namespace dsx {
// Initializes all bitmaps from BITMAPS.TBL file.
int gamedata_read_tbl(int pc_shareware);
@ -165,13 +165,15 @@ int ds_load(int skip, const char * filename );
int compute_average_pixel(grs_bitmap *n);
#if defined(DXX_BUILD_DESCENT_II)
namespace dsx {
//these values are the number of each item in the release of d2
//extra items added after the release get written in an additional hamfile
static const unsigned N_D2_ROBOT_TYPES = 66;
static const unsigned N_D2_ROBOT_JOINTS = 1145;
static const unsigned N_D2_OBJBITMAPS = 422;
static const unsigned N_D2_OBJBITMAPPTRS = 502;
static const unsigned N_D2_WEAPON_TYPES = 62;
constexpr unsigned N_D2_ROBOT_TYPES = 66;
constexpr unsigned N_D2_ROBOT_JOINTS = 1145;
constexpr unsigned N_D2_OBJBITMAPS = 422;
constexpr unsigned N_D2_OBJBITMAPPTRS = 502;
constexpr unsigned N_D2_WEAPON_TYPES = 62;
}
#endif
#endif

View file

@ -964,7 +964,7 @@ static void bm_read_robot_ai(char *&arg, int skip)
//returns a pointer to the bitmap
static grs_bitmap *load_polymodel_bitmap(int skip, const char *name)
{
Assert(N_ObjBitmaps < MAX_OBJ_BITMAPS);
assert(N_ObjBitmaps < ObjBitmaps.size());
// Assert( N_ObjBitmaps == N_ObjBitmapPtrs );

View file

@ -545,10 +545,7 @@ static void load_hxm(const d_fname &hxmname)
{
repl_num = PHYSFSX_readInt(f);
auto v = PHYSFSX_readShort(f);
if (repl_num >= MAX_OBJ_BITMAPS)
{
}
else
if (repl_num < ObjBitmaps.size())
ObjBitmaps[repl_num].index = v;
}
}

View file

@ -1095,7 +1095,7 @@ void bm_read_robot_ai(int skip)
//returns a pointer to the bitmap
static grs_bitmap *load_polymodel_bitmap(int skip, const char *name)
{
Assert(N_ObjBitmaps < MAX_OBJ_BITMAPS);
assert(N_ObjBitmaps < ObjBitmaps.size());
// Assert( N_ObjBitmaps == N_ObjBitmapPtrs );
@ -1111,8 +1111,8 @@ static grs_bitmap *load_polymodel_bitmap(int skip, const char *name)
} else {
ObjBitmapPtrs[N_ObjBitmapPtrs++] = Effects[eclip_num].changing_object_texture;
}
Assert(N_ObjBitmaps < MAX_OBJ_BITMAPS);
Assert(N_ObjBitmapPtrs < MAX_OBJ_BITMAPS);
assert(N_ObjBitmaps < ObjBitmaps.size());
assert(N_ObjBitmapPtrs < ObjBitmapPtrs.size());
return NULL;
}
else {
@ -1121,8 +1121,8 @@ static grs_bitmap *load_polymodel_bitmap(int skip, const char *name)
Error("Bitmap <%s> is not 64x64",name);
ObjBitmapPtrs[N_ObjBitmapPtrs++] = N_ObjBitmaps;
N_ObjBitmaps++;
Assert(N_ObjBitmaps < MAX_OBJ_BITMAPS);
Assert(N_ObjBitmapPtrs < MAX_OBJ_BITMAPS);
assert(N_ObjBitmaps < ObjBitmaps.size());
assert(N_ObjBitmapPtrs < ObjBitmapPtrs.size());
return &GameBitmaps[ObjBitmaps[N_ObjBitmaps-1].index];
}
}

View file

@ -470,13 +470,13 @@ void bm_read_extra_robots(const char *fname, Mission::descent_version_type type)
i = PHYSFSX_readInt(fp);
t = PHYSFSX_readInt(fp);
if (N_D2_OBJBITMAPS+t >= MAX_OBJ_BITMAPS)
Error("Too many object bitmaps (%d) in <%s>. Max is %d.",t,fname,MAX_OBJ_BITMAPS-N_D2_OBJBITMAPS);
if (N_D2_OBJBITMAPS+t >= ObjBitmaps.size())
Error("Too many object bitmaps (%d) in <%s>. Max is %lu.", t, fname, ObjBitmaps.size() - N_D2_OBJBITMAPS);
bitmap_index_read_n(fp, partial_range(ObjBitmaps, N_D2_OBJBITMAPS, N_D2_OBJBITMAPS + t));
t = PHYSFSX_readInt(fp);
if (N_D2_OBJBITMAPPTRS+t >= MAX_OBJ_BITMAPS)
Error("Too many object bitmap pointers (%d) in <%s>. Max is %d.",t,fname,MAX_OBJ_BITMAPS-N_D2_OBJBITMAPPTRS);
if (N_D2_OBJBITMAPPTRS+t >= ObjBitmapPtrs.size())
Error("Too many object bitmap pointers (%d) in <%s>. Max is %lu.", t, fname, ObjBitmapPtrs.size() - N_D2_OBJBITMAPPTRS);
range_for (auto &i, partial_range(ObjBitmapPtrs, N_D2_OBJBITMAPPTRS, N_D2_OBJBITMAPPTRS + t))
i = PHYSFSX_readShort(fp);
}
@ -536,16 +536,16 @@ void load_robot_replacements(const d_fname &level_name)
t = PHYSFSX_readInt(fp); //read number of objbitmaps
for (j=0;j<t;j++) {
i = PHYSFSX_readInt(fp); //read objbitmap number
if (i<0 || i>=MAX_OBJ_BITMAPS)
Error("Object bitmap number (%d) out of range in (%s). Range = [0..%d].",i,static_cast<const char *>(level_name),MAX_OBJ_BITMAPS-1);
if (i < 0 || i >= ObjBitmaps.size())
Error("Object bitmap number (%d) out of range in (%s). Range = [0..%lu].", i, static_cast<const char *>(level_name), ObjBitmaps.size() - 1);
bitmap_index_read(fp, ObjBitmaps[i]);
}
t = PHYSFSX_readInt(fp); //read number of objbitmapptrs
for (j=0;j<t;j++) {
i = PHYSFSX_readInt(fp); //read objbitmapptr number
if (i<0 || i>=MAX_OBJ_BITMAPS)
Error("Object bitmap pointer (%d) out of range in (%s). Range = [0..%d].",i,static_cast<const char *>(level_name),MAX_OBJ_BITMAPS-1);
if (i < 0 || i >= ObjBitmapPtrs.size())
Error("Object bitmap pointer (%d) out of range in (%s). Range = [0..%lu].", i, static_cast<const char *>(level_name), ObjBitmapPtrs.size() - 1);
ObjBitmapPtrs[i] = PHYSFSX_readShort(fp);
}
Robot_replacements_loaded = 1;
@ -595,8 +595,7 @@ static bitmap_index read_extra_bitmap_iff(const char * filename )
// formerly load_exit_model_bitmap
static grs_bitmap *bm_load_extra_objbitmap(const char *name)
{
Assert(N_ObjBitmaps < MAX_OBJ_BITMAPS);
assert(N_ObjBitmaps < ObjBitmaps.size());
{
ObjBitmaps[N_ObjBitmaps] = read_extra_bitmap_iff(name);
@ -613,7 +612,7 @@ static grs_bitmap *bm_load_extra_objbitmap(const char *name)
Error("Bitmap <%s> is not 64x64",name);
ObjBitmapPtrs[N_ObjBitmaps] = N_ObjBitmaps;
N_ObjBitmaps++;
Assert(N_ObjBitmaps < MAX_OBJ_BITMAPS);
assert(N_ObjBitmaps < ObjBitmaps.size());
return &GameBitmaps[ObjBitmaps[N_ObjBitmaps-1].index];
}
}