Kp
3ea0cc7053
Store Pof_addr at local scope
...
Pass it to called functions as needed.
2022-08-22 01:24:49 +00:00
Kp
6b7ba83a00
Move anim_angs into local scope, since it is copied out later
2022-08-22 01:24:49 +00:00
Kp
99577c4296
Simplify pof_read_string
...
The resulting string is discarded, so change it to skip without copying.
2022-08-22 01:24:49 +00:00
Kp
a41908dece
Move Pof_file_end to local scope
...
Rely on the extent in std::span for called code that needs to know
bounds.
2022-08-22 01:24:49 +00:00
Kp
3e13dcdf19
Use std::span to bound read_model_guns valid bytes
2022-08-22 01:24:49 +00:00
Kp
15e8ceeaa4
Use std::span to bound read_model_file valid bytes
2022-08-22 01:24:49 +00:00
Kp
42caec7e58
Use std::span for pof reading functions
2022-08-22 01:24:49 +00:00
Kp
c5c5e8ea39
Simplify pof_read_angs
...
The caller passes a length of 1, so inline that and simplify the
function.
2022-08-22 01:24:49 +00:00
Kp
69579df368
Simplify pof_read_short
...
Use the general little-endian helper.
2022-08-22 01:24:49 +00:00
Kp
87c79206e8
Simplify pof_cfread
...
All callers pass a value of 1 for one of the two length terms, so inline
that and eliminate the multiplication.
2022-08-22 01:24:49 +00:00
Kp
bfb7ed7efc
Simplify pof_read_vecs
...
All callers pass a count of 1, so inline that and eliminate the loop.
2022-08-22 01:24:49 +00:00
Tylor
6fee36638d
Feat: Pitch unlocker
2022-08-21 16:16:40 -05:00
Kp
0d045ae3da
Fix Windows net_udp build
...
Convert the RAIIsocket to a simple SOCKET before passing it to FD_SET.
Otherwise, the build fails with:
```
similar/main/net_udp.cpp: In function 'int {anonymous}::udp_general_packet_ready(dcx::{anonymous}::RAIIsocket&)':
similar/main/net_udp.cpp:969:2: error: use of deleted function 'bool dcx::{anonymous}::RAIIsocket::operator==(T) const [with T = long long unsigned int]'
969 | FD_SET(sock, &set);
| ^~~~~~
similar/main/net_udp.cpp:493:29: note: declared here
493 | template <typename T> bool operator==(T) const = delete;
| ^~~~~~~~
```
2022-08-16 03:15:04 +00:00
Kp
fb75a7900c
Pass std::span to multi_do_message
2022-07-30 17:42:59 +00:00
Kp
81ab68e0f6
Pass std::span to multi_do_player_inventory
2022-07-30 17:42:59 +00:00
Kp
31b8d98e22
Pass std::span to multi_do_kill_client
2022-07-30 17:42:59 +00:00
Kp
e76cefd846
Pass std::span to multi_do_kill_host
2022-07-30 17:42:59 +00:00
Kp
43c86b94af
Split multi_do_kill to multi_do_kill_host+multi_do_kill_client
...
The kill messages have different lengths and conditional processing
based on whether the message is MULTI_KILL_CLIENT or MULTI_KILL_HOST.
Split the two into separate functions to simplify the implementation of
each.
2022-07-30 17:42:59 +00:00
Kp
127a1f15e6
Pass std::span to multi_do_gmode_update
2022-07-30 17:42:59 +00:00
Kp
b24d61cd0a
Pass std::span to multi_do_msgsend_state
2022-07-30 17:42:59 +00:00
Kp
c5eeaa48cd
Pass std::span to multi_do_bounty
2022-07-30 17:42:59 +00:00
Kp
da138757e6
Pass std::span to multi_do_kill_goal_counts
2022-07-30 17:42:59 +00:00
Kp
79683690bd
Pass std::span to multi_do_heartbeat
2022-07-30 17:42:59 +00:00
Kp
4893196138
Pass std::span to multi_do_restore_game
2022-07-30 17:42:59 +00:00
Kp
4e42dacd23
Pass std::span to multi_do_save_game
2022-07-30 17:42:59 +00:00
Kp
96a260cea0
Pass std::span to multi_do_hostage_door_status
2022-07-30 17:42:59 +00:00
Kp
55bbc5f599
Pass std::span to multi_do_create_robot_powerups
2022-07-30 17:42:59 +00:00
Kp
4ce39a399e
Pass std::span to multi_do_boss_create_robot
2022-07-30 17:42:59 +00:00
Kp
c575283c5e
Pass std::span to multi_do_boss_stop_gate
2022-07-30 17:42:59 +00:00
Kp
b820098103
Pass std::span to multi_do_boss_start_gate
2022-07-30 17:42:59 +00:00
Kp
2b4dd444ca
Pass std::span to multi_do_boss_cloak
2022-07-30 17:42:59 +00:00
Kp
6ab2068a82
Pass std::span to multi_do_boss_teleport
2022-07-30 17:42:59 +00:00
Kp
202e3309a7
Pass std::span to multi_recv_escort_goal
2022-07-30 17:42:59 +00:00
Kp
cab6900f29
Pass std::span to multi_do_flags
2022-07-30 17:42:59 +00:00
Kp
53d5c296ff
Pass std::span to multi_do_effect_blowup
2022-07-30 17:42:59 +00:00
Kp
2cb7de84b1
Pass std::span to multi_do_start_trigger
2022-07-30 17:42:59 +00:00
Kp
802b9bd37e
Pass std::span to multi_do_trigger
2022-07-30 17:42:59 +00:00
Kp
ff8e2090ab
Pass std::span to multi_do_score
2022-07-30 17:42:59 +00:00
Kp
980b3080ce
Pass std::span to multi_do_robot_fire
2022-07-30 17:42:59 +00:00
Kp
fa0f7cef11
Pass std::span to multi_do_release_robot
2022-07-30 17:42:59 +00:00
Kp
d4b047bb02
Pass std::span to multi_do_robot_position
2022-07-30 17:42:59 +00:00
Kp
0036b91084
Pass std::span to multi_do_claim_robot
2022-07-30 17:42:59 +00:00
Kp
eb5880ac93
Pass std::span to multi_do_ranking
2022-07-30 17:42:59 +00:00
Kp
8cb20bb3ae
Pass std::span to multi_do_finish_game
2022-07-30 17:42:59 +00:00
Kp
73361b9ae0
Pass std::span to multi_do_orb_bonus
2022-07-30 17:42:59 +00:00
Kp
575be1d1ee
Pass std::span to multi_do_play_sound
2022-07-30 17:42:59 +00:00
Kp
47cb7d7801
Pass std::span to multi_do_create_powerup
2022-07-30 17:42:59 +00:00
Kp
e5799fdabe
Pass std::span to multi_do_controlcen_fire
2022-07-30 17:42:59 +00:00
Kp
f0bae36bc7
Pass std::span to multi_do_door_open
2022-07-30 17:42:59 +00:00
Kp
7a8a2789e6
Pass std::span to multi_do_escape
2022-07-30 17:42:59 +00:00
Kp
81654ae8a9
Pass std::span to multi_do_light
2022-07-30 17:42:59 +00:00
Kp
784216d8ac
Pass std::span to multi_do_seismic
2022-07-30 17:42:59 +00:00
Kp
1ea67e18e8
Pass std::span to multi_do_wall_status
2022-07-30 17:42:59 +00:00
Kp
3b43f040fd
Pass std::span to multi_do_stolen_items
2022-07-30 17:42:59 +00:00
Kp
dd374ef65e
Pass std::span to multi_do_guided
2022-07-30 17:42:59 +00:00
Kp
74fd22a5a0
Pass std::span to multi_do_drop_flag
2022-07-30 17:42:59 +00:00
Kp
a5c6a25cf2
Pass std::span to multi_do_drop_marker
2022-07-30 17:42:59 +00:00
Kp
652e3ceddd
Pass std::span to multi_do_sound_function
2022-07-30 17:42:59 +00:00
Kp
84bb23e6d3
Pass std::span to multi_do_vulcan_weapon_ammo_adjust
2022-07-30 17:42:59 +00:00
Kp
4dd058d501
Pass std::span to multi_do_drop_weapon
2022-07-30 17:42:59 +00:00
Kp
5ac2a90121
Pass std::span to multi_do_controlcen_destroy
2022-07-30 17:42:59 +00:00
Kp
454bec9715
Pass std::span to multi_do_quit
2022-07-30 17:42:59 +00:00
Kp
f923a5d710
Pass std::span to multi_do_player_deres
2022-07-30 17:42:59 +00:00
Kp
aa95c6f804
Pass std::span to multi_do_remobj
2022-07-30 17:42:59 +00:00
Kp
7d464db18d
Pass std::span to multi_do_reappear
2022-07-30 17:42:59 +00:00
Kp
74af38bba2
Pass std::span to multi_do_position
2022-07-30 17:42:59 +00:00
Kp
49f608010a
Pass std::span to multi_do_robot_explode
2022-07-30 17:42:59 +00:00
Kp
e1269dca35
Pass std::span to multi_do_create_robot
2022-07-30 17:42:59 +00:00
Kp
3bc110ec01
Fold robot kamikaze explode_object calls
2022-07-30 17:42:59 +00:00
Kp
dc674eafe8
Replace various uses of std::enable_if with C++20 requires()
...
Compiler error messages are generally better when reporting a misuse
that fails a requires() versus reporting a misuse that fails a
std::enable_if. In some cases, this also makes the code clearer, and
avoids the need for dummy template parameters as a place to invoke
std::enable_if.
2022-07-30 17:42:59 +00:00
Kp
58061b5f45
Use C++20 std::span for morph_data
2022-07-30 17:42:59 +00:00
Kp
f92a978b4a
Unify collide_player_and_materialization_center -> apply_damage_to_player
...
D2 changed the rule for the parameter `killer`. Split that out to a
variable and combine the underlying call. This does not change the game
semantics.
2022-07-23 20:58:10 +00:00
Kp
d9d2bac092
Use enum class for apply_damage_to_player::possibly_friendly
...
Also, remove a redundant invulnerability check in one caller.
apply_damage_to_player already tests for invulnerability and returns if
appropriate.
2022-07-23 20:58:10 +00:00
Kp
a44f80fd64
Flatten call chain to net_udp_send_data
2022-07-23 20:58:10 +00:00
Kp
e6c510d467
Use vector read/write helpers in network messages
2022-07-23 20:58:10 +00:00
Kp
4141e04359
Pass thief stolen item storage to drop_stolen_items
2022-07-23 20:58:10 +00:00
Kp
a3a2f7cc9a
Pass context to drop_stolen_items
...
Pass the specific object fields needed, rather than the entire object.
2022-07-23 20:58:10 +00:00
Kp
801c76cbd2
Pass context to spit_powerup
2022-07-23 20:58:10 +00:00
Kp
b61add4765
Pass context to drop_powerup
2022-07-23 20:58:10 +00:00
Kp
51219d3607
Use enum class for PlayMovie flag must_have
2022-07-23 20:58:10 +00:00
Kp
2536b6c1bc
Pass player orientation matrix to multi_send_fire
...
The caller has the player object, and can provide the orientation matrix
from it. Use that instead of letting multi_send_fire recompute the
object in order to get the matrix.
2022-07-23 20:58:10 +00:00
Kp
c03b772ce7
Use caller supplied object for player_info in Flare_create
...
The caller supplies the local player, so use that instead of computing
it again.
2022-07-23 20:58:10 +00:00
Kp
68681d462c
Fire flare from local player, not from ConsoleObject
...
The local player object was already computed above, and so is free to
reuse here.
2022-07-23 20:58:10 +00:00
Kp
a0dc1b4283
Use union of multi_command<> for multi_send_fire message
...
Switch to a union of the possible multi_command<> types, and eliminate
the explicit length parameter passed to multi_send_data.
2022-07-23 20:58:10 +00:00
Kp
52aa9891b9
Simplify passing weapon to do_missile_firing
...
When the player fires a generic secondary, the choice of proximity bomb
versus super-mine is never read. When the player specifically drops a
bomb, only that choice needs to be read. Pass the chosen weapon as an
argument, and avoid computing the choice on the path where it is never
read.
2022-07-23 20:58:10 +00:00
Kp
b4fcb9c305
Simplify do_missile_firing test for whether to autoselect
...
If `drop_bomb` is false, then `weapon == player_info.Secondary_weapon`.
If `drop_bomb` is true, then `weapon == bomb`.
2022-07-23 20:58:10 +00:00
Kp
c0e12eee3f
Push player object lookup from do_missile_firing to caller
...
The caller already needs the player object for other purposes, so let
the caller pass it down to do_missile_firing.
2022-07-23 20:58:10 +00:00
Kp
0dd5d6e0d5
Split guided missile release local/remote handling
...
Two paths are always local. One path is always remote. Split the
handler function to remove the locality test and rely on the caller's
knowledge of whether the affected player is local.
2022-07-23 20:58:10 +00:00
Kp
0cb0b5cdc0
Use playernum_t for guided missile player number
2022-07-23 20:58:10 +00:00
Kp
4886afdf93
Lift which_bomb from do_missile_firing to caller
...
Callers already have the player_info available, and will need the value
of bomb in a subsequent commit. Lift it here.
2022-07-16 15:26:12 +00:00
Kp
3139445f02
Cache player object in do_missile_firing
...
Resolve the object to a vmobjptridx once, and use it as needed. Replace
some uses of ConsoleObject with the local player, since those should be
the same, and local player is already computed.
2022-07-16 15:26:12 +00:00
Kp
1d65a83d73
Use primary_weapon_index_t for do_laser_firing weapon_id
2022-07-16 15:26:12 +00:00
Kp
cbab79a56a
Simplify multi_send_fire
handling of is_bomb_objnum
...
Only one caller passes a value other than `object_none` for
`is_bomb_objnum`. That one caller uses an equivalent predicate to the
one that `multi_send_fire` uses for deciding whether to use
`MULTI_FIRE_BOMB`. Therefore, if `is_bomb_objnum != object_none` is
true, the weapon is guaranteed to be a proximity bomb or smart mine, and
`multi_send_fire` can use `MULTI_FIRE_BOMB` without retesting the object
id.
2022-07-16 15:26:12 +00:00
Kp
f22b627949
Simplify do_missile_firing lookup of track_goal
...
Commit 81dd23b151
("Only charge player for weapons that fire successfully")
added an early return when `objnum == object_none`, so if execution
reaches the call to `multi_send_fire`, then the object is guaranteed to
exist. Access the track_goal without rechecking whether the object
exists.
2022-07-16 15:26:12 +00:00
Kp
9cf82a8eb5
Set multi_command code in constructor, not at send time
...
Rework multi_send_kill to handle the stricter construction requirements
this imposes.
2022-07-16 15:26:12 +00:00
Kp
ea18bd074c
Use multi_command for multi_send_message
2022-07-16 15:26:12 +00:00
Kp
2ea48475e3
Use multi_command for robot_fire_buf
2022-07-16 15:26:12 +00:00
Kp
2288f85d6a
Use multi_command for multi_send_drop_marker
2022-07-16 15:26:12 +00:00
Kp
efecd3507f
Optimize removal of expired mdata records
...
Instead of sliding the entire queue down one element at a time, move the
non-expired elements in one step, and wipe all the trailing elements
in a single pass.
2022-07-16 15:26:12 +00:00
Kp
851edbbd3c
Use enum class for player connected status
2022-07-16 15:26:12 +00:00