Use uint8_t for sidenum

This commit is contained in:
Kp 2016-12-24 22:44:08 +00:00
parent e07f5072cb
commit fa1f8488f0
6 changed files with 12 additions and 11 deletions

View file

@ -64,7 +64,7 @@ struct eclip : public prohibit_void_ptr<eclip>
fix dest_size; //3d size of explosion
int sound_num; //what sound this makes
segnum_t segnum;
int sidenum; //what seg & side, for one-shot clips
uint8_t sidenum; //what seg & side, for one-shot clips
};
constexpr int eclip_none = -1;

View file

@ -266,7 +266,7 @@ objptridx_t find_escort();
//Flickering light system
struct flickering_light {
segnum_t segnum;
short sidenum;
uint8_t sidenum;
uint32_t mask; // determines flicker pattern
fix timer; // time until next change
fix delay; // time between changes

View file

@ -269,14 +269,14 @@ namespace dsx {
struct delta_light : prohibit_void_ptr<delta_light>
{
segnum_t segnum;
sbyte sidenum;
uint8_t sidenum;
array<ubyte, 4> vert_light;
};
// Light at segnum:sidenum casts light on count sides beginning at index (in array Delta_lights)
struct dl_index {
segnum_t segnum;
sbyte sidenum;
uint8_t sidenum;
uint8_t count;
uint16_t index;
};

View file

@ -122,7 +122,7 @@ namespace dsx {
struct wall : public prohibit_void_ptr<wall>
{
segnum_t segnum;
int8_t sidenum; // Seg & side for this wall
uint8_t sidenum; // Seg & side for this wall
uint8_t type; // What kind of special wall.
fix hps; // "Hit points" of the wall.
wallnum_t linked_wall; // number of linked wall

View file

@ -90,12 +90,13 @@ void do_special_effects()
ec.frame_count++;
if (ec.frame_count >= ec.vc.num_frames) {
if (ec.flags & EF_ONE_SHOT) {
Assert(ec.segnum!=segment_none);
Assert(ec.sidenum>=0 && ec.sidenum<6);
Assert(ec.dest_bm_num!=0 && Segments[ec.segnum].sides[ec.sidenum].tmap_num2!=0);
Segments[ec.segnum].sides[ec.sidenum].tmap_num2 = ec.dest_bm_num | (Segments[ec.segnum].sides[ec.sidenum].tmap_num2&0xc000); //replace with destoyed
ec.flags &= ~EF_ONE_SHOT;
auto &seg = *vsegptr(ec.segnum);
ec.segnum = segment_none; //done with this
assert(ec.sidenum < 6);
auto &side = seg.sides[ec.sidenum];
assert(ec.dest_bm_num != 0 && side.tmap_num2 != 0);
side.tmap_num2 = ec.dest_bm_num | (side.tmap_num2 & 0xc000); //replace with destoyed
}
ec.frame_count = 0;
@ -169,7 +170,7 @@ void restart_effect(int effect_num)
}
DEFINE_VCLIP_SERIAL_UDT();
DEFINE_SERIAL_UDT_TO_MESSAGE(eclip, ec, (ec.vc, ec.time_left, ec.frame_count, ec.changing_wall_texture, ec.changing_object_texture, ec.flags, ec.crit_clip, ec.dest_bm_num, ec.dest_vclip, ec.dest_eclip, ec.dest_size, ec.sound_num, ec.segnum, serial::pad<2>(), ec.sidenum));
DEFINE_SERIAL_UDT_TO_MESSAGE(eclip, ec, (ec.vc, ec.time_left, ec.frame_count, ec.changing_wall_texture, ec.changing_object_texture, ec.flags, ec.crit_clip, ec.dest_bm_num, ec.dest_vclip, ec.dest_eclip, ec.dest_size, ec.sound_num, ec.segnum, serial::pad<2>(), ec.sidenum, serial::pad<3>()));
ASSERT_SERIAL_UDT_MESSAGE_SIZE(eclip, 130);
/*

View file

@ -1696,10 +1696,10 @@ static void change_light(const vsegptridx_t segnum, int sidenum, int dir)
continue;
range_for (auto &j, partial_const_range(Delta_lights, static_cast<uint_fast32_t>(i.index), static_cast<uint_fast32_t>(i.count)))
{
assert(j.sidenum < MAX_SIDES_PER_SEGMENT);
const auto &&segp = vsegptr(j.segnum);
auto &uvls = segp->sides[j.sidenum].uvls;
for (int k=0; k<4; k++) {
Assert(j.sidenum >= 0 && j.sidenum < MAX_SIDES_PER_SEGMENT);
auto &l = uvls[k].l;
const fix dl = ds * j.vert_light[k];
if ((l += dl) < 0)