- Raise the player limit to 8.
- Remove the logic that forces player counts up/down when switching
between cooperative and deathmatch game modes.
- Add heuristics to add start positions for the extra players, since
standard maps will not have the required number of starts.
`check_effect_blowup` should receive the `laser_info` of the weapon that
caused the blast. Previously, it was given the `laser_info` of the
parent of that weapon. The parent was not of type `OBJ_WEAPON`, so
passing its `laser_info` is meaningless.
Fixes: 9bd1ba7c47
Creating an attribute on UserBuildSettings during SConf breaks
clean/help, which do not run configure tests. Remove that and add a
method to return the value the attribute would have had.
Reported-by: derhass <https://github.com/dxx-rebirth/dxx-rebirth/issues/412>
Fixes: 1be414217c ("Add build time flag to choose whether to enable ADL MIDI support")
clang warns that this interferes with copy elision. The generated code
is slightly worse after following clang's advice and removing this, but
this is not a hot path, so take the hit to silence clang instead of
complicating the source.
Fixes: d97afc2ad5 ("Retain directory structure in New Game dialog")
gcc-4.9 std::array::size() is `constexpr`, but gcc-4.9 refuses to
initialize a local `constexpr std::size_t` from the result of calling
`size()` on a `std::array`. Later gcc permit this. gcc-8 generates the
same code whether the variable is `constexpr std::size_t` or `const
std::size_t`, and the latter allows gcc-4.9 to build, so remove
`constexpr` and use plain `const`.
Reported-by: joolswills <https://github.com/dxx-rebirth/dxx-rebirth/issues/411>
Fixes: 91d6285751 ("Factor out shortening game/mission names")
gcc-4.9 shipped without support for std::is_trivially_move_assignable.
This is only needed in a sanity check, so preprocess it out when using a
gcc below gcc-5.
Reported-by: joolswills <https://github.com/dxx-rebirth/dxx-rebirth/issues/411>
Fixes: 57334255ac ("Simplify stuck object cleanup")
gcc permits this, but clang complains. Match the format specifier to
the type of the underlying temporary variable.
Fixes: a65068fed1 ("Move OGL RLE bitmap buffer to stack")
Add experimental support for using ADL MIDI instead of SDL for music
playback. Support for ADL MIDI contributed by Github user jpcima. This
feature is minimally supported by the core Rebirth team, but is included
as a courtesy so that users need not patch in support separately.
Suggested-by: jpcima <https://github.com/dxx-rebirth/dxx-rebirth/pull/408>
Add configuration file entries for number of chips, bank index, and
whether to use ADL MIDI. Currently, there is no GUI for this.
Interested users must enable it via direct configuration file editing.
A menu interface will come later.
- Use the Windows type `HMODULE` on Windows, and define a local alias to
it on non-Windows. This makes the code slightly clearer about the
nature of the value `handle`.
- Move the `dlopen` emulation into the anonymous namespace to encourage
inlining, since the wrappers are trivial name/signature compatibility
functions.
- Move the error reporting out of the template function, so that it is
not redundantly instantiated for each type used with the template.
Global data will default to nullptr, so the initialization is
unnecessary. Some compilers may store the pointer in `.data` when it is
initialized to any value.
The movie code assumes that when the topmost window is closed, that
window must have been the movie window, and that the movie data can now
be freed. However, if the movie is paused, a new topmost window is
created to tell the user that the movie is paused. When that topmost
pause window is deleted, the movie code frees the movie data, even
though the movie is not done. Corruption ensues, ultimately leading to
a crash.
Reported-by: Jayman2000 <https://github.com/dxx-rebirth/dxx-rebirth/issues/410>
This has been broken for more than 5 years and no one reported it.
Perhaps truecolor movies are not used.
Fixes: acb664ae40 ("Use proper type for mve backbuffers")
Shrink it from 1MB to 300KB. Add a diagnostic if the expansion fails
due to insufficient capacity.
300KB is required for the ship cockpit bitmap. Everything else seems to
be smaller.
User jammer1 reports that Python under MSYS2[1] reports a `sys.platform`
of `msys`. For the limited purposes Rebirth requires, this platform can
be treated as if it were `win32`. Add a mapping to apply this change
automatically, so that users do not need to set it on the command line.
Reported-by: jammer1 <https://github.com/dxx-rebirth/dxx-rebirth/issues/405>
[1]: http://www.msys2.org/