Commit graph

244 commits

Author SHA1 Message Date
Kp 0c219e596e Use enum for object movement type 2016-11-20 23:12:00 +00:00
Kp 4497812674 Use enum for object type 2016-11-20 23:12:00 +00:00
Kp e4afb78124 Fix undefined access to ai_info of non-robots
Only robots have ctype.ai_info.  Skip the sniper special case for
objects that are not robots.
2016-11-19 18:09:26 +00:00
Kp dc881ec12d Merge pull #266 into master 2016-11-19 18:09:26 +00:00
Kp 382d337118 Switch obj_get_signature to std::any_of
Also, split the predicate into separate statements to improve the output
of analysis tools.
2016-11-19 17:24:53 +00:00
Chris Taylor cc3f35649f Change all occurrences of "Couldn't" to "Could not" for consistency ("Could not" is more common and wins).
Not touching TXT_COULDNT because it's stored separately in hog file.
2016-11-13 13:27:18 +08:00
zico dafd4a69be Fixed and revamped 30f9233b36e9e546a7479fd152331b7b0d689d47: initialize segnum for objects during object syncing only. Should only be required for OBJ_NONE but since net_udp_read_object_packet() does only process changed objects and setting segnum in init_objects() isn't desired, this initialization is applied to all objects (except the host player object) before the sync process. 2016-11-12 15:52:16 +01:00
Kp b19e93cc04 Skip tracking idx in obj_get_signature 2016-11-10 04:22:19 +00:00
Kp 188ef99536 Assert that newly allocated objects are type OBJ_NONE 2016-11-10 04:22:18 +00:00
zico 30f9233b36 Reverted 2e6aa0f081 and partially reverted 7064fcccba to still allow segnum and signature init for multiplayer games, keeping consistency during object sync. 2016-11-08 14:16:26 +01:00
Kp a59de2860e Poison more undefined variables 2016-11-06 17:12:03 +00:00
Kp 7ccd537362 Fix build break from 30f9233
Commit 30f9233b36 introduced a test for
Game_Mode, which does not exist, rather than Game_mode, which does
exist.  However, the test for game mode is unnecessary.  Objects of type
OBJ_NONE are always in segment_none and no object of any other type
should be in segment_none.  Use that fact to test obj->type instead of
obj->segnum during multiplayer object clobber, so that multiplayer can
overwrite unallocated objects without accessing any undefined fields and
without making object::segnum a defined field.

Fixes: 30f9233b36 ("Reverted 2e6aa0f081 and partially reverted 7064fcccba to still allow segnum and signature init for multiplayer games, keeping consistency during object sync.")
2016-11-06 17:12:03 +00:00
Kp e231fb7d3a Restructure object linkage checks
Move the main part of obj_link into obj_link_unchecked.  Implement
obj_link as sanity check assertions followed by a call to
obj_link_unchecked.  Remove caller-side writes that were present solely
to bypass the assertions, since the assertions can now be bypassed by
calling obj_link_unchecked directly.
2016-11-06 17:12:03 +00:00
Kp b75a2e4a68 Pass object &to obj_create_copy 2016-10-29 23:16:18 +00:00
Kp c4cfe54010 Return literal object_none on object_none error path
gcc generates better code for:

	if (variable == magic_constant)
		return magic_constant;

than it does for:

	if (variable == magic_constant)
	    return variable;

even though the two have the same result.  Switch to the form which
generates slightly better code.
2016-10-29 23:16:15 +00:00
Kp f21abc94cb Move player::hostages_on_board to player_info 2016-10-15 00:53:19 +00:00
Kp c1d9c40931 Convert various valptridx accesses to use factory functions 2016-10-15 00:53:18 +00:00
Kp 599bf21b7d Remove paranoid debug-only object checks
These have never been observed to trigger.  Memory corruption prevention
is much better than it was when these were written.
2016-10-15 00:53:17 +00:00
Kp 1dcacefc9c Pass player object to check_trigger 2016-10-02 00:34:47 +00:00
Kp a62cc369ab Expand get_local_player_shields
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-10-02 00:34:40 +00:00
Kp ce65735c04 Expand get_local_player_flags
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-10-02 00:34:40 +00:00
Kp 1b321ac0c6 Expand get_local_player_secondary_ammo
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-10-02 00:34:40 +00:00
Kp 62b58e9890 Move OGL to dxxsconf.h; rename to DXX_USE_OGL
Rename symbol OGL to DXX_USE_OGL to show that it is a DXX
symbol, not one inherited from a library.  Move it to dxxsconf.h to
shorten the command line.

This is a mostly automated transform, but the changes to SConstruct were
manual.

git grep -lzw OGL -- '*.h' '*.cpp' | xargs -0 sed -i -e 's/\(\s*#\s*if\)def\s*OGL/\1 DXX_USE_OGL/' -e 's/\(\s*#\s*if\)ndef OGL/\1 !DXX_USE_OGL/' -e 's/\(\s*#\s*if !\?\)defined(OGL)/\1DXX_USE_OGL/'
2016-09-24 18:06:11 +00:00
Kp 6a3ded191f Move EDITOR to dxxsconf.h; rename to DXX_USE_EDITOR
Rename symbol EDITOR to DXX_USE_EDITOR to show that it is a DXX
symbol, not one inherited from a library.  Move it to dxxsconf.h to
shorten the command line.

This is a mostly automated transform, but the changes to SConstruct were
manual.

git grep -wl EDITOR -- '*.h' '*.cpp' | xargs sed -i -e 's/^\s*#ifdef \(EDITOR\)\>/#if DXX_USE_\1/' -e 's/\s*#\(el\)\?if \(.*\)defined(\(EDITOR\))/#\1if \2DXX_USE_\3/' -e 's/^\s*#ifndef \(EDITOR\)\>/#if !DXX_USE_\1/'
2016-09-11 18:49:16 +00:00
Kp 198b068da6 Expand get_local_player_energy
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-09-11 18:49:13 +00:00
Kp 8a46462846 Move lavafall_hiss_playing into player_info 2016-07-24 04:04:25 +00:00
Kp 8fef6a07b4 Pass const object_base to obj_unlink 2016-07-23 04:10:43 +00:00
Kp 3272caed7d Cache reference to local player energy 2016-07-03 00:54:16 +00:00
Kp 15f2471be0 Cache reference to local player shields 2016-07-03 00:54:16 +00:00
Kp 3b0fccd899 Cache reference to local player secondary ammo 2016-07-03 00:54:15 +00:00
Kp d31f05d89c Pass object_base &to spin_object 2016-04-23 17:59:47 +00:00
Kp d3653c92d8 Pass object_base &to start_player_death_sequence 2016-04-23 17:59:47 +00:00
Kp 2188542f2e Pass object &to set_robot_location_info 2016-04-23 17:59:47 +00:00
Kp e4d1956674 Pass object_base &to obj_detach_one 2016-04-23 17:59:47 +00:00
Kp 5e734d8f38 Pass object_base &to obj_detach_all 2016-04-23 17:59:47 +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 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
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 f4e1ebb576 Remove unnecessary gr_setcolor calls 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 b57f08c798 Use partial_const_range 2016-02-12 04:02:28 +00:00
Kp ec025d4e88 Pass common highest_valid to vptr factory 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 e283a22709 Use enum class for check_volatile_wall 2016-01-29 04:05:47 +00:00
Kp a3ae630829 Remove default argument for basic_ptridx(index) 2016-01-09 16:38:14 +00:00
Kp 9ceedc96a8 Propagate valptridx requirement up 2016-01-09 16:38:14 +00:00