diff --git a/common/main/segnum.h b/common/main/segnum.h index dfd1f5acb..ff6b2260d 100644 --- a/common/main/segnum.h +++ b/common/main/segnum.h @@ -1,8 +1,8 @@ #pragma once #include "strictindex.h" -DEFINE_STRICT_INDEX_NUMBER(int16_t, segnum_t); -DEFINE_STRICT_INDEX_CONSTANT_TYPE(segment_magic_constant_t, segnum_t, int16_t); -DEFINE_STRICT_INDEX_CONSTANT_NUMBER(segment_magic_constant_t, -2, segment_exit); -DEFINE_STRICT_INDEX_CONSTANT_NUMBER(segment_magic_constant_t, -1, segment_none); +DEFINE_STRICT_INDEX_NUMBER(uint16_t, segnum_t); +DEFINE_STRICT_INDEX_CONSTANT_TYPE(segment_magic_constant_t, segnum_t, uint16_t); +DEFINE_STRICT_INDEX_CONSTANT_NUMBER(segment_magic_constant_t, 0xfffe, segment_exit); +DEFINE_STRICT_INDEX_CONSTANT_NUMBER(segment_magic_constant_t, 0xffff, segment_none); DEFINE_STRICT_INDEX_CONSTANT_NUMBER(segment_magic_constant_t, 0, segment_first); diff --git a/common/main/switch.h b/common/main/switch.h index adf125e48..060169a1d 100644 --- a/common/main/switch.h +++ b/common/main/switch.h @@ -74,7 +74,7 @@ struct v29_trigger fix time; sbyte link_num; short num_links; - array seg; + array seg; array side; } __pack__; @@ -85,7 +85,7 @@ struct v30_trigger sbyte pad; //keep alignment fix value; fix time; - array seg; + array seg; array side; } __pack__; #endif diff --git a/similar/main/ai.cpp b/similar/main/ai.cpp index 075705924..a213b1318 100644 --- a/similar/main/ai.cpp +++ b/similar/main/ai.cpp @@ -2158,7 +2158,7 @@ static void teleport_boss(const vobjptridx_t objp) // Pick a random segment from the list of boss-teleportable-to segments. rand_index = (d_rand() * Boss_teleport_segs.count()) >> 15; rand_segnum = Boss_teleport_segs[rand_index]; - Assert((rand_segnum >= 0) && (rand_segnum <= Highest_segment_index)); + Assert(rand_segnum <= Highest_segment_index); if (Game_mode & GM_MULTI) multi_send_boss_teleport(objp, rand_segnum); diff --git a/similar/main/fvi.cpp b/similar/main/fvi.cpp index 43cbe3a89..681c5fb56 100644 --- a/similar/main/fvi.cpp +++ b/similar/main/fvi.cpp @@ -633,9 +633,6 @@ int find_vector_intersection(const fvi_query &fq, fvi_info &hit_data) int hit_type; segnum_t hit_seg2; vms_vector hit_pnt; - - Assert(fq.startseg <= Highest_segment_index && fq.startseg >= 0); - fvi_hit_seg = segment_none; fvi_hit_side = -1; @@ -645,9 +642,9 @@ int find_vector_intersection(const fvi_query &fq, fvi_info &hit_data) //Assert(check_point_in_seg(p0,startseg,0).centermask==0); //start point not in seg // invalid segnum, so say there is no hit. - if(fq.startseg < 0 || fq.startseg > Highest_segment_index) + if(fq.startseg > Highest_segment_index) { - + Assert(fq.startseg <= Highest_segment_index); hit_data.hit_type = HIT_BAD_P0; hit_data.hit_pnt = *fq.p0; hit_data.hit_seg = hit_data.hit_side = hit_data.hit_object = 0; diff --git a/similar/main/gameseg.cpp b/similar/main/gameseg.cpp index 393500d12..a19165c3c 100644 --- a/similar/main/gameseg.cpp +++ b/similar/main/gameseg.cpp @@ -1647,11 +1647,11 @@ static void change_light(const vsegptridx_t segnum, int sidenum, int dir) for (int k=0; k<4; k++) { fix dl,new_l; dl = dir * j.vert_light[k] * DL_SCALE; - Assert(j.segnum >= 0 && j.segnum <= Highest_segment_index); Assert(j.sidenum >= 0 && j.sidenum < MAX_SIDES_PER_SEGMENT); - new_l = (Segments[j.segnum].sides[j.sidenum].uvls[k].l += dl); + const auto &&segp = vsegptr(j.segnum); + new_l = (segp->sides[j.sidenum].uvls[k].l += dl); if (new_l < 0) - Segments[j.segnum].sides[j.sidenum].uvls[k].l = 0; + segp->sides[j.sidenum].uvls[k].l = 0; } } }