Commit graph

7735 commits

Author SHA1 Message Date
Kp a7e44f58ce Use enum class for tmap_drawer_constant
This allows tmap_drawer_type to use regular functions instead of
template functions and causes the debugger to show the symbolic name of
the type.
2015-11-14 18:17:20 +00:00
Kp 0ebe9e48b8 Remove buddy's useless Player_is_dead test
The headlight should be off when the player is dead.
2015-11-14 18:17:20 +00:00
Kp 7df905c1db Fix weapon selection after respawn
Commit 7da64d3 added the ability to select a weapon when firing stops.
However, it did not take into account that
select_primary_weapon/select_secondary_weapon do not check whether the
selected weapon is available.  The caller must perform that check.  The
draft version proposed by Mako88 in the original feature request mostly
avoided the problem by clearing the delayed auto-select when it was
first applied.  That version would only manifest the problem if the
player had a delayed auto-select and lost the weapon before resolving
it, whether due to death, a thief bot, or, in the case of mines,
direct-dropping the last mine by the "Drop Bomb" key.

The version that went in switched to using delayed==active to indicate
that no change was required.  Under that design, the incorrect
auto-select appears if the player loses the active weapon even if no
delayed selection was pending.

Add a check that the player has the weapon before switching to it and
reset delayed=current if the delayed weapon is not available.  This
fixes all known cases under which a spurious delayed selection could
activate a missing weapon and prevents repeated checks for weapon
availability.

Reported-by: Mako88 <https://github.com/dxx-rebirth/dxx-rebirth/issues/158>
Fixes: 7da64d3782 ("Add new autoselect-while-firing mode: "when firing stops"")
2015-11-12 02:57:45 +00:00
Kp 9a132977b9 Fix drop_player_eggs smart mine logic
The count of mines was not decremented, so a player who entered the loop
could continue to drop until (d_rand() < rthresh) became false.  Halving
rthresh on each pass guaranteed that it would stop, but with the right
string of random numbers, the player could drop more mines than he had.
Remove the ==1 qualifier, so that mines can spawn whenever one will be
lost to rounding.
2015-11-12 02:57:45 +00:00
Kp 93888b4e37 Move collide_two_objects swap back to top
Fixes: 1d7418497e ("Condense collision table")
2015-11-09 02:33:49 +00:00
Kp f5fc9cc324 Prevent selecting slider above maximum value 2015-11-08 18:55:51 +00:00
Kp 36716a9770 Add shift+page(up|down) to move autoselect entry to end 2015-11-08 18:55:51 +00:00
Kp 44c4eb9dc3 Combine exception paths 2015-11-08 18:55:51 +00:00
Kp 1d7418497e Condense collision table 2015-11-08 18:55:50 +00:00
Kp 1a2e4205f6 Combine related call_object_create_egg calls 2015-11-07 21:56:00 +00:00
Kp 9c5b5b3e36 Start ammunition-driven autoselect at 0 2015-11-07 21:56:00 +00:00
Kp 0c86fd507d Fix mingw32 build
Fixes: 38df160341 ("Create platform_settings, env on first use")
2015-11-07 21:56:00 +00:00
Kp 899c335158 Factor out cloak duration lookup for draw_cloaked_object 2015-11-07 21:56:00 +00:00
Kp 6b353cb9ac Move player powerup_flags to object.ctype.player_info 2015-11-07 21:55:59 +00:00
Kp 8a81e25ab0 Move player laser_level to object.ctype.player_info 2015-11-07 21:55:59 +00:00
Kp b788d0b563 Move player primary_weapon_flags to object.ctype.player_info 2015-11-07 21:55:59 +00:00
Kp 8d6949efa6 Move player killer_objnum to object.ctype.player_info 2015-11-07 21:55:59 +00:00
Kp 6037372cdf Move player vulcan_ammo to object.ctype.player_info 2015-11-07 21:55:59 +00:00
Kp e227ef1b32 Move player secondary_ammo to object.ctype.player_info 2015-11-07 21:55:58 +00:00
Kp 6fd6436f14 Move player energy to object.ctype.player_info 2015-11-07 21:55:58 +00:00
Kp 2e28a491f2 Move player shields to struct object 2015-11-07 21:55:58 +00:00
Kp 6eb1676ada Bulk clear secondary_ammo 2015-11-07 21:55:58 +00:00
Kp a0a5aaef8d Fix bogus "You have no" selecting missiles
Fixes: e130ea7b36 ("Remove unnecessary secondary_weapon_flags")
2015-11-06 03:51:10 +00:00
Kp e58cac8741 Document some usage of C++11/C++14 features 2015-11-06 03:51:10 +00:00
Kp 4d2673594e Fix placement of invulnerability timer 2015-11-06 03:51:10 +00:00
Kp c0ca1248fd Simplify hostage lost message 2015-11-06 03:51:10 +00:00
Kp ccee595321 Remove Interpolation_method from OGL build 2015-11-06 03:51:10 +00:00
Kp 19e0a3041c Fix -O0 build
Fixes: 9a6d027e63 ("Factor out weapon cycling")
2015-11-06 03:51:10 +00:00
Kp 7d6ba1bb27 Fix objects disappearing in demos
As usual, demos break the rules.  Redirect demo objects into a fixed
slot in the Objects array so that object linkage does not get trashed.
2015-11-03 03:08:11 +00:00
Kp a40d1efcd0 Sort joystick data smallest first 2015-11-01 21:15:40 +00:00
Kp 6111e5adbf Allow configuring max joysticks at build time 2015-11-01 21:15:40 +00:00
Kp 37bffb75dd Use std::tuple for storing d_physical_joystick members
Simplify later cleanup by hiding the members behind accessors.
2015-11-01 21:15:39 +00:00
Kp b639ba151a Remove unused joystick globals n_axes,n_buttons,n_hats
These are used only in one function.  Make them local only.
2015-11-01 21:15:39 +00:00
Kp 04ee450a07 Take local references to joystick text 2015-11-01 21:15:39 +00:00
Kp 139f2aaa44 Reduce scope of LazyObjectConstructor.__strip_extension 2015-11-01 21:15:39 +00:00
Kp 0a041018c8 Let register_cpp_output_targets see check_header_includes 2015-11-01 21:15:39 +00:00
Kp 83f1a94ec4 Move __shared_header_file_list to create_header_targets 2015-11-01 21:15:39 +00:00
Kp afb1fc3383 Remove special-case for profiler support
Stackable build profiles allow this to be specified without a special
case in SConstruct.
2015-11-01 21:15:39 +00:00
Kp f5dfa1a3b2 Inline banner() 2015-11-01 21:15:39 +00:00
Kp 38df160341 Create platform_settings, env on first use 2015-11-01 21:15:39 +00:00
Kp b35ef80a0f Reduce global lookups 2015-11-01 21:15:38 +00:00
Kp bab5f5f1be Reduce env lookups 2015-11-01 21:15:38 +00:00
Kp add7a80bfc Fix binding mouse button to arm fusion/omega cannon
Commit 3adc5fe77a added the ability to
bind mouse buttons to change weapons, but a copying error bound the
fusion/omega entry to joystick instead of mouse.  Switch it to mouse as
clearly intended.

This fix is needed for any commit with the underlying feature, but only
applies cleanly to 0.58.1 after applying cleanup commits:

    00381b2652 ("Abstract out weapon names")
    d035fb258a ("Remove unused kc_item->id")
    fc1e00dae6 ("Pre-compute labelx+inputx")
    a4f3c93247 ("Separate mutable and const kconfig data")
    953a1888d7 ("Combine state pointer and count pointer")
    2bd302cddd ("Move Controls ubyte values into substructure")
    ff8db8d39e ("Reduce relocations for Controls members")
    593d0b25ff ("Remove duplicate kconfig labels")
    dc36ee3ab3 ("Store kconfig labels separately")

Fixes: 3adc5fe77a ("Saving  weapon keys in PLX like in D1X-Rebirth" ...)
2015-11-01 21:15:38 +00:00
Kp 3a4adbc917 Let kconfig skip zero-width kc_item cells 2015-11-01 21:15:38 +00:00
Kp 545b71c1cc Use enum class for kconfig subtype 2015-11-01 21:15:38 +00:00
Kp b937c732a8 Add stub __attribute_always_inline to VS2013 header 2015-10-30 02:52:57 +00:00
Kp 47ebd05bc3 Use ?: for homing warning gauge 2015-10-30 02:52:57 +00:00
Kp df5e02aed0 Use macro get_local_player_invulnerable_time for player's invulnerable_time 2015-10-30 02:52:56 +00:00
Kp 0285efe49d Use macro get_local_player_cloak_time for player's cloak_time 2015-10-30 02:52:56 +00:00
Kp 17b8b64980 Use macro get_local_player_flags for player's flags 2015-10-30 02:52:56 +00:00