Use wallnum_t in more places
This commit is contained in:
parent
bb5d1bb7e5
commit
0101f98905
|
@ -83,7 +83,7 @@ struct WALL_IS_DOORWAY_result_t
|
||||||
struct stuckobj : public prohibit_void_ptr<stuckobj>
|
struct stuckobj : public prohibit_void_ptr<stuckobj>
|
||||||
{
|
{
|
||||||
objnum_t objnum;
|
objnum_t objnum;
|
||||||
short wallnum;
|
wallnum_t wallnum;
|
||||||
object_signature_t signature;
|
object_signature_t signature;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ struct wall : public prohibit_void_ptr<wall>
|
||||||
int8_t sidenum; // Seg & side for this wall
|
int8_t sidenum; // Seg & side for this wall
|
||||||
uint8_t type; // What kind of special wall.
|
uint8_t type; // What kind of special wall.
|
||||||
fix hps; // "Hit points" of the wall.
|
fix hps; // "Hit points" of the wall.
|
||||||
int16_t linked_wall; // number of linked wall
|
wallnum_t linked_wall; // number of linked wall
|
||||||
ubyte flags; // Flags for the wall.
|
ubyte flags; // Flags for the wall.
|
||||||
ubyte state; // Opening, closing, etc.
|
ubyte state; // Opening, closing, etc.
|
||||||
uint8_t trigger; // Which trigger is associated with the wall.
|
uint8_t trigger; // Which trigger is associated with the wall.
|
||||||
|
@ -146,8 +146,8 @@ namespace dcx {
|
||||||
struct active_door : public prohibit_void_ptr<active_door>
|
struct active_door : public prohibit_void_ptr<active_door>
|
||||||
{
|
{
|
||||||
int n_parts; // for linked walls
|
int n_parts; // for linked walls
|
||||||
array<short, 2> front_wallnum; // front wall numbers for this door
|
array<wallnum_t, 2> front_wallnum; // front wall numbers for this door
|
||||||
array<short, 2> back_wallnum; // back wall numbers for this door
|
array<wallnum_t, 2> back_wallnum; // back wall numbers for this door
|
||||||
fix time; // how long been opening, closing, waiting
|
fix time; // how long been opening, closing, waiting
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -158,8 +158,8 @@ namespace dsx {
|
||||||
#if defined(DXX_BUILD_DESCENT_II)
|
#if defined(DXX_BUILD_DESCENT_II)
|
||||||
struct cloaking_wall : public prohibit_void_ptr<cloaking_wall>
|
struct cloaking_wall : public prohibit_void_ptr<cloaking_wall>
|
||||||
{
|
{
|
||||||
short front_wallnum; // front wall numbers for this door
|
wallnum_t front_wallnum; // front wall numbers for this door
|
||||||
short back_wallnum; // back wall numbers for this door
|
wallnum_t back_wallnum; // back wall numbers for this door
|
||||||
array<fix, 4> front_ls; // front wall saved light values
|
array<fix, 4> front_ls; // front wall saved light values
|
||||||
array<fix, 4> back_ls; // back wall saved light values
|
array<fix, 4> back_ls; // back wall saved light values
|
||||||
fix time; // how long been cloaking or decloaking
|
fix time; // how long been cloaking or decloaking
|
||||||
|
|
|
@ -358,7 +358,6 @@ int trigger_dialog_handler(UI_DIALOG *dlg,const d_event &event, trigger_dialog *
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
short Markedwall;
|
|
||||||
int keypress = 0;
|
int keypress = 0;
|
||||||
int rval = 0;
|
int rval = 0;
|
||||||
|
|
||||||
|
@ -380,7 +379,7 @@ int trigger_dialog_handler(UI_DIALOG *dlg,const d_event &event, trigger_dialog *
|
||||||
// If we change walls, we need to reset the ui code for all
|
// If we change walls, we need to reset the ui code for all
|
||||||
// of the checkboxes that control the wall flags.
|
// of the checkboxes that control the wall flags.
|
||||||
//------------------------------------------------------------
|
//------------------------------------------------------------
|
||||||
Markedwall = Markedsegp->sides[Markedside].wall_num;
|
const auto Markedwall = Markedsegp->sides[Markedside].wall_num;
|
||||||
auto trigger_num = (Markedwall != wall_none) ? Walls[Markedwall].trigger : trigger_none;
|
auto trigger_num = (Markedwall != wall_none) ? Walls[Markedwall].trigger : trigger_none;
|
||||||
|
|
||||||
if (t->old_trigger_num != trigger_num)
|
if (t->old_trigger_num != trigger_num)
|
||||||
|
|
|
@ -81,7 +81,7 @@ static int Current_door_type=1;
|
||||||
|
|
||||||
struct count_wall
|
struct count_wall
|
||||||
{
|
{
|
||||||
short wallnum;
|
wallnum_t wallnum;
|
||||||
segnum_t segnum;
|
segnum_t segnum;
|
||||||
short sidenum;
|
short sidenum;
|
||||||
};
|
};
|
||||||
|
@ -192,7 +192,7 @@ int wall_add_illusion()
|
||||||
}
|
}
|
||||||
|
|
||||||
static int GotoPrevWall() {
|
static int GotoPrevWall() {
|
||||||
int current_wall;
|
wallnum_t current_wall;
|
||||||
|
|
||||||
if (Cursegp->sides[Curside].wall_num == wall_none)
|
if (Cursegp->sides[Curside].wall_num == wall_none)
|
||||||
current_wall = Num_walls;
|
current_wall = Num_walls;
|
||||||
|
@ -200,7 +200,6 @@ static int GotoPrevWall() {
|
||||||
current_wall = Cursegp->sides[Curside].wall_num;
|
current_wall = Cursegp->sides[Curside].wall_num;
|
||||||
|
|
||||||
current_wall--;
|
current_wall--;
|
||||||
if (current_wall < 0) current_wall = Num_walls-1;
|
|
||||||
if (current_wall >= Num_walls) current_wall = Num_walls-1;
|
if (current_wall >= Num_walls) current_wall = Num_walls-1;
|
||||||
|
|
||||||
if (Walls[current_wall].segnum == segment_none) {
|
if (Walls[current_wall].segnum == segment_none) {
|
||||||
|
@ -219,14 +218,11 @@ static int GotoPrevWall() {
|
||||||
|
|
||||||
|
|
||||||
static int GotoNextWall() {
|
static int GotoNextWall() {
|
||||||
int current_wall;
|
auto current_wall = Cursegp->sides[Curside].wall_num; // It's ok to be -1 because it will immediately become 0
|
||||||
|
|
||||||
current_wall = Cursegp->sides[Curside].wall_num; // It's ok to be -1 because it will immediately become 0
|
|
||||||
|
|
||||||
current_wall++;
|
current_wall++;
|
||||||
|
|
||||||
if (current_wall >= Num_walls) current_wall = 0;
|
if (current_wall >= Num_walls) current_wall = 0;
|
||||||
if (current_wall < 0) current_wall = 0;
|
|
||||||
|
|
||||||
if (Walls[current_wall].segnum == segment_none) {
|
if (Walls[current_wall].segnum == segment_none) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -635,7 +631,6 @@ int wall_restore_all()
|
||||||
// Remove a specific side.
|
// Remove a specific side.
|
||||||
int wall_remove_side(const vsegptridx_t seg, short side)
|
int wall_remove_side(const vsegptridx_t seg, short side)
|
||||||
{
|
{
|
||||||
int lower_wallnum;
|
|
||||||
if (IS_CHILD(seg->children[side]) && IS_CHILD(seg->sides[side].wall_num)) {
|
if (IS_CHILD(seg->children[side]) && IS_CHILD(seg->sides[side].wall_num)) {
|
||||||
const auto &&csegp = vsegptr(seg->children[side]);
|
const auto &&csegp = vsegptr(seg->children[side]);
|
||||||
auto Connectside = find_connect_side(seg, csegp);
|
auto Connectside = find_connect_side(seg, csegp);
|
||||||
|
@ -645,7 +640,7 @@ int wall_remove_side(const vsegptridx_t seg, short side)
|
||||||
|
|
||||||
// Remove walls 'wall_num' and connecting side 'wall_num'
|
// Remove walls 'wall_num' and connecting side 'wall_num'
|
||||||
// from Walls array.
|
// from Walls array.
|
||||||
lower_wallnum = seg->sides[side].wall_num;
|
auto lower_wallnum = seg->sides[side].wall_num;
|
||||||
if (csegp->sides[Connectside].wall_num < lower_wallnum)
|
if (csegp->sides[Connectside].wall_num < lower_wallnum)
|
||||||
lower_wallnum = csegp->sides[Connectside].wall_num;
|
lower_wallnum = csegp->sides[Connectside].wall_num;
|
||||||
|
|
||||||
|
|
|
@ -354,7 +354,8 @@ void wall_open_door(const vsegptridx_t seg, int side)
|
||||||
newdemo_record_door_opening(seg, side);
|
newdemo_record_door_opening(seg, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w->linked_wall != -1) {
|
if (w->linked_wall != wall_none)
|
||||||
|
{
|
||||||
wall *w2;
|
wall *w2;
|
||||||
|
|
||||||
w2 = &Walls[w->linked_wall];
|
w2 = &Walls[w->linked_wall];
|
||||||
|
@ -493,7 +494,7 @@ void start_wall_cloak(const vsegptridx_t seg, int side)
|
||||||
|
|
||||||
d->front_wallnum = seg->sides[side].wall_num;
|
d->front_wallnum = seg->sides[side].wall_num;
|
||||||
d->back_wallnum = cwall_num;
|
d->back_wallnum = cwall_num;
|
||||||
Assert(w->linked_wall == -1);
|
Assert(w->linked_wall == wall_none);
|
||||||
|
|
||||||
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
||||||
const auto cp = compute_center_point_on_side(seg, side );
|
const auto cp = compute_center_point_on_side(seg, side );
|
||||||
|
@ -574,7 +575,7 @@ void start_wall_decloak(const vsegptridx_t seg, int side)
|
||||||
|
|
||||||
d->front_wallnum = seg->sides[side].wall_num;
|
d->front_wallnum = seg->sides[side].wall_num;
|
||||||
d->back_wallnum = csegp->sides[Connectside].wall_num;
|
d->back_wallnum = csegp->sides[Connectside].wall_num;
|
||||||
Assert(w->linked_wall == -1);
|
Assert(w->linked_wall == wall_none);
|
||||||
|
|
||||||
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
|
||||||
const auto cp = compute_center_point_on_side(seg, side );
|
const auto cp = compute_center_point_on_side(seg, side );
|
||||||
|
@ -827,7 +828,8 @@ void wall_close_door(const vsegptridx_t seg, int side)
|
||||||
newdemo_record_door_opening(seg, side);
|
newdemo_record_door_opening(seg, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w->linked_wall != -1) {
|
if (w->linked_wall != wall_none)
|
||||||
|
{
|
||||||
Int3(); //don't think we ever used linked walls
|
Int3(); //don't think we ever used linked walls
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1223,7 +1225,7 @@ static void do_cloaking_wall_frame(int cloaking_wall_num)
|
||||||
d = &CloakingWalls[cloaking_wall_num];
|
d = &CloakingWalls[cloaking_wall_num];
|
||||||
wfront = &Walls[d->front_wallnum];
|
wfront = &Walls[d->front_wallnum];
|
||||||
wback = NULL;
|
wback = NULL;
|
||||||
if (d->back_wallnum > -1)
|
if (d->back_wallnum != wall_none)
|
||||||
wback = &Walls[d->back_wallnum];
|
wback = &Walls[d->back_wallnum];
|
||||||
|
|
||||||
old_cloak = wfront->cloak_value;
|
old_cloak = wfront->cloak_value;
|
||||||
|
@ -1296,7 +1298,7 @@ static void do_decloaking_wall_frame(int cloaking_wall_num)
|
||||||
d = &CloakingWalls[cloaking_wall_num];
|
d = &CloakingWalls[cloaking_wall_num];
|
||||||
wfront = &Walls[d->front_wallnum];
|
wfront = &Walls[d->front_wallnum];
|
||||||
wback = NULL;
|
wback = NULL;
|
||||||
if (d->back_wallnum > -1)
|
if (d->back_wallnum != wall_none)
|
||||||
wback = &Walls[d->back_wallnum];
|
wback = &Walls[d->back_wallnum];
|
||||||
|
|
||||||
old_cloak = wfront->cloak_value;
|
old_cloak = wfront->cloak_value;
|
||||||
|
@ -1371,7 +1373,7 @@ void wall_frame_process()
|
||||||
|
|
||||||
// set flags to fix occasional netgame problem where door is waiting to close but open flag isn't set
|
// set flags to fix occasional netgame problem where door is waiting to close but open flag isn't set
|
||||||
w->flags |= WALL_DOOR_OPENED;
|
w->flags |= WALL_DOOR_OPENED;
|
||||||
if (d->back_wallnum[0] > -1)
|
if (d->back_wallnum[0] != wall_none)
|
||||||
Walls[d->back_wallnum[0]].flags |= WALL_DOOR_OPENED;
|
Walls[d->back_wallnum[0]].flags |= WALL_DOOR_OPENED;
|
||||||
|
|
||||||
if (d->time > DOOR_WAIT_TIME)
|
if (d->time > DOOR_WAIT_TIME)
|
||||||
|
@ -1431,7 +1433,8 @@ void add_stuck_object(const vobjptridx_t objp, const vsegptr_t segp, int sidenum
|
||||||
objp->flags |= OF_SHOULD_BE_DEAD;
|
objp->flags |= OF_SHOULD_BE_DEAD;
|
||||||
range_for (auto &i, Stuck_objects)
|
range_for (auto &i, Stuck_objects)
|
||||||
{
|
{
|
||||||
if (i.wallnum == -1) {
|
if (i.wallnum == wall_none)
|
||||||
|
{
|
||||||
i.wallnum = wallnum;
|
i.wallnum = wallnum;
|
||||||
i.objnum = objp;
|
i.objnum = objp;
|
||||||
i.signature = objp->signature;
|
i.signature = objp->signature;
|
||||||
|
@ -1452,11 +1455,11 @@ void remove_obsolete_stuck_objects(void)
|
||||||
|
|
||||||
objnum = d_tick_count % MAX_STUCK_OBJECTS;
|
objnum = d_tick_count % MAX_STUCK_OBJECTS;
|
||||||
|
|
||||||
if (Stuck_objects[objnum].wallnum != -1)
|
if (Stuck_objects[objnum].wallnum != wall_none)
|
||||||
if ((Stuck_objects[objnum].wallnum == 0) || (vcobjptr(Stuck_objects[objnum].objnum)->signature != Stuck_objects[objnum].signature))
|
if ((Stuck_objects[objnum].wallnum == 0) || (vcobjptr(Stuck_objects[objnum].objnum)->signature != Stuck_objects[objnum].signature))
|
||||||
{
|
{
|
||||||
Num_stuck_objects--;
|
Num_stuck_objects--;
|
||||||
Stuck_objects[objnum].wallnum = -1;
|
Stuck_objects[objnum].wallnum = wall_none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1475,11 +1478,11 @@ void remove_obsolete_stuck_objects(void)
|
||||||
|
|
||||||
objnum = d_tick_count % MAX_STUCK_OBJECTS;
|
objnum = d_tick_count % MAX_STUCK_OBJECTS;
|
||||||
|
|
||||||
if (Stuck_objects[objnum].wallnum != -1)
|
if (Stuck_objects[objnum].wallnum != wall_none)
|
||||||
if ((Walls[Stuck_objects[objnum].wallnum].state != WALL_DOOR_CLOSED) || (vcobjptr(Stuck_objects[objnum].objnum)->signature != Stuck_objects[objnum].signature)) {
|
if ((Walls[Stuck_objects[objnum].wallnum].state != WALL_DOOR_CLOSED) || (vcobjptr(Stuck_objects[objnum].objnum)->signature != Stuck_objects[objnum].signature)) {
|
||||||
Num_stuck_objects--;
|
Num_stuck_objects--;
|
||||||
vobjptr(Stuck_objects[objnum].objnum)->lifeleft = F1_0/8;
|
vobjptr(Stuck_objects[objnum].objnum)->lifeleft = F1_0/8;
|
||||||
Stuck_objects[objnum].wallnum = -1;
|
Stuck_objects[objnum].wallnum = wall_none;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1508,8 +1511,10 @@ void kill_stuck_objects(int wallnum)
|
||||||
#endif
|
#endif
|
||||||
objp->lifeleft = DXX_WEAPON_LIFELEFT;
|
objp->lifeleft = DXX_WEAPON_LIFELEFT;
|
||||||
}
|
}
|
||||||
Stuck_objects[i].wallnum = -1;
|
Stuck_objects[i].wallnum = wall_none;
|
||||||
} else if (Stuck_objects[i].wallnum != -1) {
|
}
|
||||||
|
else if (Stuck_objects[i].wallnum != wall_none)
|
||||||
|
{
|
||||||
Num_stuck_objects++;
|
Num_stuck_objects++;
|
||||||
}
|
}
|
||||||
// Ok, this is awful, but we need to do things whenever a door opens/closes/disappears, etc.
|
// Ok, this is awful, but we need to do things whenever a door opens/closes/disappears, etc.
|
||||||
|
@ -1525,7 +1530,7 @@ void kill_stuck_objects(int wallnum)
|
||||||
void init_stuck_objects(void)
|
void init_stuck_objects(void)
|
||||||
{
|
{
|
||||||
range_for (auto &i, Stuck_objects)
|
range_for (auto &i, Stuck_objects)
|
||||||
i.wallnum = -1;
|
i.wallnum = wall_none;
|
||||||
Num_stuck_objects = 0;
|
Num_stuck_objects = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1535,12 +1540,13 @@ void clear_stuck_objects(void)
|
||||||
{
|
{
|
||||||
range_for (auto &i, Stuck_objects)
|
range_for (auto &i, Stuck_objects)
|
||||||
{
|
{
|
||||||
if (i.wallnum != -1) {
|
if (i.wallnum != wall_none)
|
||||||
|
{
|
||||||
const auto &&objp = vobjptr(i.objnum);
|
const auto &&objp = vobjptr(i.objnum);
|
||||||
if (objp->type == OBJ_WEAPON && get_weapon_id(objp) == weapon_id_type::FLARE_ID)
|
if (objp->type == OBJ_WEAPON && get_weapon_id(objp) == weapon_id_type::FLARE_ID)
|
||||||
objp->lifeleft = F1_0/8;
|
objp->lifeleft = F1_0/8;
|
||||||
|
|
||||||
i.wallnum = -1;
|
i.wallnum = wall_none;
|
||||||
Num_stuck_objects--;
|
Num_stuck_objects--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue