Commit graph

8529 commits

Author SHA1 Message Date
Kp 1402a21946 Reintroduce D1 title song bug
In past releases, D1X-Rebirth played the title song even when the user
specified `-notitles`.  Commit 29f79f0a6b
("Enable -notitles for Descent 2") fixed this.  Unfortunately, despite
being called SONG_TITLE, users believe this to be main menu music, not
title screen music.  This belief is reinforced by other code sites that
play the title song on returning to the main menu.  Reintroduce the bug
by moving the call above the test for `-notitles`.  This restores the
semantics that users expect.
2016-08-28 22:41:49 +00:00
Kp c484c55153 Expand get_local_player_invulnerable_time
It was a convenient transition macro, but its presence was always
intended to be temporary.  Expand it to ease the conversion of usage
sites that already have access to local player data through a local
variable.
2016-08-28 22:41:49 +00:00
Kp 4e556efa1b Extend newdemo cloak_time hack to cover invulnerable_time
Descent demos do not record the time remaining on cloak/invulnerability,
so the demo system tries to fake it by forcing any cloaked player to
have a time remaining of 50%.  Extend that hack to do the same for
invulnerability.  The local player needs that hack.  Remote players do
not need it, but the logic is simpler with it in the loop than with a
special case for just the local player.
2016-08-28 22:41:49 +00:00
Kp 335f24ac31 Move Primary_weapon to player_info 2016-08-28 22:41:49 +00:00
Kp bfcf851f5f Remove default argument for get_mapped_weapon_index
Pass the weapon explicitly.
2016-08-28 22:41:48 +00:00
Kp 4af4f00d4b Fix weapon_id_type mismatch in do_laser_firing_player
Per comment, MK meant for this test to match the Helix cannon, but the
implementation was wrong.  Primary weapon indexes cannot be compared to
weapon ID types.  The two use different number spaces.  Using proper
enum types for each causes the compiler to report this mistake.  Fix the
test.
2016-08-28 22:41:48 +00:00
Kp 10ff2b9ea2 Change Primary_weapon_to_weapon_info key to weapon_id_type
Fix incorrect ID in D1 Primary_weapon_to_weapon_info.  Testing suggests
that both the correct and incorrect ID produce the same results.
2016-08-28 22:41:48 +00:00
Kp b7a5f65d5b Move Secondary_weapon to player_info 2016-08-28 22:41:48 +00:00
Kp 4ebf66ae7f Avoid recomputing object* in say_totals 2016-08-28 22:41:48 +00:00
Kp e7b881e5e6 Move Secondary_last_was_super into player_info 2016-08-28 22:41:48 +00:00
Kp adf5e57b47 Move Primary_last_was_super into player_info 2016-08-28 22:41:47 +00:00
Kp 8248438ffa Move Omega_charge to player_info 2016-08-28 22:41:47 +00:00
Kp dc8608cc3c Factor out player-hit-powerup logic 2016-08-28 22:41:47 +00:00
Kp 007963faad Factor out player-hit-flag handling 2016-08-28 22:41:47 +00:00
Kp 1b2052e2bc Fold do_end_briefing_screens calls to songs_play_song 2016-08-28 22:41:47 +00:00
Kp 198cb4e449 Allow rvalue references for some serial.h process_buffer overloads 2016-08-28 22:41:47 +00:00
Kp 4ed57bf70b Simplify multiplayer_command_t truncation check 2016-08-28 22:41:47 +00:00
Kp 0a2676315d Flatten serial.h type constructor pad() 2016-08-28 22:41:46 +00:00
Kp f8568d1d5f Fold proximity mine calls to multi_send_robot_fire 2016-08-25 23:31:37 +00:00
Kp 0b781e021d Use ={} to clear robot velocity 2016-08-25 23:31:37 +00:00
Kp 35928f942c Unify robot-next-gun logic
Old code:

if (condition) {
	x;
	y;
} else {
	y;
}

Change it to be:

if (condition) {
	x;
}
y;
2016-08-25 23:31:37 +00:00
Kp d75de6e705 Reduce scope of object_create_explosion_sub vforce2
Define it where it is first used.

Skip adjusting damage in cases where it will not be used.

Fix obvious copy&paste error from Parallax.

    if (condition)
        statement; statement; statement;

is parsed as:

    if (condition)
    {
        statement;
    }
    statement;
    statement;

In context, all three statements were supposed to be guarded by the
condition.  Add braces accordingly.
2016-08-25 23:31:37 +00:00
Kp ee1003f29f Move conditionally compiled code into namespace dsx 2016-08-25 04:05:32 +00:00
Kp c8ffe5d1ce Move various trigger functions into namespace dsx 2016-08-25 04:05:32 +00:00
Kp 7c348056c1 Inline triggers_frame_process 2016-08-25 04:05:32 +00:00
Kp 8409e2735c Clean whitespace in net_udp_get_new_player_num
net_udp_get_new_player_num used a strange indent convention.
Normalize the whitespace to make parsing easier.
2016-08-25 04:05:32 +00:00
Kp 3693b2317d Move HUD_render_message_frame into namespace dsx 2016-08-25 04:05:32 +00:00
Kp 6d311a97e9 Move hud weapon functions into namespace dsx 2016-08-25 04:05:32 +00:00
Kp 854907aa1b Move find_hitpoint_uv into namespace dsx 2016-08-25 04:05:32 +00:00
Kp dca790584f Remove non-ASCII characters in newmenu.h
Some parsing scripts react badly to finding byte sequences that are not
valid UTF8 characters.
2016-08-25 04:05:31 +00:00
Kp 38b8a34d19 Normalize function return type placement
Using "type\nfunction(args)" confuses some parsing scripts.  Switch to
the standard "type function(args)" style.  Fix sites where keyword
"static" was used after the return type.
2016-08-25 04:05:31 +00:00
Kp 18a479a308 Change multi_send_macro to handle invalid inputs
No caller passes a key value other than [KEY_F9, KEY_F12].  If one did,
an invalid array reference would occur.  Restructure the code to return
on invalid inputs.  This fixes a flow control analysis warning.
2016-08-25 04:05:31 +00:00
zico 89a2df0e18 Restored object_is_trackable to its original version for D2X. Restored conditions in track_track_goal to their original version. Scale homing_missile_turn_towards_velocity by HOMING_TURN_TIME if NEWHOMER since it may not be called in every frame. 2016-08-22 13:55:09 +02:00
Kp 16318e7c9e Remove empty #if/#endif in loadgl.h
Prior rewrites left empty conditionals.  Remove those conditionals.
2016-08-22 00:31:15 +00:00
Kp 655d0e6714 Remove unused loadgl typedefs
Per request from Mako88, remove unused loadgl typedefs.  loadgl.h
was imported from elsewhere and defines typedefs for many functions
that Descent does not use.  Some of these are guarded by WINVER
conditionals and, in Mako88's unspecified environment, defining WINVER
to expose these results in a build failure because the guarded typedef
requires a type that is not defined by the environment.

Compensate for that by removing all unused gl typedefs.

    # Save the results to a file, then run the file separately.  This
    # avoids any chance that sed might try to edit the file while later
    # searches are still running.
    git grep 'typedef .*OGLFUNCCALL \*' common/include/loadgl.h | sed -e 's/^.*OGLFUNCCALL \*//' -e 's/).*$//' | while read f; do
        if ! git grep -q 'DEFVAR\s'"$f"'\>' -- common/include/loadgl.h; then
            echo "/\\<$f\\>/d"
        fi
    done > unused.sed
    sed -i common/include/loadgl.h -f unused.sed
2016-08-22 00:31:15 +00:00
Kp d851ee988d Fix wording of linker diagnostic report 2016-08-22 00:31:15 +00:00
Kp f50aef0241 Remove unused loadgl indirections
Per request from Mako88, remove unused loadgl indirections.  loadgl.h
was imported from elsewhere and defines indirections for many functions
that Descent does not use.  Some of these are guarded by WINVER
conditionals and, in Mako88's unspecified environment, defining WINVER
to expose these results in a build failure because the guarded typedef
requires a type that is not defined by the environment.

Compensate for that, and likely improve the generated code, by removing
all unused gl symbols.

    # Save the results to a file, then run the file separately.  This
    # avoids any chance that sed might try to edit the file while later
    # searches are still running.
    s=( `git ls-files '*.h' '*.cpp' | grep -v -F common/include/loadgl.h` )
    git grep '#define w\?gl[A-Z]\w\+ dw\?gl' common/include/loadgl.h |
	    gawk '{print $2;}' | while read f; do
	    if ! git grep -q -l '\<d\?'"$f"'\>' -- "${s[@]}"; then
		    echo "/\\<d\?$f\\>/d"
	    fi
    done > unused.sed
    sed -i common/include/loadgl.h -f unused.sed
2016-08-20 22:28:44 +00:00
Kp 3d6108ae09 Include inttypes.h in playsave.cpp
Mako88 reports that an unspecified environment fails to build
playsave.cpp.  The failure is because PRIuFAST32 is undefined.  In most
environments, SDL automatically includes inttypes.h, which provides
PRIuFAST32.  In this unspecified environment, SDL does not include
inttypes.h.  Include it explicitly to ensure the definition is
available.
2016-08-20 22:28:43 +00:00
Kp 63c5b5f9ea Clean up SConstruct global namespace 2016-08-20 22:28:43 +00:00
Kp 7bb3a5605b Remove useless cast in similar/editor/info.cpp 2016-08-20 22:28:43 +00:00
Kp b7b37bc056 Switch valptridx error reporting size to DXX_PRI_size_type 2016-08-20 22:28:43 +00:00
Kp ef93feca38 Enable -Wuseless-cast 2016-08-19 03:41:42 +00:00
Kp 6691a1ff33 Split credits_show special case into dedicated functions 2016-08-19 03:41:42 +00:00
Kp 2eda0d98ee Add workaround for Win32 array::size() triggering -Wuseless-cast
As described in commit 674a921 ("Add workaround for Win32 wrong type for
size_t"), std::array on Win32 returns type std::size_t, which is
`unsigned int` instead of the `unsigned long` seen on Linux.  Calling
std::min requires both arguments to have the same type.  On Linux, this
required casting the result of size() to `unsigned` to match the other
input.  On Win32, that cast provokes a -Wuseless-cast warning.  Add a
workaround by removing the cast and instead explicitly setting the type
of std::min's arguments to `unsigned`, then relying on the compiler to
perform an implicit conversion from `unsigned long` to `unsigned int`
on Linux.  The value is always small enough to fit in an `unsigned int`,
so no precision loss will occur.
2016-08-19 03:41:42 +00:00
Kp e3ecc0715c Remove useless cast in similar/main/net_udp.cpp 2016-08-19 03:41:42 +00:00
Kp bbdecad649 Add helper macro to handle printf .* conversion for 32/64
Field width conversion `.*` always takes an `int`.

On Win32, casting `long` to `int` triggers a `-Wuseless-cast` warning.
Omitting the cast works correctly.

On Linux/amd64, casting `long` to `int` works correctly.
Omitting the cast triggers a `-Wformat` warning.

Add a macro that conditionally expands to `static_cast<int>` or to ``,
as necessary for the target platform.
2016-08-19 03:41:41 +00:00
Kp 7f0f269aec Switch write_netgame_profile to use inttypes format macros
Most 64-bit systems use `unsigned long` for `uint_fast32_t`.  Some
32-bit systems use `unsigned int` for `uint_fast32_t`.  To handle this,
write_netgame_profile used casts to `unsigned` and a format string of
`%u`.  Switch to inttypes format macros so that the format strings are
correct without requiring a cast to handle systems where `uint_fast32_t`
is not `unsigned`.
2016-08-19 03:41:41 +00:00
Kp b87651216c Switch ab_load to use inttypes format macros
Most 64-bit systems use `unsigned long` for `uint_fast32_t`.  Some
32-bit systems use `unsigned int` for `uint_fast32_t`.  To handle this,
ab_load used casts to `unsigned long` and a format string of `%lu`.
Switch to inttypes format macro so that the format string is correct
without requiring a cast to handle systems where `uint_fast32_t` is not
`unsigned long`.
2016-08-19 03:41:41 +00:00
Kp d554b01e45 Remove useless casts in similar/editor/meddraw.cpp 2016-08-19 03:41:41 +00:00
Kp fca91b78c7 Remove useless casts in similar/main/multi.cpp 2016-08-19 03:41:41 +00:00