Reworked wall_toggle() to work with index for segnum instead of a pointer, hopefully making the consistency check less error prone
This commit is contained in:
parent
4e299e4f83
commit
0df7146226
|
@ -3,6 +3,7 @@ D1X-Rebirth Changelog
|
|||
20110924
|
||||
--------
|
||||
main/fvi.c, main/gameseg.c, main/object.c: Consistency check for segment number in find_vector_intersection() and obj_create(); Added more debug output for invalid segment numberin get_seg_masks()
|
||||
main/cntrlcen.c, main/newdemo.c, main/switch.c, main/wall.c, main/wall.h: Reworked wall_toggle() to work with index for segnum instead of a pointer, hopefully making the consistency check less error prone
|
||||
|
||||
20110923
|
||||
--------
|
||||
|
|
|
@ -210,7 +210,7 @@ void do_controlcen_destroyed_stuff(object *objp)
|
|||
|
||||
// Must toggle walls whether it is a boss or control center.
|
||||
for (i=0;i<ControlCenterTriggers.num_links;i++)
|
||||
wall_toggle(&Segments[ControlCenterTriggers.seg[i]], ControlCenterTriggers.side[i]);
|
||||
wall_toggle(ControlCenterTriggers.seg[i], ControlCenterTriggers.side[i]);
|
||||
|
||||
// And start the countdown stuff.
|
||||
Control_center_destroyed = 1;
|
||||
|
|
|
@ -1935,7 +1935,7 @@ int newdemo_read_frame_information(int rewrite)
|
|||
break;
|
||||
}
|
||||
if (Newdemo_vcr_state != ND_STATE_PAUSED)
|
||||
wall_toggle(&Segments[segnum], side);
|
||||
wall_toggle(segnum, side);
|
||||
break;
|
||||
|
||||
case ND_EVENT_CONTROL_CENTER_DESTROYED:
|
||||
|
|
|
@ -87,7 +87,7 @@ void do_link(sbyte trigger_num)
|
|||
|
||||
if (trigger_num != -1) {
|
||||
for (i=0;i<Triggers[trigger_num].num_links;i++) {
|
||||
wall_toggle(&Segments[Triggers[trigger_num].seg[i]], Triggers[trigger_num].side[i]);
|
||||
wall_toggle(Triggers[trigger_num].seg[i], Triggers[trigger_num].side[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
20
main/wall.c
20
main/wall.c
|
@ -877,28 +877,32 @@ int wall_hit_process(segment *seg, int side, fix damage, int playernum, object *
|
|||
|
||||
//-----------------------------------------------------------------
|
||||
// Opens doors/destroys wall/shuts off triggers.
|
||||
void wall_toggle(segment *seg, int side)
|
||||
void wall_toggle(int segnum, int side)
|
||||
{
|
||||
int wall_num;
|
||||
|
||||
Assert( seg-Segments <= Highest_segment_index);
|
||||
Assert( side < MAX_SIDES_PER_SEGMENT );
|
||||
if (segnum < 0 || segnum > Highest_segment_index || side < 0 || side >= MAX_SIDES_PER_SEGMENT)
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
Warning("Can't toggle side %d (%i) of\nsegment %d (%i)!\n", side, MAX_SIDES_PER_SEGMENT, segnum, Highest_segment_index);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
wall_num = seg->sides[side].wall_num;
|
||||
wall_num = Segments[segnum].sides[side].wall_num;
|
||||
|
||||
if (wall_num == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( Newdemo_state == ND_STATE_RECORDING )
|
||||
newdemo_record_wall_toggle(seg-Segments, side );
|
||||
newdemo_record_wall_toggle(segnum, side );
|
||||
|
||||
if (Walls[wall_num].type == WALL_BLASTABLE)
|
||||
wall_destroy(seg, side);
|
||||
wall_destroy(&Segments[segnum], side);
|
||||
|
||||
if ((Walls[wall_num].type == WALL_DOOR) && (Walls[wall_num].state == WALL_DOOR_CLOSED))
|
||||
wall_open_door(seg, side);
|
||||
|
||||
wall_open_door(&Segments[segnum], side);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -215,7 +215,7 @@ extern void wall_close_door(int wall_num);
|
|||
extern int wall_hit_process(segment *seg, int side, fix damage, int playernum, object *obj );
|
||||
|
||||
// Opens/destroys specified door.
|
||||
extern void wall_toggle(segment *seg, int side);
|
||||
extern void wall_toggle(int segnum, int side);
|
||||
|
||||
// Tidy up Walls array for load/save purposes.
|
||||
extern void reset_walls();
|
||||
|
|
Loading…
Reference in a new issue