Both Primary_weapon and Secondary_weapon should use the underlying enum
type. Primary_weapon uses its enum type now. Secondary_weapon will use
its enum type eventually. Add appropriate casts to newdemo.cpp to keep
it working when those changes are made.
The compiler may or may not recognize that the temporary T{} passed to
make_unique can be omitted. Help it by passing nothing, then explicitly
clearing the returned data as a separate step.
Mako88 reports that using `-pilot Mixed` on Windows causes crashes
during multiplayer setup, but `-pilot mixed` does not crash. This is
not reproducible on case sensitive filesystems, probably because case
sensitive systems recognize that `Mixed.plr` and `mixed.plr` are not the
same file. In both cases, the underlying plr file name was all
lowercase. Coerce the pilot name to lowercase when it is converted to a
plr file name. This also fixes a minor bug where the check for a
user-specified extension of `.plr` would recognize `-pilot alice.plr`,
but not recognize `-pilot alice.PLR`.
This is a workaround for a bug in the network code, which becomes
confused and crashes when the player's callsign contains mixed case.
Reported-by: Mako88 <https://github.com/dxx-rebirth/dxx-rebirth/issues/188>
Callers are expected to filter out invalid numbers. Even if they do
not, the only use of the number is to match entries in Stuck_objects.
An invalid match could cause a call to vobjptr() with an invalid index,
but that would be diagnosed by the valptridx checking, so no invalid
memory access will occur.
Many callers of kill_stuck_objects call it twice, once for each of two
walls. Move the flush_fcd_cache up to occur only once, rather than once
per wall.
After fixing the bogus lifeleft assignment, the D2 version is equivalent
to a more thorough version of the D1 version. Delete the D1 version and
use the D2 version for both games.