Kp
a8c4aee5f0
Fix compilation of valptridx unit tests
...
Newer gcc has become more effective at propagating values and now proves
that certain tests will always throw. This proof triggers a
compile-time error, which is desirable in the main program, but not in
the unit test. Add an indirection to hide the value from the compiler
so that it is forced to emit runtime code, which can then throw and
catch as intended.
2022-10-02 19:51:35 +00:00
Kp
f0d118ed42
Use std::span for PHYSFSX_fgets
2022-10-02 19:51:35 +00:00
Kp
8fe9b8322d
Check return value of PHYSFSX_fgets
2022-10-02 19:51:35 +00:00
Kp
a55579bb8f
Flatten net_udp call chain for ntstring::copy_out
2022-10-02 19:51:35 +00:00
Kp
98916ca6b7
Remove obsolete ntstring methods
2022-10-02 19:51:35 +00:00
Kp
e3faab0899
Use alias template per_player_array for arrays that are MAX_PLAYERS long
...
This removes the need to repeat MAX_PLAYERS in every usage, and prepares
for a future change to use enumerated_array instead of std::array.
2022-09-24 17:47:53 +00:00
Kp
53d81e78de
Fix SDL2 double-free on failure to load music
...
Fixes: 0142c02edd
("Use Mix_LoadMUSType_RW for named files, too")
2022-09-24 17:47:53 +00:00
Kp
9d238eedf8
Pass std::span to callsign_t::copy
2022-09-24 17:47:53 +00:00
Kp
81b77d2f28
Pass std::span to create_bfs_list
2022-09-24 17:47:53 +00:00
Kp
8811836e2e
Make cstring_tie inherit from array
...
Switch to `using` the `begin` method instead of defining a wrapper.
2022-09-24 17:47:53 +00:00
Kp
294a78a1aa
Pass std::span to powerup_basic_str
2022-09-24 17:47:53 +00:00
Kp
1b170fe880
Pass std::span to print_exit_message
2022-09-24 17:47:53 +00:00
Kp
ea5d0136dc
Pass std::span to msgbox_warning
2022-09-24 17:47:53 +00:00
Kp
6d0a5f5783
Pass std::span to location_value_wrapper::prepare_buffer
2022-09-24 17:47:53 +00:00
Kp
56a68f3c63
Pass std::span to con_force_puts
2022-09-24 17:47:53 +00:00
Kp
a76f5d9248
Use std::array for location_wrapper::scratch_buffer
2022-09-24 17:47:52 +00:00
Kp
ae5e5c699a
Use std::array for console_buffer::line
2022-09-24 17:47:52 +00:00
Kp
23315ebec2
Fix SDL-only g3_draw_sphere overflow test
...
PF_OVERFLOW is part of p3_flags, not p3_codes. Testing p3_codes meant
that the disk would be drawn when CC_OFF_RIGHT was unset. This seems
unlikely to be what was intended, so fix the mismatch by switching to
use p3_flags instead of switching the symbolic constant.
2022-09-24 17:47:52 +00:00
Kp
b1da47a34b
Compare d1 extra pig in place
...
Instead of creating a copy, modifying the copy, and comparing to it, use
std::span to pass down the maximum allowed length for comparison.
2022-09-24 17:47:52 +00:00
Kp
ad7057be87
Add hack for case mismatch in Vertigo robot movies
...
PhysFS 3 is case-sensitive for movie filename lookup. The consequence
of this was first reported in [1]. In [2], @icculus stated this was a
bug in PhysFS 3 that would be fixed in PhysFS 3.0.2. However, [3] and
[4] assert that the fix was never included. The existence of [5] seems
to support this. The original problem was reported in 2019. As of
2022, user @AlumiuN, running PhysFS 3.0.2, is affected. Therefore, this
commit adds code to detect the relevant robot movies and adjust the case
in the Rebirth code.
[1]: https://github.com/dxx-rebirth/dxx-rebirth/issues/379
[2]: https://github.com/dxx-rebirth/dxx-rebirth/issues/379#issuecomment-389400528
[3]: https://github.com/dxx-rebirth/dxx-rebirth/issues/379#issuecomment-462083489
[4]: https://github.com/dxx-rebirth/dxx-rebirth/issues/379#issuecomment-477790175
[5]: https://github.com/dxx-rebirth/dxx-rebirth/issues/644
2022-09-24 17:47:52 +00:00
Kp
00c428b4fc
Use compiler std::endian instead of union-based punning
2022-09-24 17:47:52 +00:00
Kp
f175a4508b
Pass std::span to ogl_extensions is_ext_supported
...
This avoids the need to recompute the string's length later.
2022-09-24 17:47:52 +00:00
Kp
a79ed84112
Use std::span in location_wrapper
2022-09-24 17:47:52 +00:00
Kp
c09899f457
Pass std::span to load_mus_data
2022-09-24 17:47:52 +00:00
Kp
e911d14808
Reduce scope of mix_play_file full_path
...
It is only set or used when expanding home directory references. Reduce
its scope accordingly.
2022-09-24 17:47:52 +00:00
Kp
fd1be66fa4
Pass std::span to draw_tmap, draw_tmap_flat
2022-09-24 17:47:52 +00:00
Kp
a48e6ab56b
Pass std::span to _g3_draw_tmap
2022-09-24 17:47:52 +00:00
Kp
ad8325b63c
Pass std::span to _g3_draw_tmap_2
2022-09-24 17:47:52 +00:00
Kp
491d23e2d9
Pass std::span to _g3_draw_poly
2022-09-24 17:47:52 +00:00
Kp
97f0c5a6d0
Pass std::span to decode_data
2022-09-24 17:47:52 +00:00
Kp
e69f219539
Pass std::span to g3_validate_polygon_model
2022-09-24 17:47:52 +00:00
Kp
928834fdf8
Pass std::span to g3_init_polygon_model
2022-09-24 17:47:52 +00:00
Kp
ce0c183737
Change valptridx allow_end_construction to avoid assertion
...
gcc libstdc++ built with -D_GLIBCXX_DEBUG includes in
std::array::operator[] an assertion of the form:
```
assert(index < size());
```
The valptridx allow_end_construction constructor, when given a
completely full array, will call operator[](size()), which causes the
assertion to fail. Rework the constructor to compute an end iterator
without using operator[]. valptridx allow_end_construction expects that
the resulting iterator may be the end iterator and shall not be
dereferenced.
2022-09-24 17:47:52 +00:00
Kp
d797072596
Make vector magnitude constant in more cases
...
Introduce a helper to obtain both the magnitude of a vector and the
corresponding normalized vector. Use it to capture both values as const
when possible.
2022-09-24 17:47:52 +00:00
Kp
2ecad00e90
Pass std::span to load_palette
2022-09-24 17:47:52 +00:00
Kp
805d71de6b
Move Shareware_level_names,Registered_level_names to dumpmine.cpp
...
They are only used in this file, so move them there and make them
static.
2022-09-24 17:47:52 +00:00
Kp
cbe6c94f1e
Pass std::span to file_getdirlist
2022-09-24 17:47:52 +00:00
Kp
8f1055ca6b
Use std::span for poison helper functions
2022-09-24 17:47:51 +00:00
Kp
17a0452001
Use std::span for nm_item_input
2022-09-24 17:47:51 +00:00
Kp
e0300e1e30
Pass std::span to dispatch_table::send_data
2022-09-24 17:47:51 +00:00
Kp
b8ed30235c
Remove Multi_is_guided
; handle setup directly
...
`Multi_is_guided` is only enabled in one place. One code path set up
Guided_missile[] for the local player, and a different path handled
network players. Remove `Multi_is_guided` and rearrange such that a
single site handles both local and network players.
2022-09-24 17:47:51 +00:00
Kp
232c648024
Add Windows version resource for Windows build
2022-09-11 17:00:45 +00:00
Kp
11a400ab8f
Move upid sizes to constexpr variable
2022-09-11 17:00:45 +00:00
Kp
575bfe8a69
Use enum class for tracker_game_id
2022-09-11 17:00:44 +00:00
Kp
eb8a7d8186
Use std::span for multi::send_data_direct
2022-09-11 17:00:44 +00:00
Kp
0512ea8d65
Use enum class for upid
2022-09-11 17:00:44 +00:00
Kp
d32fc7acab
Use enum class for kick_player_reason
2022-09-11 17:00:44 +00:00
Kp
366b048879
Merge commit 'refs/pull/657/head' into master
2022-08-23 02:13:01 +00:00
Kp
44cf8b83be
Advise gcc to inline morph_data::operator new
...
This is only used in the file where it is defined, so it can be inlined
even though the definition is not in a header. Enabling inlining
encourages gcc to see that the `operator new`/`operator delete` calls
are not mismatched.
2022-08-22 01:24:49 +00:00
Kp
c64a584bfd
Use enum class for robot_gun_number
...
Validate gun numbers on loading object data. Factor out and normalize
the logic for advancing to a robot's next gun.
2022-08-22 01:24:49 +00:00