Kp
dfce7ed40d
Simplify SDL_QUIT handling
...
Remove the global `Quitting` and instead run the window close loop
immediately upon receiving SDL_QUIT.
2023-01-14 19:05:37 +00:00
Kp
3f1aa85ad6
Make partial_range_t inherit from ranges::subrange
...
Delegate work to the standard library where possible.
2023-01-14 19:05:37 +00:00
Kp
932c8370d5
Make iterator_result_converter satisfy std::ranges::range
...
std::ranges::range requires the iterator to be default-constructible and
have postfix operator++. Add those to satisfy the concept.
2023-01-14 19:05:37 +00:00
Kp
06bb1b74ad
Harden bm_read_alias against bad input
2023-01-07 22:17:31 +00:00
Kp
91496e1d4a
Use enum class for properties_init result
2023-01-07 22:17:31 +00:00
Kp
704bde86bd
Move SysNoHogDir to CGameArg
...
Move DXX_USE_SHAREPATH definition to apply to common files too, since
common files see CGameArg.
2023-01-07 22:17:31 +00:00
Kp
5ce4d49004
Use enum class for sound_sample_rate
2023-01-07 22:17:31 +00:00
Kp
60adb6ecd8
Hold digi_sample_rate const
...
In any given run of the program, either the SDL_mixer code will be used,
or it will not be used. `digi_sample_rate` only needs to vary if a
single run both uses SDL_mixer and avoids it. Make `digi_sample_rate` a
`static const` with an appropriate value for each path.
2023-01-07 22:17:31 +00:00
Kp
b5a609868e
Remove inline stub for swap_polygon_model_data
...
All callers are either in `#if DXX_WORDS_BIGENDIAN` or in
`if constexpr (words_bigendian)`, so there are no callers that use the
`static inline` stub.
2023-01-07 22:17:31 +00:00
Kp
7b602efedc
Pass std::span to mveaudio_uncompress
2023-01-07 22:17:31 +00:00
Kp
05eea350a0
Move unique_span to d_uspan.h
2023-01-07 22:17:31 +00:00
Kp
9ba1c13d9f
Flatten type information for zip<>
2022-12-31 16:21:47 +00:00
Kp
1fcb02f100
Inline zip sentinel type resolution
2022-12-31 16:21:47 +00:00
Kp
a56ceca502
Use distinct sentinel type on zip<>
2022-12-31 16:21:47 +00:00
Kp
14b222e2a6
Allow distinct sentinel type on enumerated range
2022-12-31 16:21:47 +00:00
Kp
5eff03dd88
Store ranges::subrange in newmenu_layout
2022-12-31 16:21:47 +00:00
Kp
3bba60d1b7
Pass ranges::subrange to multi_all_players_alive
2022-12-31 16:21:47 +00:00
Kp
86515f6903
Pass ranges::subrange to multi_interactive_deny_save_game
2022-12-31 16:21:47 +00:00
Kp
0decae2328
Pass ranges::subrange to multi_common_deny_save_game
2022-12-31 16:21:47 +00:00
Kp
c428fdee0f
Pass ranges::subrange to bitmap_index_read_n
2022-12-31 16:21:47 +00:00
Kp
f804d98825
Make enumerate inherit ranges::subrange directly
...
Remove the intermediate layer of partial_range_t.
2022-12-31 16:21:47 +00:00
Kp
41184654e8
Pass ranges::subrange to reactor_read_n
2022-12-31 16:21:47 +00:00
Kp
299c4e6300
Pass ranges::subrange to event_poll_state::process_event_batch
2022-12-31 16:21:47 +00:00
Kp
ca913240d0
Return ranges::subrange from robot_get_anim_state
2022-12-31 16:21:47 +00:00
Kp
d3ffcb0dab
Store range_type, not range_iterator_type, in zip<> signature
...
This is initial setup to enabling use of zip() on sentinel based ranges.
Store the range's type in the zip signature, and store the types of
std::begin/std::end for the iterators, rather than assuming that
std::begin and std::end return the same type.
2022-12-31 16:21:47 +00:00
Kp
1aab6ace2a
Extend zip() to examine multiple end iterators
...
Allow the caller to pick which sequences can terminate the zip iterator.
For compatibility and performance, default to the historical behavior of
examining only the first sequence. The zip iteration terminates when
any of the examined sequences reaches its end, even if other sequences
have not reached their respective end.
2022-12-31 16:21:47 +00:00
Kp
0921b88028
Change zip unit tests to use requires()
...
This usually produces better error messages on failure.
2022-12-31 16:21:47 +00:00
Kp
23551716b3
Add static_assert checks on zip difference_type
2022-12-31 16:21:47 +00:00
Kp
4071cd0cbf
Replace range_owns_iterated_storage with ranges::borrowed_range
...
The standard type imposes some additional requirements that are not
necessary here, but using this concept allows standard containers to be
classified correctly without specific overrides.
2022-12-31 16:21:47 +00:00
Kp
e3553586c1
Use enum class for bitmap_index
2022-12-31 16:21:47 +00:00
Kp
147dd52f7d
Preserve input type in deleted enumerated_array::operator[]()
...
Any integer type can convert to match this signature, but the diagnostic
will only report that this deleted function was matched. Switch to a
template function so that the diagnostic can report the unconverted
integer type.
2022-12-31 16:21:47 +00:00
Kp
df8e998721
Remove unnecessary morph_data helper constructors
2022-12-18 23:10:39 +00:00
Kp
01fd4079ba
Remove unnecessary enumerate constructor
2022-12-18 23:10:39 +00:00
Kp
e41e72c667
Use #if
for DXX_HAVE_CXX_BUILTIN_FILE_LINE
2022-12-18 23:10:39 +00:00
Kp
ae4b3b4c87
Make window_send_event a method of window
...
Switch from using a macro to capture __FILE__,__LINE__ to using
__builtin_FILE(),__builtin_LINE(). Make the event an explicit argument,
instead of assuming it is a variable named `event`. Move the
implementation out of line.
2022-12-18 23:10:39 +00:00
Kp
b4866b8e09
Let self_return_iterator use an implicit operator!=
2022-12-18 18:32:14 +00:00
Kp
64eae78dcc
Prefer direct initialization for bitmap_index
2022-12-18 18:32:14 +00:00
Kp
4257391a47
Use enum class for polygon_model_index
2022-12-18 18:32:14 +00:00
Kp
3f65ae0ca3
Replace PHYSFSX_read* macros with a template function object
...
This produces better error messages on misuse.
2022-12-17 13:16:28 +00:00
Kp
cba14b91e4
Pass std::span to piggy_find_sound
2022-12-17 13:16:28 +00:00
Kp
102d19ec28
Pass std::span to piggy_find_bitmap
2022-12-17 13:16:28 +00:00
Kp
8bd94c4f5c
Pass std::span to piggy_register_sound
2022-12-17 13:16:28 +00:00
Kp
5f39ffc2f5
Use enum class for sound_channel
2022-12-17 13:16:28 +00:00
Kp
afb7406127
Pass std::span to callsign_t::copy_lower
2022-12-10 18:09:54 +00:00
Kp
1b92a56648
Use unique_ptr to manage digi_sound allocation
2022-12-10 18:09:54 +00:00
Kp
0c8ab5d70d
Remove unnecessary explicit definition of valptridx<T>::ptr::operator!=
2022-12-10 18:09:54 +00:00
Kp
3ef8cb1e14
Let self_return_iterator::operator== use an implicit T::operator==
2022-12-10 18:09:54 +00:00
Kp
8decd6ec99
Simplify DXX_ALWAYS_ERROR_FUNCTION
...
Since this should never be invoked, simplify the definition. The new
version is slightly less informative in case a logic error causes it to
be called, but is far shorter and easier to understand.
2022-12-10 18:09:54 +00:00
Kp
d1b55a15ac
Pass robot_info to move_towards_segment_center
2022-12-02 04:09:20 +00:00
Kp
d84b362f33
Use uint16_t for newmenu input text length
2022-11-13 21:17:23 +00:00