Commit graph

3306 commits

Author SHA1 Message Date
Kp 389ad4cb1b Pass object &to calc_controlcen_gun_point 2016-04-23 17:59:47 +00:00
Kp 79edcd0c17 Pass object &to player_path_set_orient_and_vel 2016-04-23 17:59:47 +00:00
Kp fa1e0d309c Pass object_base &to add_awareness_event 2016-04-23 17:59:47 +00:00
Kp 49f2768a00 Pass object &to do_firing_stuff 2016-04-23 17:59:47 +00:00
Kp 2a19da88d4 Pass object_base &to move_towards_vector 2016-04-23 17:59:47 +00:00
Kp a3c5f497f8 Pass object_base &to lead_player 2016-04-23 17:59:47 +00:00
Kp e6887bb46b Pass object &to ai_frame_animation 2016-04-23 17:59:47 +00:00
Kp 531725c23f Factor out ai_frame_animation update 2016-04-23 17:59:47 +00:00
Kp 37a47a4f95 Pass object &to do_silly_animation 2016-04-23 17:59:47 +00:00
Kp bf69d7c715 Factor out animation angle update 2016-04-23 17:59:47 +00:00
Kp 730d61a738 Pass object &to init_ai_object 2016-04-23 17:59:47 +00:00
Kp 11cf93a299 Factor out net_udp_listen read loop 2016-04-23 17:59:47 +00:00
Kp 271146e84f Factor out net_udp_flush loop 2016-04-23 17:59:46 +00:00
Kp fc3e488d81 Remove unnecessary write in RAIIsocket::reset 2016-04-23 17:59:46 +00:00
Kp 6d8a0bd249 Refactor ObjectMove* editor functions
Use a template to combine common code.
2016-04-17 00:58:45 +00:00
Kp bc2c77ba67 Lift weapon1 check in ai_do_actual_firing_stuff 2016-04-17 00:58:44 +00:00
Kp aad313c85d Pass object_base &to calc_gun_point 2016-04-09 21:40:27 +00:00
Kp cc4c07185d Combine calls to Laser_create_new_easy 2016-04-09 21:40:27 +00:00
Kp bce267f82f Pass object_base &to ai_turn_randomly 2016-04-09 21:40:27 +00:00
Kp c5f933b462 Pass object_base &to ai_turn_towards_vector 2016-04-09 21:40:27 +00:00
Kp d3b8779cc7 Use PMF helper for lead_player 2016-04-09 21:40:27 +00:00
Kp 95edd77019 Use array<> for ai.cpp globals 2016-04-09 21:40:27 +00:00
Kp 1b65f334cc Compact multi_do_robot_fire 2016-04-09 21:40:27 +00:00
Kp 5235f813cd Fold ai_multi_send_robot_position calls 2016-04-06 03:34:15 +00:00
Kp 4126c6c910 Pass object &to multi_send_robot_position 2016-04-06 03:34:15 +00:00
Kp 0e085e4799 Pass thief ID to recreate_thief 2016-04-06 03:34:15 +00:00
Kp 6e0e286dc8 Pass object &to start_robot_death_sequence 2016-04-06 03:34:15 +00:00
Kp 86b7151140 Shorten ai_multi_send_robot_position 2016-04-06 03:34:14 +00:00
Kp 3828b8ec96 Simplify bump_two_objects conditional 2016-04-06 03:34:14 +00:00
Kp 0c299248d4 Pass object &to apply_damage_to_player 2016-04-06 03:34:14 +00:00
Kp 72aa4bc8fb Pass object &to phys_apply_rot 2016-04-06 03:34:14 +00:00
Kp bad1464dcf Pass object_base &to physics_turn_towards_vector 2016-04-06 03:34:14 +00:00
Kp 6a1e1670cc Pass object_base &to phys_apply_force 2016-04-06 03:34:14 +00:00
Kp 8084bc4244 Factor out key pickup 2016-04-06 03:34:14 +00:00
Kp bb878e46ba Factor out single-player pick_up_energy fallback 2016-04-06 03:34:14 +00:00
Kp 89eb173013 Move draw_object_blob to namespace dcx 2016-04-06 03:34:14 +00:00
Kp c2905bda23 Move check_warn_object_type to namespace dcx 2016-04-06 03:34:13 +00:00
Kp b5afcc4605 Combine draw_object_blob calls to g3_draw_bitmap 2016-04-06 03:34:13 +00:00
Kp 5b3a36e6b8 Remove valptridx operator-(P *, A &) 2016-04-06 03:34:13 +00:00
Kp 5dae1e9080 Use range_for for kill_stuck_objects 2016-04-05 01:10:18 +00:00
Kp 6b5bf5a549 Always check for valid cside for wall1
Previously, if the wall0 test failed, the short-circuit effect of
boolean AND allowed the code to skip initializing wall1, even when cside
and its wall_num should have caused wall1 to be non-NULL.  Swap the
order of the tests so that the short-circuit only skips statements that
have no side effects.

Fixes: 0635dbf108 ("Pass trigger &")
2016-04-05 01:10:18 +00:00
Kp f091ffad39 Factor out ogl_draw_vertex_reticle conditional calls 2016-04-05 01:10:18 +00:00
Kp 34e608e14c Cache kconfig fspacx/fspacy values 2016-04-02 21:26:00 +00:00
Kp f319882e40 Factor out kc_drawinput BM_XRGB usage 2016-04-02 21:26:00 +00:00
Kp 1787a4c2c5 Fix color saturation in kconfig boxes
BM_XRGB doubles its inputs.  35a4736 doubled the inputs explicitly, but
passed them back to BM_XRGB, which doubled them again.  Switch to a
direct call to gr_find_closest_color to skip the second double pass.

Reported-by: Mako88 <https://github.com/dxx-rebirth/dxx-rebirth/issues/192>
Fixes: 35a4736df0 ("Pass color to gr_urect")
2016-04-02 21:25:59 +00:00
zico ab89dcd366 Reworked 586ba9ff6db85b976f074589c5dd7e2d6ff40cd1: Show player ping along with player kills/scores and made it a toggle for HUD configuration so the player can enable it permanently 2016-03-30 20:09:46 +02:00
zico 649475e3bc Removed subtraction of lifeleft for external_explosion in do_endlevel_sequence as it is already happening in object_mode_one() making the explosion animation play too fast 2016-03-30 14:31:13 +02:00
zico 586ba9ff6d Added ability to show ping on HUD player list (to cycle via F7) 2016-03-30 13:54:21 +02:00
Kp dd3cedff3d Add get_ghost_id for multi_do_reappear
Ghosts use the same ID space as players, so reuse function get_player_id
to fetch the ID after checking.

Reported-by: zicodxx <https://github.com/dxx-rebirth/dxx-rebirth/issues/182>
Fixes: 9f26e2211e ("Warn on invalid object ID access")
2016-03-20 20:38:54 +00:00
Kp c1503d0e0f Widen scope of player_info preservation 2016-03-19 19:08:11 +00:00
Kp dc70dd61a5 Move gameseq_init_network_players call into LoadLevel
gameseq_init_network_players updates the Players array after loading a
level.  This should always be done, since players may change their
object number across levels.  Move the call into LoadLevel since some
callers failed to do it.
2016-03-19 19:08:10 +00:00
Kp daaad3b049 Factor out 3d interpreter functions 2016-03-19 19:08:10 +00:00
Kp 34417e9b7a Simplify track_goal setup
Fixes: 7cce4e292d ("Fixed up non-NEWHOMER code for testing purposes")
2016-03-19 19:08:10 +00:00
Kp 27cef20eb3 Move namespace dsx handling to dsx-ns.h 2016-03-19 19:08:10 +00:00
Kp b8f39b024a Move DoMenu into dsx 2016-03-19 19:08:10 +00:00
Kp fcf59268c9 Use range_for for state.cpp 2016-03-19 19:08:09 +00:00
Kp 20e72128de Add configure test and fallback code to support ancient Windows
Windows 2000 has no support for getaddrinfo.  Five years ago (Apr 5
2011), the addition of tracker support
(7f18afd5d7) brought a requirement for
getaddrinfo.  Recently, someone with a working Windows 2000 system
reported that Rebirth no longer starts on Windows 2000.  Although such
systems should not be connected to the Internet, they may still need
name resolution on a LAN.  Add a configure test to probe for getaddrinfo
support and fall back to gethostbyname if needed.

Compiling a binary that works on Windows 2000 requires one of:
* using an ancient SDK that does not declare getaddrinfo
* defining _WIN32_WINNT to exclude Windows XP support
* overriding the SConf test to force failure

Fixes: 7f18afd5d7 ("Client-side implementation for Tracker support by Matt 1360 Vandermeulen including improvements in udp_dns_filladdr and IPv4/IPv6 compability; Very little adjustments by me, too including IPv6 support for Windows (untested); Actual tracker code will follow later as seperate branch when it's done")
2016-03-18 02:05:16 +00:00
Kp 8a09513934 Cache get_local_player in init_player_stats_level 2016-03-18 02:05:16 +00:00
Kp be17cc929d Combine count_number_of_{robots,hostages} into template 2016-03-17 03:34:24 +00:00
Kp 0f35160d55 Shorten gameseq_init_network_players 2016-03-17 03:34:23 +00:00
Kp aaaabfeb31 Fix count of hostages lost
Reported-by: Mako88 <https://github.com/dxx-rebirth/dxx-rebirth/issues/186>
Fixes: c0ca1248fd ("Simplify hostage lost message")
2016-03-09 02:18:52 +00:00
Kp 4b4077bab9 Fix template/helper confusion
Sync non-template types to make helper a better match.  Rename helper to
clarify code flow for readers.

Reported-by: kreatordxx <https://github.com/dxx-rebirth/dxx-rebirth/issues/183>
Fixes: ff67afd440 ("Propagate partial_range up into PHYSFSX_findFiles family")
2016-03-06 18:11:20 +00:00
Chris Taylor e7c437f7fb Address Clang name lookup issues: lookup descent_version_type enumerations against 'Mission' type instead of from Mission/Mission_path instances 2016-03-06 13:01:41 +08:00
Kp 06ed8865b7 Use ={} for init_all_vertices Vertex_active 2016-03-05 17:26:24 +00:00
zico 57c33695e6 Do not read pdata packets while the level isn't loaded and try not to send packets to players in these states. 2016-03-05 12:05:43 +01:00
Kp 4a5b2c0999 Remove morphing model stub glow_num support
Simplify the code by removing the dead path.
2016-03-04 04:12:35 +00:00
Kp 195c589e3f Move file-local classes into anonymous namespace 2016-03-04 04:12:35 +00:00
Kp 0ff78c5475 Fix incorrect index in MultiLevelInv_Count Stolen_items loop
Fixes: cf512cd368 ("In MultiLevelInv_Count, use range_for for powerup-object and StolenItems loops. Also do not set unwanted objects to 0 in switch cases as this is redundant due to initialization at the beginning of the function.")
2016-03-04 04:12:35 +00:00
zico 49a336b263 Reintroduced the lost HOMING_TURN_TIME division for homing missile acceleration 2016-03-03 19:39:29 +01:00
Kp 217357711f Move some argument processing to dcx 2016-03-02 02:52:44 +00:00
zico 7cce4e292d Fixed up non-NEWHOMER code for testing purposes 2016-02-29 16:42:49 +01:00
zico 8d69b1924b Added a failsafe to randomized player selection in maybe_drop_net_powerup() that will prevent the loop to hang and go with Player_num instead 2016-02-29 16:31:20 +01:00
zico cf512cd368 In MultiLevelInv_Count, use range_for for powerup-object and StolenItems loops. Also do not set unwanted objects to 0 in switch cases as this is redundant due to initialization at the beginning of the function. 2016-02-29 16:13:48 +01:00
zico d5c11c42e4 In multi_prep_level_player() declared i as loop-local 2016-02-29 16:04:44 +01:00
zico e47a1f3d91 Turned drop_playerobj in chrose_drop_segment() into reference 2016-02-29 15:58:36 +01:00
Kp 95ab6076a4 Move FakingInvul to player_info
Every player can fake invulnerability independently.  In preparation for
host tracking, store FakingInvul as a player property, not a static
global.
2016-02-27 19:02:21 +00:00
Kp 788ed1bd70 Compact laser firing code 2016-02-27 19:02:21 +00:00
zico 901a554e96 New powerup management code: Addeed functions and packet type to keep track of original and current level inventory as well as player and thief inventories. Calling maybe_drop_net_powerup() for all ammo based weapons except Concussion missiles. Limiting maybe_drop_net_powerup() to only spawn items missing from initial level inventory. Added function to let host respawn items that were lost for whatever reason. Expanded maybe_drop_net_powerup() and child functions to be able to drop item based on a random player. Changed back maybe_drop_secondary_weapon_egg() to its original behavior, dropping 3 of each type max. 2016-02-25 14:11:08 +01:00
Kp ea8ca1d1e2 Pass update_flicker timer as argument
Clang fails to compile update_flicker<0x80000000>(...); gcc handles it
properly.  A template is not necessary here, so switch to passing the
value as an argument.  Both compilers accept this.

Reported-by: kreatordxx <private mail>
Fixes: 5b9ccda8e8 ("Simplify update_flicker")
2016-02-25 02:36:40 +00:00
zico 2e6aa0f081 Took out obj_unlink() call in net_udp_read_object_packet(). As of 7064fcccba obj->segnum is undefined and obj_unlink() would be called for undefined objects, causing some new objects to not appear for rejoining players. Since init_objects() is called beforehand and host should not be able to send the same object twice, this whole call should be unnecessary to begin with. 2016-02-23 14:25:17 +01:00
Kp c26a688af5 Unify tmap storage branches 2016-02-20 17:28:11 +00:00
Kp d5a12ba5af Cache afterburner bar temporaries 2016-02-20 17:28:11 +00:00
Kp 0bf60e5661 Hide bogus demo cloak/invul timers
Demo files do not record cloak/invulnerability times, so the playback
code sets a fake time of "50% elapsed" for the entire time that the
effect is active.  This causes two problems in playback.  The first,
which always applied, but was mostly ignored, is that the viewer does
not get the blinking warning that the effect will expire soon.  The
second, which became visible with the addition of cloak/invulnerability
digital timers, is that demos always report "15" as the time remaining,
for the entire time that the effect is active.  Old demos cannot be
fixed, so hide the problem by forcing the timers to be hidden when
viewing a demo.
2016-02-20 17:28:11 +00:00
Kp c3003fbb22 Fix vulcan ammo display
Do not abuse `f2i` to shift an unsigned quantity.  `f2i` is defined to
work on `fix`, which is `int`.
2016-02-20 17:28:11 +00:00
Kp 3c20c24ac0 Disable piggy_bitmap_page_out_all 2016-02-20 17:28:11 +00:00
zico 0215759746 Merge branch 'unification/master' of github.com:dxx-rebirth/dxx-rebirth into unification/master 2016-02-15 13:05:38 +01:00
zico 4ef50976ed Revised a055aecee5. Removed secondaries cap for Multiplayer but restared for Singleplayer (for gameplay/balance). Limit could be restored for Multiplayer if levels were otherwise properly repopulated (planned) 2016-02-15 13:05:17 +01:00
Kp 90de22b2a5 Fix invalid access reading demos
Fixes: 74dfa29d31 ("Convert most Trigger references to valptridx")
2016-02-14 18:40:57 +00:00
Kp e36abb25cb Fix invalid access reading demos
Casting the address of a short to `sbyte*` invites trouble.  In this
case, it allows uninitialized garbage to be used as the high bits of the
wall index.

Fixes: 553b313099 ("Use vwallptr")
2016-02-14 18:40:57 +00:00
zico 081e5d5e3c Removed rounding offset of x starting coordinate in ogl_ulinec which should hopefully unwanted horizontal offsets in Status Bar energy and afterburner gauges (without causing more problems) if Multisampling is applied 2016-02-14 13:59:02 +01:00
zico a055aecee5 Apply count cap in maybe_drop_secondary_weapon_egg to bombs only 2016-02-14 12:49:45 +01:00
zico ed25a5c38d Eliminate frame dependent damage with blast weapons - as seen in DXX-Retro 532f271af26d6341563d3763d5bb2dce33de7582 2016-02-14 12:15:30 +01:00
Kp 6091b65707 Move score to screen edge for CM_FULL_SCREEN
The score is moved in from the edge to avoid overlapping the cockpit
graphic, but the move was applied even when no cockpit was shown.
Change it to align the score when running without the cockpit graphic.

Reported-by: roncli <https://github.com/dxx-rebirth/dxx-rebirth/issues/175>
2016-02-12 04:02:28 +00:00
Kp 6edab5ca0a Pass cv_font to get_centered_x 2016-02-12 04:02:28 +00:00
Kp a92ab4079f Cache font extent while drawing 2016-02-12 04:02:28 +00:00
Kp 85129248c9 Combine gr_internal_string0_template VideoOffset updates 2016-02-12 04:02:28 +00:00
Kp 938032e51d Unify gauges draw paths 2016-02-12 04:02:28 +00:00
Kp cc18ad2b68 Fix some -Wshadow warnings 2016-02-12 04:02:28 +00:00
Kp 08de1bbff0 Remove cv_color
It is only ever set to 0 or copied from other canvases.  Set it to zero
everywhere.
2016-02-12 04:02:28 +00:00
Kp f4e1ebb576 Remove unnecessary gr_setcolor calls 2016-02-12 04:02:28 +00:00
Kp 5f073b6546 Avoid reloading cv_color in reticle drawer 2016-02-12 04:02:28 +00:00
Kp 972654c140 Pass color to draw_listed_segments 2016-02-12 04:02:28 +00:00
Kp 9d2659ab26 Pass color to draw_wall_side 2016-02-12 04:02:28 +00:00
Kp 12bd8bce35 Pass color to draw_trigger_side 2016-02-12 04:02:28 +00:00
Kp cc8bed5b95 Pass color to draw_side_edge 2016-02-12 04:02:28 +00:00
Kp 7694fff456 Pass color to draw_seg_side 2016-02-12 04:02:28 +00:00
Kp fd834f0924 Pass color to draw_segment 2016-02-12 04:02:28 +00:00
Kp 8066361076 Pass color to draw_player 2016-02-12 04:02:28 +00:00
Kp 68cf7939a2 Pass color to draw_line 2016-02-12 04:02:28 +00:00
Kp d08bfc3170 Pass color to g3_draw_sphere 2016-02-12 04:02:28 +00:00
Kp 1b4b6673ee Pass color to g3_draw_poly 2016-02-12 04:02:28 +00:00
Kp 8c24eaa721 Pass color to g3_draw_line 2016-02-12 04:02:28 +00:00
Kp 36bd39babe Pass color to gr_line 2016-02-12 04:02:28 +00:00
Kp 3c73d44771 Pass color to gr_disk 2016-02-12 04:02:28 +00:00
Kp ecb71ba22e Pass color to gr_ucircle 2016-02-12 04:02:28 +00:00
Kp edd2acc86b Pass color to gr_box 2016-02-12 04:02:28 +00:00
Kp de08a67321 Pass color to gr_ubox 2016-02-12 04:02:28 +00:00
Kp 23047b1165 Pass color to gr_rect 2016-02-12 04:02:28 +00:00
Kp 35a4736df0 Pass color to gr_urect 2016-02-12 04:02:28 +00:00
Kp f235d6b12b Pass color to gr_pixel 2016-02-12 04:02:28 +00:00
Kp 053901b62b Pass color to gr_uline 2016-02-12 04:02:28 +00:00
Kp 0dcfa6fba5 Pass color to ogl_urect 2016-02-12 04:02:28 +00:00
Kp 228bbe999a Unify draw_automap key color lookup 2016-02-12 04:02:28 +00:00
Kp d2d9d2bf5a Unify op_flatpoly color setup 2016-02-12 04:02:28 +00:00
Kp 1c04cb70d9 Change ogl_ubitmapm_cs constant -1 to const white 2016-02-12 04:02:28 +00:00
Kp 2a50243a07 Separate out ogl_ubitmapm_cs color setup 2016-02-12 04:02:28 +00:00
Kp 553b313099 Use vwallptr 2016-02-12 04:02:28 +00:00
Kp 2fd6a425b0 Remove highest_valid 2016-02-12 04:02:28 +00:00
Kp e07c9a5f87 Combine ft_chars, ft_allocdata into one allocation 2016-02-12 04:02:28 +00:00
Kp 4aea3b8fdc Shorten ogl_set_blending 2016-02-12 04:02:28 +00:00
Kp 230f2dbb19 Make cv_blend_func OGL-specific 2016-02-12 04:02:28 +00:00
Kp b57f08c798 Use partial_const_range 2016-02-12 04:02:28 +00:00
Kp 31716bbf42 Factor out draw_special_segments color lookup 2016-02-11 03:25:52 +00:00
Kp 2acad85061 Remove unnecessary zero-fill in ogl_ubitmapm_cs 2016-02-11 03:25:52 +00:00
Kp 17c750a101 Cache font scale values at function scope 2016-02-10 03:58:05 +00:00
Kp 5c75d19dba Fold ogl_internal_string calls to ogl_ubitmapm_cs 2016-02-10 03:58:05 +00:00
Kp c5f4daa11b Remove write-only trigger field time 2016-02-06 22:12:55 +00:00
Kp 6e20d86941 Move OF_PLAYER_DROPPED into drop_powerup
This fixes an issue where calling drop_powerup with num > 1 only tagged
one powerup as player-dropped.

This also changes powerups dropped by the thief to be "player-dropped",
since, aside from the initial shields/energy, they came from the player
originally.
2016-02-06 22:12:55 +00:00
Kp 08248331a9 Unify do_door_close 2016-02-06 22:12:55 +00:00
Kp 1f9e69b0b7 Replace highest_valid(V,offset) with partial_range 2016-02-06 22:12:55 +00:00
Kp 71d4c3a0e1 Reuse gr_init_font for gr_remap_font 2016-02-06 22:12:55 +00:00
Kp 5d9c64e8fc Fuse gr_string test/add 2016-02-06 22:12:55 +00:00
Kp 198540d080 Use range_for in bm.cpp 2016-02-06 22:12:54 +00:00
Kp ec025d4e88 Pass common highest_valid to vptr factory 2016-02-06 22:12:54 +00:00
Kp 0101f98905 Use wallnum_t in more places 2016-02-06 22:12:54 +00:00
Kp bb5d1bb7e5 Use valptridx array type for Walls 2016-02-06 22:12:54 +00:00
Kp 72d2844070 Use enum for trigger flags 2016-02-06 22:12:54 +00:00
Kp 74dfa29d31 Convert most Trigger references to valptridx 2016-02-06 22:12:54 +00:00
Kp 4f0cbcffa9 Use valptridx array type for Triggers 2016-02-06 22:12:53 +00:00
Kp 4d72f88ae1 Preprocess out PHYSFSX_writeAngleVec
This is unused now that jointpos_write is preprocessed out.

Fixes: ed55763603 ("Remove unused symbols")
2016-02-02 03:10:53 +00:00