diff --git a/common/main/wall.h b/common/main/wall.h index 819418022..f34739dca 100644 --- a/common/main/wall.h +++ b/common/main/wall.h @@ -83,7 +83,7 @@ struct WALL_IS_DOORWAY_result_t struct stuckobj : public prohibit_void_ptr { objnum_t objnum; - short wallnum; + wallnum_t wallnum; object_signature_t signature; }; @@ -125,7 +125,7 @@ struct wall : public prohibit_void_ptr 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 { int n_parts; // for linked walls - array front_wallnum; // front wall numbers for this door - array back_wallnum; // back wall numbers for this door + array front_wallnum; // front wall numbers for this door + array 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 { - 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 front_ls; // front wall saved light values array back_ls; // back wall saved light values fix time; // how long been cloaking or decloaking diff --git a/similar/editor/eswitch.cpp b/similar/editor/eswitch.cpp index 3ca35c081..b0a6975de 100644 --- a/similar/editor/eswitch.cpp +++ b/similar/editor/eswitch.cpp @@ -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) diff --git a/similar/editor/medwall.cpp b/similar/editor/medwall.cpp index 64bc5f1ac..74252e7fe 100644 --- a/similar/editor/medwall.cpp +++ b/similar/editor/medwall.cpp @@ -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; diff --git a/similar/main/wall.cpp b/similar/main/wall.cpp index 04447a692..4050f9b4f 100644 --- a/similar/main/wall.cpp +++ b/similar/main/wall.cpp @@ -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--; } }