Move Debris_object_count into d_level_object_state

This commit is contained in:
Kp 2018-04-02 03:39:51 +00:00
parent 64690c3ce8
commit f869a16e35
2 changed files with 5 additions and 13 deletions

View file

@ -568,6 +568,7 @@ DXX_VALPTRIDX_DEFINE_GLOBAL_FACTORIES(object, obj, Objects);
struct d_level_object_state
{
unsigned num_objects = 0;
unsigned Debris_object_count = 0;
array<objnum_t, MAX_OBJECTS> free_obj_list;
auto &get_objects()
{

View file

@ -936,15 +936,6 @@ object_signature_t obj_get_signature()
}
}
}
namespace dcx {
static unsigned Debris_object_count;
}
namespace dsx {
//returns the number of a free object, updating Highest_object_index.
//Generally, obj_create() should be called to get an object, since it
//fills in important fields and does the linking.
@ -1092,7 +1083,7 @@ imobjptridx_t obj_create(object_type_t type, ubyte id,vmsegptridx_t segnum,const
// Some consistency checking. FIXME: Add more debug output here to probably trace all possible occurances back.
Assert(ctype <= CT_CNTRLCEN);
if (type==OBJ_DEBRIS && Debris_object_count>=Max_debris_objects && !PERSISTENT_DEBRIS)
if (type == OBJ_DEBRIS && ObjectState.Debris_object_count >= Max_debris_objects && !PERSISTENT_DEBRIS)
return object_none;
if (get_seg_masks(vcvertptr, pos, segnum, 0).centermask != 0)
@ -1186,7 +1177,7 @@ imobjptridx_t obj_create(object_type_t type, ubyte id,vmsegptridx_t segnum,const
obj->ctype.expl_info.next_attach = obj->ctype.expl_info.prev_attach = obj->ctype.expl_info.attach_parent = object_none;
if (obj->type == OBJ_DEBRIS)
Debris_object_count++;
++ ObjectState.Debris_object_count;
return obj;
}
@ -1246,7 +1237,7 @@ void obj_delete(const vmobjptridx_t obj)
obj_detach_all(Objects, obj);
if (obj->type == OBJ_DEBRIS)
Debris_object_count--;
-- ObjectState.Debris_object_count;
obj_unlink(Objects.vmptr, Segments.vmptr, obj);
DXX_POISON_VAR(*obj, 0xfa);
@ -1972,6 +1963,7 @@ void compress_objects(void)
//compressed. resets free list, marks unused objects as unused
void reset_objects(d_level_object_state &ObjectState, const unsigned n_objs)
{
ObjectState.Debris_object_count = 0;
ObjectState.num_objects = n_objs;
assert(ObjectState.num_objects > 0);
auto &Objects = ObjectState.get_objects();
@ -1985,7 +1977,6 @@ void reset_objects(d_level_object_state &ObjectState, const unsigned n_objs)
DXX_POISON_VAR(obj, 0xfd);
obj.type = OBJ_NONE;
}
Debris_object_count = 0;
}
//Tries to find a segment for an object, using find_point_seg()