Avoid slicing into segnum_t local

This commit is contained in:
Kp 2014-11-20 03:00:36 +00:00
parent e56fe128e0
commit 2c349136cc
25 changed files with 55 additions and 55 deletions

View file

@ -211,11 +211,11 @@ void create_bfs_list(segnum_t start_seg, segnum_t bfs_list[], unsigned &length,
while ((head != tail) && (head < max_segs)) {
segment *cursegp;
segnum_t curseg = bfs_list[tail++];
auto curseg = bfs_list[tail++];
cursegp = &Segments[curseg];
for (int i=0; i<MAX_SIDES_PER_SEGMENT; i++) {
segnum_t connected_seg = cursegp->children[i];
auto connected_seg = cursegp->children[i];
if (IS_CHILD(connected_seg) && (!visited[connected_seg])) {
if (segment_is_reachable(cursegp, i)) {

View file

@ -768,7 +768,7 @@ static void move_object_to_position(const vobjptridx_t objp, const vms_vector &n
fvi_info hit_info;
temp_viewer_obj = *Viewer;
segnum_t viewer_segnum = find_object_seg(&temp_viewer_obj);
auto viewer_segnum = find_object_seg(&temp_viewer_obj);
temp_viewer_obj.segnum = viewer_segnum;
// If the viewer is outside the mine, get him in the mine!
@ -827,7 +827,7 @@ static void move_object_to_position(const vobjptridx_t objp, const vms_vector &n
if (fate == HIT_WALL) {
objp->pos = hit_info.hit_pnt;
segnum_t new_segnum = find_object_seg(objp);
auto new_segnum = find_object_seg(objp);
Assert(new_segnum != segment_none);
obj_relink(objp, new_segnum);
} else {

View file

@ -102,7 +102,7 @@ int SaveGameData()
int saved_flag;
vms_vector save_pos = ConsoleObject->pos;
vms_matrix save_orient = ConsoleObject->orient;
segnum_t save_segnum = ConsoleObject->segnum;
auto save_segnum = ConsoleObject->segnum;
checkforgamext(game_filename);

View file

@ -119,7 +119,7 @@ static void set_average_light_at_vertex(int vnum)
segind = 0;
while (Segment_indices[segind] != segment_none) {
segnum_t segnum = Segment_indices[segind++];
auto segnum = Segment_indices[segind++];
segment *segp = &Segments[segnum];

View file

@ -1755,7 +1755,7 @@ void move_towards_segment_center(const vobjptr_t objp)
Make move to segment center smoother by using move_towards vector.
Bot's should not jump around and maybe even intersect with each other!
In case it breaks something what I do not see, yet, old code is still there. */
segnum_t segnum = objp->segnum;
auto segnum = objp->segnum;
vms_vector vec_to_center;
const auto segment_center = compute_segment_center(&Segments[segnum]);
@ -2113,7 +2113,7 @@ static void init_boss_segments(boss_special_segment_array_t &segptr, int size_ch
boss_objp->size = fixmul((F1_0/4)*3, boss_objp->size);
#endif
// -- Causes problems!! -- boss_objp->size = fixmul((F1_0/4)*3, boss_objp->size);
segnum_t original_boss_seg = boss_objp->segnum;
auto original_boss_seg = boss_objp->segnum;
original_boss_pos = boss_objp->pos;
head = 0;
tail = 0;

View file

@ -347,7 +347,7 @@ if ((objp->type == OBJ_ROBOT) && (objp->ctype.ai_info.behavior == AIB_RUN_FROM))
if (IS_CHILD(segp->children[snum]) && ((WALL_IS_DOORWAY(segp, snum) & WID_FLY_FLAG) || (ai_door_is_openable(objp, segp, snum))))
#endif
{
segnum_t this_seg = segp->children[snum];
auto this_seg = segp->children[snum];
#if defined(DXX_BUILD_DESCENT_II)
Assert(this_seg != segment_none);
if (((cur_seg == avoid_seg) || (this_seg == avoid_seg)) && (ConsoleObject->segnum == avoid_seg)) {
@ -582,7 +582,7 @@ if (num_points == 0)
for (i=1; i<num_points; i++) {
int sidenum;
segnum_t nextseg = psegs[i].segnum;
auto nextseg = psegs[i].segnum;
if (curseg != nextseg) {
for (sidenum=0; sidenum<MAX_SIDES_PER_SEGMENT; sidenum++)
@ -1026,7 +1026,7 @@ void ai_follow_path(const vobjptridx_t objp, int player_visibility, const vms_ve
{ // Done 1/8 ticks.
// If player on path (beyond point robot is now at), then create a new path.
point_seg *curpsp = &Point_segs[aip->hide_index];
segnum_t player_segnum = ConsoleObject->segnum;
auto player_segnum = ConsoleObject->segnum;
int i;
// This is probably being done every frame, which is wasteful.

View file

@ -1276,7 +1276,7 @@ static void add_segment_edges(automap *am, const vcsegptridx_t seg)
no_fade = 1;
color = am->wall_door_red;
} else if (!(WallAnims[Walls[seg->sides[sn].wall_num].clip_num].flags & WCF_HIDDEN)) {
segnum_t connected_seg = seg->children[sn];
auto connected_seg = seg->children[sn];
if (connected_seg != segment_none) {
auto connected_side = find_connect_side(seg, &Segments[connected_seg]);
int keytype = Walls[Segments[connected_seg].sides[connected_side].wall_num].keys;

View file

@ -456,7 +456,7 @@ static void write_matcen_text(PHYSFS_file *my_file)
if (Station[fuelcen_num].Type != SEGMENT_IS_ROBOTMAKER)
err_printf(my_file, "Error: Matcen %i corresponds to Station %i, which has type %i (%s).", i, fuelcen_num, Station[fuelcen_num].Type, Special_names[Station[fuelcen_num].Type]);
segnum_t segnum = Station[fuelcen_num].segnum;
auto segnum = Station[fuelcen_num].segnum;
// Find trigger for this materialization center.
for (j=0; j<Num_triggers; j++) {
@ -495,7 +495,7 @@ static void write_wall_text(PHYSFS_file *my_file)
PHYSFSX_printf(my_file, "Wall %03d points to invalid trigger %d\n",i,Walls[i].trigger);
#endif
segnum_t segnum = Walls[i].segnum;
auto segnum = Walls[i].segnum;
sidenum = Walls[i].sidenum;
if (Segments[segnum].sides[sidenum].wall_num != i)

View file

@ -530,7 +530,7 @@ static segnum_t choose_drop_segment()
cur_drop_depth = BASE_NET_DROP_DEPTH + ((d_rand() * BASE_NET_DROP_DEPTH*2) >> 15);
player_pos = &Objects[Players[Player_num].objnum].pos;
segnum_t player_seg = Objects[Players[Player_num].objnum].segnum;
auto player_seg = Objects[Players[Player_num].objnum].segnum;
segnum_t segnum = segment_none;
while ((segnum == segment_none) && (cur_drop_depth > BASE_NET_DROP_DEPTH/2)) {
@ -564,7 +564,7 @@ static segnum_t choose_drop_segment()
else { //don't drop in any children of control centers
int i;
for (i=0;i<6;i++) {
segnum_t ch = Segments[segnum].children[i];
auto ch = Segments[segnum].children[i];
if (IS_CHILD(ch) && Segments[ch].special == SEGMENT_IS_CONTROLCEN) {
segnum = segment_none;
break;
@ -611,7 +611,7 @@ void maybe_drop_net_powerup(int powerup_type)
if (Control_center_destroyed || Endlevel_sequence)
return;
segnum_t segnum = choose_drop_segment();
auto segnum = choose_drop_segment();
//--old-- segnum = (d_rand() * Highest_segment_index) >> 15;
//--old-- Assert((segnum >= 0) && (segnum <= Highest_segment_index));
//--old-- if (segnum < 0)
@ -661,7 +661,7 @@ static int object_nearby_aux(segnum_t segnum, int object_type, int object_id, in
return 1;
for (i=0; i<MAX_SIDES_PER_SEGMENT; i++) {
segnum_t seg2 = Segments[segnum].children[i];
auto seg2 = Segments[segnum].children[i];
if (seg2 != segment_none)
if (object_nearby_aux(seg2, object_type, object_id, depth-1))
@ -1279,7 +1279,7 @@ void do_exploding_wall_frame()
int i;
for (i=0;i<MAX_EXPLODING_WALLS;i++) {
segnum_t segnum = expl_wall_list[i].segnum;
auto segnum = expl_wall_list[i].segnum;
if (segnum != segment_none) {
int sidenum = expl_wall_list[i].sidenum;

View file

@ -431,7 +431,7 @@ static void robotmaker_proc( FuelCenter * robotcen )
// Whack on any robot or player in the matcen segment.
count=0;
segnum_t segnum = robotcen->segnum;
auto segnum = robotcen->segnum;
range_for (auto objp, objects_in(Segments[segnum]))
{
count++;

View file

@ -1238,7 +1238,7 @@ static int sphere_intersects_wall(const vms_vector &pnt,segnum_t segnum,fix rad,
if (face_hit_type) { //through this wall/door
//if what we have hit is a door, check the adjoining seg
segnum_t child = seg->children[side];
auto child = seg->children[side];
if (!IS_CHILD(child))
{

View file

@ -1661,7 +1661,7 @@ static int mark_player_path_to_segment(segnum_t segnum)
for (int i=1; i<player_path_length; i++) {
vms_vector seg_center;
segnum_t segnum = Point_segs[player_hide_index+i].segnum;
auto segnum = Point_segs[player_hide_index+i].segnum;
seg_center = Point_segs[player_hide_index+i].point;
auto obj = obj_create( OBJ_POWERUP, POW_ENERGY, segnum, seg_center, &vmd_identity_matrix, Powerup_info[POW_ENERGY].size, CT_POWERUP, MT_NONE, RT_POWERUP);

View file

@ -1022,7 +1022,7 @@ static int load_game_data(PHYSFS_file *LoadFile)
for (objnum_t i=0; i < MAX_OBJECTS; i++) {
Objects[i].next = Objects[i].prev = object_none;
if (Objects[i].type != OBJ_NONE) {
segnum_t objsegnum = Objects[i].segnum;
auto objsegnum = Objects[i].segnum;
if (objsegnum > Highest_segment_index) //bogus object
{

View file

@ -543,7 +543,7 @@ int check_segment_connections(void)
create_abs_vertex_lists(&num_faces, vertex_list, segnum, sidenum);
segnum_t csegnum = seg->children[sidenum];
auto csegnum = seg->children[sidenum];
if (csegnum >= 0) {
auto cseg = &Segments[csegnum];
@ -660,7 +660,7 @@ static segptridx_t trace_segs(const vms_vector &p0, const vsegptridx_t oldsegnum
side_dists[biggest_side] = 0;
// trace into adjacent segment:
segnum_t check = trace_segs(p0, seg->children[biggest_side], recursion_count + 1, visited);
auto check = trace_segs(p0, seg->children[biggest_side], recursion_count + 1, visited);
if (check != segment_none) //we've found a segment
return check;
}
@ -901,7 +901,7 @@ fix find_connected_distance(const vms_vector &p0, segnum_t seg0, const vms_vecto
int snum = sidenum;
if (WALL_IS_DOORWAY(segp, snum) & wid_flag) {
segnum_t this_seg = segp->children[snum];
auto this_seg = segp->children[snum];
if (!visited[this_seg]) {
seg_queue[qtail].start = cur_seg;
@ -1067,7 +1067,7 @@ void extract_shortpos(const vobjptridx_t objp, shortpos *spp, int swap_bytes)
spp->velz = INTEL_SHORT(spp->velz);
}
segnum_t segnum = spp->segment;
auto segnum = spp->segment;
Assert((segnum >= 0) && (segnum <= Highest_segment_index));
@ -1136,7 +1136,7 @@ void extract_quaternionpos(const vobjptridx_t objp, quaternionpos *qpp, int swap
objp->mtype.phys_info.velocity = qpp->vel;
objp->mtype.phys_info.rotvel = qpp->rotvel;
segnum_t segnum = qpp->segment;
auto segnum = qpp->segment;
Assert((segnum >= 0) && (segnum <= Highest_segment_index));
obj_relink(objp, segnum);
}
@ -1588,7 +1588,7 @@ unsigned set_segment_depths(int start_seg, array<ubyte, MAX_SEGMENTS> *limit, se
parent_depth = depth[curseg];
for (int i=0; i<MAX_SIDES_PER_SEGMENT; i++) {
segnum_t childnum = Segments[curseg].children[i];
auto childnum = Segments[curseg].children[i];
if (childnum != segment_none && childnum != segment_exit)
if (!limit || (*limit)[childnum])
if (!visited[childnum]) {

View file

@ -510,7 +510,7 @@ static void set_sound_sources()
#endif
if ((sn=Effects[ec].sound_num)!=-1) {
#if defined(DXX_BUILD_DESCENT_II)
segnum_t csegnum = seg->children[sidenum];
auto csegnum = seg->children[sidenum];
//check for sound on other side of wall. Don't add on
//both walls if sound travels through wall. If sound

View file

@ -1254,7 +1254,7 @@ static objptridx_t Laser_player_fire_spread_delay(const vobjptridx_t obj, enum w
Fate = find_vector_intersection(&fq, &hit_data);
segnum_t LaserSeg = hit_data.hit_seg;
auto LaserSeg = hit_data.hit_seg;
if (LaserSeg == segment_none) //some sort of annoying error
return object_none;

View file

@ -153,7 +153,7 @@ static void apply_light(g3s_lrgb obj_light_emission, segnum_t obj_seg, const vms
int apply_light = 0;
vertnum = render_vertices[vv];
segnum_t vsegnum = vert_segnum_list[vv];
auto vsegnum = vert_segnum_list[vv];
const auto &vertpos = Vertices[vertnum];
if (use_fcd_lighting && abs(obji_64) > F1_0*32)
@ -499,7 +499,7 @@ void set_dynamic_light(render_state_t &rstate)
// Create list of vertices that need to be looked at for setting of ambient light.
n_render_vertices = 0;
for (int render_seg=0; render_seg < rstate.N_render_segs; render_seg++) {
segnum_t segnum = rstate.Render_list[render_seg];
auto segnum = rstate.Render_list[render_seg];
if (segnum != segment_none) {
auto &vp = Segments[segnum].verts;
for (int v=0; v<MAX_VERTICES_PER_SEGMENT; v++) {

View file

@ -942,7 +942,7 @@ void multi_do_boss_teleport(const playernum_t pnum, const ubyte *buf)
Int3(); // Got boss actions for a robot who's not a boss?
return;
}
segnum_t teleport_segnum = b.where;
auto teleport_segnum = b.where;
if ((teleport_segnum < 0) || (teleport_segnum > Highest_segment_index))
{
Int3(); // See Rob

View file

@ -1853,7 +1853,7 @@ static void net_udp_read_object_packet( ubyte *data )
#endif
multi_object_rw_to_object((object_rw *)&data[loc], obj);
loc += sizeof(object_rw);
segnum_t segnum = obj->segnum;
auto segnum = obj->segnum;
obj->next = obj->prev = object_none;
obj->segnum = segment_none;
obj->attached_obj = object_none;

View file

@ -1970,7 +1970,7 @@ static int newdemo_read_frame_information(int rewrite)
break;
}
if (Newdemo_vcr_state != ND_STATE_PAUSED) {
segnum_t segnum = Viewer->segnum;
auto segnum = Viewer->segnum;
Viewer->next = Viewer->prev = object_none;
Viewer->segnum = segment_none;
@ -2000,7 +2000,7 @@ static int newdemo_read_frame_information(int rewrite)
break;
}
if (Newdemo_vcr_state != ND_STATE_PAUSED) {
segnum_t segnum = obj->segnum;
auto segnum = obj->segnum;
obj->next = obj->prev = object_none;
obj->segnum = segment_none;
@ -2229,7 +2229,7 @@ static int newdemo_read_frame_information(int rewrite)
obj->render_type = RT_POLYOBJ;
if (Newdemo_vcr_state != ND_STATE_PAUSED) {
if (Newdemo_vcr_state != ND_STATE_PAUSED) {
segnum_t segnum = obj->segnum;
auto segnum = obj->segnum;
obj->next = obj->prev = object_none;
obj->segnum = segment_none;
obj_link(obj,segnum);

View file

@ -1889,7 +1889,7 @@ void compress_objects(void)
if (Objects[start_i].type == OBJ_NONE) {
segnum_t segnum_copy = Objects[Highest_object_index].segnum;
auto segnum_copy = Objects[Highest_object_index].segnum;
obj_unlink(Highest_object_index);
@ -1946,7 +1946,7 @@ segnum_t find_object_seg(const vobjptr_t obj)
//callers should generally use find_vector_intersection()
int update_object_seg(const vobjptridx_t obj)
{
segnum_t newseg = find_object_seg(obj);
auto newseg = find_object_seg(obj);
if (newseg == segment_none)
return 0;

View file

@ -308,7 +308,7 @@ void do_physics_sim(const vobjptridx_t obj)
int obj_stopped=0;
fix moved_time; //how long objected moved before hit something
physics_info *pi;
segnum_t orig_segnum = obj->segnum;
auto orig_segnum = obj->segnum;
int bounced=0;
Assert(obj->movement_type == MT_PHYSICS);
@ -455,7 +455,7 @@ void do_physics_sim(const vobjptridx_t obj)
}
ipos = hit_info.hit_pnt;
segnum_t iseg = hit_info.hit_seg;
auto iseg = hit_info.hit_seg;
WallHitSide = hit_info.hit_side;
WallHitSeg = hit_info.hit_side_seg;
@ -468,7 +468,7 @@ void do_physics_sim(const vobjptridx_t obj)
Assert(!((fate==HIT_WALL) && ((WallHitSeg == segment_none) || (WallHitSeg > Highest_segment_index))));
save_pos = obj->pos; //save the object's position
segnum_t save_seg = obj->segnum;
auto save_seg = obj->segnum;
// update object's position and segment number
obj->pos = ipos;

View file

@ -1174,7 +1174,7 @@ static void build_object_lists(render_state_t &rstate)
rstate.render_obj_list[nn][0] = object_none;
for (nn=0;nn < rstate.N_render_segs;nn++) {
segnum_t segnum = rstate.Render_list[nn];
auto segnum = rstate.Render_list[nn];
if (segnum != segment_none) {
range_for (auto obj, objects_in(Segments[segnum]))
{
@ -1187,7 +1187,7 @@ static void build_object_lists(render_state_t &rstate)
if (obj->flags & OF_ATTACHED)
continue; //ignore this object
segnum_t new_segnum = segnum;
auto new_segnum = segnum;
list_pos = nn;
#if defined(DXX_BUILD_DESCENT_I)
@ -1243,7 +1243,7 @@ static void build_object_lists(render_state_t &rstate)
//now that there's a list for each segment, sort the items in those lists
for (nn=0;nn < rstate.N_render_segs;nn++) {
segnum_t segnum = rstate.Render_list[nn];
auto segnum = rstate.Render_list[nn];
if (segnum != segment_none) {
array<sort_item, SORT_LIST_SIZE> sort_list;
uint_fast32_t n_sort_items;
@ -1474,7 +1474,7 @@ static void build_segment_list(render_state_t &rstate, visited_twobit_array_t &v
rstate.processed[scnt] = true;
segnum_t segnum = rstate.Render_list[scnt];
auto segnum = rstate.Render_list[scnt];
rect *check_w = &rstate.render_windows[scnt];
if (segnum == segment_none) continue;
@ -1658,7 +1658,7 @@ void render_mine(segnum_t start_seg_num,fix eye_offset, int window_num)
#endif
{
for (uint_fast32_t i=0;i < rstate.N_render_segs;i++) {
segnum_t segnum = rstate.Render_list[i];
auto segnum = rstate.Render_list[i];
if (segnum != segment_none)
{
if (visited2[segnum])
@ -1702,7 +1702,7 @@ void render_mine(segnum_t start_seg_num,fix eye_offset, int window_num)
int objnp;
// Interpolation_method = 0;
segnum_t segnum = rstate.Render_list[nn];
auto segnum = rstate.Render_list[nn];
Current_seg_depth = rstate.Seg_depth[nn];
//if (!no_render_flag[nn])
@ -1761,7 +1761,7 @@ void render_mine(segnum_t start_seg_num,fix eye_offset, int window_num)
// First Pass: render opaque level geometry + transculent level geometry with high Alpha-Test func
for (nn=rstate.N_render_segs;nn--;)
{
segnum_t segnum = rstate.Render_list[nn];
auto segnum = rstate.Render_list[nn];
Current_seg_depth = rstate.Seg_depth[nn];
#if defined(DXX_BUILD_DESCENT_I)
@ -1820,7 +1820,7 @@ void render_mine(segnum_t start_seg_num,fix eye_offset, int window_num)
{
int objnp;
segnum_t segnum = rstate.Render_list[nn];
auto segnum = rstate.Render_list[nn];
Current_seg_depth = rstate.Seg_depth[nn];
#if defined(DXX_BUILD_DESCENT_I)
@ -1881,7 +1881,7 @@ void render_mine(segnum_t start_seg_num,fix eye_offset, int window_num)
// Third Pass - Render Transculent level geometry with normal Alpha-Func
for (nn=rstate.N_render_segs;nn--;)
{
segnum_t segnum = rstate.Render_list[nn];
auto segnum = rstate.Render_list[nn];
Current_seg_depth = rstate.Seg_depth[nn];
#if defined(DXX_BUILD_DESCENT_I)

View file

@ -120,7 +120,7 @@ static int do_light_on(sbyte trigger_num)
if (trigger_num != -1) {
for (i=0;i<Triggers[trigger_num].num_links;i++) {
int sidenum;
segnum_t segnum = Triggers[trigger_num].seg[i];
auto segnum = Triggers[trigger_num].seg[i];
sidenum = Triggers[trigger_num].side[i];
//check if tmap2 casts light before turning the light on. This
@ -144,7 +144,7 @@ static int do_light_off(sbyte trigger_num)
if (trigger_num != -1) {
for (i=0;i<Triggers[trigger_num].num_links;i++) {
int sidenum;
segnum_t segnum = Triggers[trigger_num].seg[i];
auto segnum = Triggers[trigger_num].seg[i];
sidenum = Triggers[trigger_num].side[i];
//check if tmap2 casts light before turning the light off. This

View file

@ -1633,7 +1633,7 @@ static void bng_process_segment(const vobjptr_t objp, fix damage, const vsegptri
}
for (i=0; i<MAX_SIDES_PER_SEGMENT; i++) {
segnum_t segnum = segp->children[i];
auto segnum = segp->children[i];
if (segnum != segment_none) {
if (!visited[segnum]) {