Use wallnum_t in more places

This commit is contained in:
Kp 2016-02-06 22:12:54 +00:00
parent bb5d1bb7e5
commit 0101f98905
4 changed files with 34 additions and 34 deletions

View file

@ -83,7 +83,7 @@ struct WALL_IS_DOORWAY_result_t
struct stuckobj : public prohibit_void_ptr<stuckobj>
{
objnum_t objnum;
short wallnum;
wallnum_t wallnum;
object_signature_t signature;
};
@ -125,7 +125,7 @@ struct wall : public prohibit_void_ptr<wall>
int8_t sidenum; // Seg & side for this wall
uint8_t type; // What kind of special 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 state; // Opening, closing, etc.
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>
{
int n_parts; // for linked walls
array<short, 2> front_wallnum; // front wall numbers for this door
array<short, 2> back_wallnum; // back wall numbers for this door
array<wallnum_t, 2> front_wallnum; // front 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
};
@ -158,8 +158,8 @@ namespace dsx {
#if defined(DXX_BUILD_DESCENT_II)
struct cloaking_wall : public prohibit_void_ptr<cloaking_wall>
{
short front_wallnum; // front wall numbers for this door
short back_wallnum; // back wall numbers for this door
wallnum_t front_wallnum; // front 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> back_ls; // back wall saved light values
fix time; // how long been cloaking or decloaking

View file

@ -358,7 +358,6 @@ int trigger_dialog_handler(UI_DIALOG *dlg,const d_event &event, trigger_dialog *
default:
break;
}
short Markedwall;
int keypress = 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
// 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;
if (t->old_trigger_num != trigger_num)

View file

@ -81,7 +81,7 @@ static int Current_door_type=1;
struct count_wall
{
short wallnum;
wallnum_t wallnum;
segnum_t segnum;
short sidenum;
};
@ -192,7 +192,7 @@ int wall_add_illusion()
}
static int GotoPrevWall() {
int current_wall;
wallnum_t current_wall;
if (Cursegp->sides[Curside].wall_num == wall_none)
current_wall = Num_walls;
@ -200,7 +200,6 @@ static int GotoPrevWall() {
current_wall = Cursegp->sides[Curside].wall_num;
current_wall--;
if (current_wall < 0) current_wall = Num_walls-1;
if (current_wall >= Num_walls) current_wall = Num_walls-1;
if (Walls[current_wall].segnum == segment_none) {
@ -219,14 +218,11 @@ static int GotoPrevWall() {
static int GotoNextWall() {
int current_wall;
current_wall = Cursegp->sides[Curside].wall_num; // It's ok to be -1 because it will immediately become 0
auto current_wall = Cursegp->sides[Curside].wall_num; // It's ok to be -1 because it will immediately become 0
current_wall++;
if (current_wall >= Num_walls) current_wall = 0;
if (current_wall < 0) current_wall = 0;
if (Walls[current_wall].segnum == segment_none) {
return 0;
@ -635,7 +631,6 @@ int wall_restore_all()
// Remove a specific 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)) {
const auto &&csegp = vsegptr(seg->children[side]);
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'
// 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)
lower_wallnum = csegp->sides[Connectside].wall_num;

View file

@ -354,7 +354,8 @@ void wall_open_door(const vsegptridx_t seg, int side)
newdemo_record_door_opening(seg, side);
}
if (w->linked_wall != -1) {
if (w->linked_wall != wall_none)
{
wall *w2;
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->back_wallnum = cwall_num;
Assert(w->linked_wall == -1);
Assert(w->linked_wall == wall_none);
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
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->back_wallnum = csegp->sides[Connectside].wall_num;
Assert(w->linked_wall == -1);
Assert(w->linked_wall == wall_none);
if ( Newdemo_state != ND_STATE_PLAYBACK ) {
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);
}
if (w->linked_wall != -1) {
if (w->linked_wall != wall_none)
{
Int3(); //don't think we ever used linked walls
}
else
@ -1223,7 +1225,7 @@ static void do_cloaking_wall_frame(int cloaking_wall_num)
d = &CloakingWalls[cloaking_wall_num];
wfront = &Walls[d->front_wallnum];
wback = NULL;
if (d->back_wallnum > -1)
if (d->back_wallnum != wall_none)
wback = &Walls[d->back_wallnum];
old_cloak = wfront->cloak_value;
@ -1296,7 +1298,7 @@ static void do_decloaking_wall_frame(int cloaking_wall_num)
d = &CloakingWalls[cloaking_wall_num];
wfront = &Walls[d->front_wallnum];
wback = NULL;
if (d->back_wallnum > -1)
if (d->back_wallnum != wall_none)
wback = &Walls[d->back_wallnum];
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
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;
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;
range_for (auto &i, Stuck_objects)
{
if (i.wallnum == -1) {
if (i.wallnum == wall_none)
{
i.wallnum = wallnum;
i.objnum = objp;
i.signature = objp->signature;
@ -1452,11 +1455,11 @@ void remove_obsolete_stuck_objects(void)
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))
{
Num_stuck_objects--;
Stuck_objects[objnum].wallnum = -1;
Stuck_objects[objnum].wallnum = wall_none;
}
}
#endif
@ -1475,11 +1478,11 @@ void remove_obsolete_stuck_objects(void)
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)) {
Num_stuck_objects--;
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
objp->lifeleft = DXX_WEAPON_LIFELEFT;
}
Stuck_objects[i].wallnum = -1;
} else if (Stuck_objects[i].wallnum != -1) {
Stuck_objects[i].wallnum = wall_none;
}
else if (Stuck_objects[i].wallnum != wall_none)
{
Num_stuck_objects++;
}
// 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)
{
range_for (auto &i, Stuck_objects)
i.wallnum = -1;
i.wallnum = wall_none;
Num_stuck_objects = 0;
}
@ -1535,12 +1540,13 @@ void clear_stuck_objects(void)
{
range_for (auto &i, Stuck_objects)
{
if (i.wallnum != -1) {
if (i.wallnum != wall_none)
{
const auto &&objp = vobjptr(i.objnum);
if (objp->type == OBJ_WEAPON && get_weapon_id(objp) == weapon_id_type::FLARE_ID)
objp->lifeleft = F1_0/8;
i.wallnum = -1;
i.wallnum = wall_none;
Num_stuck_objects--;
}
}