Use sidenum_t in more places
This commit is contained in:
parent
91c9055c90
commit
68268e9a1f
|
@ -66,7 +66,7 @@ extern void digi_play_sample( int sndnum, fix max_volume );
|
|||
extern void digi_play_sample_once( int sndnum, fix max_volume );
|
||||
#if defined(DXX_BUILD_DESCENT_I) || defined(DXX_BUILD_DESCENT_II)
|
||||
void digi_link_sound_to_object(unsigned soundnum, vcobjptridx_t objnum, uint8_t forever, fix max_volume, sound_stack once);
|
||||
void digi_kill_sound_linked_to_segment(vmsegidx_t segnum, unsigned sidenum, int soundnum);
|
||||
void digi_kill_sound_linked_to_segment(vmsegidx_t segnum, sidenum_t sidenum, int soundnum);
|
||||
void digi_link_sound_to_pos(unsigned soundnum, vcsegptridx_t segnum, unsigned sidenum, const vms_vector &pos, int forever, fix max_volume);
|
||||
// Same as above, but you pass the max distance sound can be heard. The old way uses f1_0*256 for max_distance.
|
||||
void digi_link_sound_to_object2(unsigned soundnum, vcobjptridx_t objnum, uint8_t forever, fix max_volume, sound_stack once, vm_distance max_distance);
|
||||
|
|
|
@ -237,7 +237,7 @@ extern enumerated_array<game_marker_index, 2, gauge_inset_window_view> Marker_vi
|
|||
|
||||
#if DXX_USE_EDITOR
|
||||
void dump_used_textures_all();
|
||||
void move_player_2_segment(vmsegptridx_t seg, unsigned side);
|
||||
void move_player_2_segment(vmsegptridx_t seg, sidenum_t side);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -70,20 +70,12 @@ namespace dcx {
|
|||
enum class materialization_center_number : uint8_t;
|
||||
enum class station_number : uint8_t;
|
||||
|
||||
enum sidenum_t : uint8_t
|
||||
{
|
||||
WLEFT = 0,
|
||||
WTOP = 1,
|
||||
WRIGHT = 2,
|
||||
WBOTTOM = 3,
|
||||
WBACK = 4,
|
||||
WFRONT = 5
|
||||
};
|
||||
enum sidenum_t : uint8_t;
|
||||
|
||||
[[nodiscard]]
|
||||
std::optional<sidenum_t> build_sidenum_from_untrusted(uint8_t untrusted);
|
||||
constexpr constant_xrange<sidenum_t, sidenum_t{0}, sidenum_t{6}> MAX_SIDES_PER_SEGMENT{};
|
||||
constexpr std::integral_constant<sidenum_t, sidenum_t{MAX_SIDES_PER_SEGMENT.value}> side_none{};
|
||||
constexpr std::integral_constant<sidenum_t, MAX_SIDES_PER_SEGMENT.value> side_none{};
|
||||
|
||||
using texture_index = uint16_t;
|
||||
enum class texture1_value : uint16_t;
|
||||
|
@ -148,8 +140,8 @@ struct d_level_shared_vertex_state;
|
|||
struct d_level_shared_segment_state;
|
||||
struct d_level_unique_segment_state;
|
||||
|
||||
extern const enumerated_array<enumerated_array<segment_relative_vertnum, 4, side_relative_vertnum>, MAX_SIDES_PER_SEGMENT, sidenum_t> Side_to_verts; // Side_to_verts[my_side] is list of vertices forming side my_side.
|
||||
extern const enumerated_array<sidenum_t, MAX_SIDES_PER_SEGMENT, sidenum_t> Side_opposite; // Side_opposite[my_side] returns side opposite cube from my_side.
|
||||
extern const enumerated_array<enumerated_array<segment_relative_vertnum, 4, side_relative_vertnum>, static_cast<std::size_t>(MAX_SIDES_PER_SEGMENT.value), sidenum_t> Side_to_verts; // Side_to_verts[my_side] is list of vertices forming side my_side.
|
||||
extern const enumerated_array<sidenum_t, static_cast<std::size_t>(MAX_SIDES_PER_SEGMENT.value), sidenum_t> Side_opposite; // Side_opposite[my_side] returns side opposite cube from my_side.
|
||||
|
||||
void segment_side_wall_tmap_write(PHYSFS_File *fp, const shared_side &sside, const unique_side &uside);
|
||||
}
|
||||
|
|
|
@ -61,8 +61,8 @@ using vertex_vertnum_array_list = std::array<vertex_vertnum_pair, 6>;
|
|||
[[nodiscard]]
|
||||
sidenum_t find_connect_side(vcsegidx_t base_seg, const shared_segment &con_seg);
|
||||
|
||||
void compute_center_point_on_side(fvcvertptr &vcvertptr, vms_vector &vp, const shared_segment &sp, unsigned side);
|
||||
static inline vms_vector compute_center_point_on_side(fvcvertptr &vcvertptr, const shared_segment &sp, const unsigned side)
|
||||
void compute_center_point_on_side(fvcvertptr &vcvertptr, vms_vector &vp, const shared_segment &sp, sidenum_t side);
|
||||
static inline vms_vector compute_center_point_on_side(fvcvertptr &vcvertptr, const shared_segment &sp, const sidenum_t side)
|
||||
{
|
||||
vms_vector v;
|
||||
return compute_center_point_on_side(vcvertptr, v, sp, side), v;
|
||||
|
|
|
@ -100,7 +100,7 @@ extern void newdemo_record_player_energy(int);
|
|||
extern void newdemo_record_player_shields(int);
|
||||
extern void newdemo_record_player_flags(unsigned);
|
||||
extern void newdemo_record_player_weapon(int, int);
|
||||
void newdemo_record_effect_blowup(segnum_t, int, const vms_vector &);
|
||||
void newdemo_record_effect_blowup(segnum_t, sidenum_t, const vms_vector &);
|
||||
extern void newdemo_record_homing_distance(fix);
|
||||
extern void newdemo_record_letterbox(void);
|
||||
extern void newdemo_record_rearview(void);
|
||||
|
|
|
@ -132,6 +132,16 @@ struct shared_side
|
|||
std::array<vms_vector, 2> normals; // 2 normals, if quadrilateral, both the same.
|
||||
};
|
||||
|
||||
enum sidenum_t : uint8_t
|
||||
{
|
||||
WLEFT = 0,
|
||||
WTOP = 1,
|
||||
WRIGHT = 2,
|
||||
WBOTTOM = 3,
|
||||
WBACK = 4,
|
||||
WFRONT = 5
|
||||
};
|
||||
|
||||
enum class sidemask_t : uint8_t
|
||||
{
|
||||
left = 1u << static_cast<uint8_t>(sidenum_t::WLEFT),
|
||||
|
@ -257,7 +267,7 @@ struct shared_segment
|
|||
segnum_t segnum; // segment number, not sure what it means
|
||||
short group; // group number to which the segment belongs.
|
||||
#endif
|
||||
enumerated_array<segnum_t, MAX_SIDES_PER_SEGMENT, sidenum_t> children; // indices of 6 children segments, front, left, top, right, bottom, back
|
||||
enumerated_array<segnum_t, static_cast<std::size_t>(MAX_SIDES_PER_SEGMENT.value), sidenum_t> children; // indices of 6 children segments, front, left, top, right, bottom, back
|
||||
enumerated_array<vertnum_t, MAX_VERTICES_PER_SEGMENT, segment_relative_vertnum> verts; // vertex ids of 4 front and 4 back vertices
|
||||
segment_special special; // what type of center this is
|
||||
materialization_center_number matcen_num; // which center segment is associated with.
|
||||
|
@ -265,7 +275,7 @@ struct shared_segment
|
|||
/* if DXX_BUILD_DESCENT_II */
|
||||
uint8_t s2_flags;
|
||||
/* endif */
|
||||
enumerated_array<shared_side, MAX_SIDES_PER_SEGMENT, sidenum_t> sides;
|
||||
enumerated_array<shared_side, static_cast<std::size_t>(MAX_SIDES_PER_SEGMENT.value), sidenum_t> sides;
|
||||
};
|
||||
|
||||
struct unique_segment
|
||||
|
@ -277,7 +287,7 @@ struct unique_segment
|
|||
sidemask_t slide_textures;
|
||||
/* endif */
|
||||
fix static_light;
|
||||
enumerated_array<unique_side, MAX_SIDES_PER_SEGMENT, sidenum_t> sides;
|
||||
enumerated_array<unique_side, static_cast<std::size_t>(MAX_SIDES_PER_SEGMENT.value), sidenum_t> sides;
|
||||
};
|
||||
|
||||
struct segment : unique_segment, shared_segment
|
||||
|
|
|
@ -371,7 +371,7 @@ static inline vms_matrix med_create_group_rotation_matrix(const unsigned delta_f
|
|||
|
||||
// -----------------------------------------------------------------------------------------
|
||||
// Rotate all vertices and objects in group.
|
||||
static void med_rotate_group(const vms_matrix &rotmat, group::segment_array_type_t &group_seglist, const shared_segment &first_seg, const unsigned first_side)
|
||||
static void med_rotate_group(const vms_matrix &rotmat, group::segment_array_type_t &group_seglist, const shared_segment &first_seg, const sidenum_t first_side)
|
||||
{
|
||||
auto &LevelSharedVertexState = LevelSharedSegmentState.get_vertex_state();
|
||||
auto &Objects = LevelUniqueObjectState.Objects;
|
||||
|
|
|
@ -531,8 +531,7 @@ int fuelcen_delete_from_curseg() {
|
|||
//determine how from from the center of the window the farthest point will be
|
||||
#define SIDE_VIEW_FRAC (f1_0*8/10) //80%
|
||||
|
||||
|
||||
static void move_player_2_segment_and_rotate(const vmsegptridx_t seg, const unsigned side)
|
||||
static void move_player_2_segment_and_rotate(const vmsegptridx_t seg, const sidenum_t side)
|
||||
{
|
||||
auto &Objects = LevelUniqueObjectState.Objects;
|
||||
auto &vmobjptr = Objects.vmptr;
|
||||
|
|
|
@ -314,7 +314,7 @@ std::pair<create_path_result, unsigned> create_path_points(const vmobjptridx_t o
|
|||
auto &Walls = LevelUniqueWallSubsystemState.Walls;
|
||||
auto &vcwallptr = Walls.vcptr;
|
||||
|
||||
std::array<sidenum_t, MAX_SIDES_PER_SEGMENT> side_traversal_translation;
|
||||
std::array<sidenum_t, static_cast<std::size_t>(MAX_SIDES_PER_SEGMENT.value)> side_traversal_translation;
|
||||
std::iota(side_traversal_translation.begin(), side_traversal_translation.end(), sidenum_t{});
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
/* Descent 1 can only shuffle once, before the loop begins.
|
||||
|
|
|
@ -563,7 +563,7 @@ v1_control_center_triggers::v1_control_center_triggers(const control_center_trig
|
|||
num_links(cct.num_links), seg(cct.seg)
|
||||
{
|
||||
for (auto &&[w, r] : zip(side, cct.side))
|
||||
w = r;
|
||||
w = underlying_value(r);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -796,7 +796,7 @@ static window_event_result collide_weapon_and_wall(
|
|||
if (keyd_pressed[KEY_LAPOSTRO])
|
||||
if (weapon->ctype.laser_info.parent_num == get_local_player().objnum) {
|
||||
// MK: Real pain when you need to know a seg:side and you've got quad lasers.
|
||||
HUD_init_message(HM_DEFAULT, "Hit at segment = %hu, side = %i", static_cast<vmsegptridx_t::integral_type>(hitseg), hitwall);
|
||||
HUD_init_message(HM_DEFAULT, "Hit at segment = %hu, side = %i", static_cast<vmsegptridx_t::integral_type>(hitseg), underlying_value(hitwall));
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
if (get_weapon_id(weapon) < 4)
|
||||
subtract_light(LevelSharedDestructibleLightState, hitseg, hitwall);
|
||||
|
|
|
@ -498,7 +498,7 @@ void digi_link_sound_to_pos(const unsigned soundnum, const vcsegptridx_t segnum,
|
|||
}
|
||||
|
||||
//if soundnum==-1, kill any sound
|
||||
void digi_kill_sound_linked_to_segment(const vmsegidx_t segnum, const unsigned sidenum, int soundnum)
|
||||
void digi_kill_sound_linked_to_segment(const vmsegidx_t segnum, const sidenum_t sidenum, int soundnum)
|
||||
{
|
||||
if (soundnum != -1)
|
||||
soundnum = digi_xlat_sound(soundnum);
|
||||
|
|
|
@ -100,7 +100,7 @@ void do_special_effects()
|
|||
ec.flags &= ~EF_ONE_SHOT;
|
||||
unique_segment &seg = *vmsegptr(ec.segnum);
|
||||
ec.segnum = segment_none; //done with this
|
||||
assert(ec.sidenum < 6);
|
||||
assert(seg.sides.valid_index(ec.sidenum));
|
||||
auto &side = seg.sides[ec.sidenum];
|
||||
assert(ec.dest_bm_num != 0 && side.tmap_num2 != texture2_value::None);
|
||||
side.tmap_num2 = build_texture2_value(ec.dest_bm_num, get_texture_rotation_high(side.tmap_num2)); //replace with destroyed
|
||||
|
|
|
@ -301,7 +301,7 @@ static sidenum_t find_exit_side(const d_level_shared_segment_state &LevelSharedS
|
|||
|
||||
if (child != segment_none)
|
||||
{
|
||||
auto sidevec = compute_center_point_on_side(vcvertptr, pseg, static_cast<sidenum_t>(i));
|
||||
auto sidevec = compute_center_point_on_side(vcvertptr, pseg, i);
|
||||
vm_vec_normalized_dir_quick(sidevec,sidevec,segcenter);
|
||||
d = vm_vec_dot(sidevec,prefvec);
|
||||
|
||||
|
|
|
@ -647,7 +647,7 @@ void calc_frame_time()
|
|||
namespace dsx {
|
||||
|
||||
#if DXX_USE_EDITOR
|
||||
void move_player_2_segment(const vmsegptridx_t seg, const unsigned side)
|
||||
void move_player_2_segment(const vmsegptridx_t seg, const sidenum_t side)
|
||||
{
|
||||
auto &LevelSharedVertexState = LevelSharedSegmentState.get_vertex_state();
|
||||
auto &Objects = LevelUniqueObjectState.Objects;
|
||||
|
|
|
@ -152,9 +152,9 @@ static void get_side_verts(side_vertnum_list_t &vertlist, const enumerated_array
|
|||
// ------------------------------------------------------------------------------------------
|
||||
// Compute the center point of a side of a segment.
|
||||
// The center point is defined to be the average of the 4 points defining the side.
|
||||
void compute_center_point_on_side(fvcvertptr &vcvertptr, vms_vector &vp, const shared_segment &sp, const unsigned side)
|
||||
void compute_center_point_on_side(fvcvertptr &vcvertptr, vms_vector &vp, const shared_segment &sp, const sidenum_t side)
|
||||
{
|
||||
compute_center_point_on_side(vcvertptr, vp, sp.verts, static_cast<sidenum_t>(side));
|
||||
compute_center_point_on_side(vcvertptr, vp, sp.verts, side);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -1426,7 +1426,7 @@ void newdemo_record_player_weapon(int weapon_type, int weapon_num)
|
|||
);
|
||||
}
|
||||
|
||||
void newdemo_record_effect_blowup(segnum_t segment, int side, const vms_vector &pnt)
|
||||
void newdemo_record_effect_blowup(segnum_t segment, sidenum_t side, const vms_vector &pnt)
|
||||
{
|
||||
pause_game_world_time p;
|
||||
nd_write_byte (ND_EVENT_EFFECT_BLOWUP);
|
||||
|
|
Loading…
Reference in a new issue