Commit graph

4823 commits

Author SHA1 Message Date
Kp b8a8a61ff8 Simplify multiplayer powerup creation
Instead of creating the powerup from a player, then overwriting the
location and velocity of the powerup, and fixing up its segment, create
the powerup directly where it should be, with the intended velocity.
2022-01-09 15:25:42 +00:00
Kp 94cfeede5c Validate control center trigger sides on load 2022-01-09 15:25:42 +00:00
Kp 078a9affa0 Make MAX_SIDES_PER_SEGMENT an iterable range
Iterating over it returns each side number in turn.  This allows
converting many loops of the form:

```
	for (int i = 0; i < MAX_SIDES_PER_SEGMENT; ++i)
```

to the compact form:

```
	for (const auto i : MAX_SIDES_PER_SEGMENT)
```

The compact form brings the usual benefit of range-based for: delegating
iteration to the compiler prevents the loop body from skipping a step,
and makes clear in the code that this is the case.
2022-01-09 15:25:42 +00:00
Kp 3004dd16e5 Convert some bare integers to sidenum_t 2022-01-09 15:25:42 +00:00
Kp d6b4106d36 Tighten index handling for Ai_transition_table
Avoid undefined accesses when a robot has an invalid awareness type.
2022-01-08 17:48:09 +00:00
Kp 648bbac0b1 Convert ai_local::achieved_state to ai_static_state 2022-01-08 17:48:09 +00:00
Kp d1ac265c2c Convert ai_local::goal_state to ai_static_state 2022-01-08 17:48:09 +00:00
Kp 37f3c10dd4 Convert ai_static::CURRENT_STATE to ai_static_state 2022-01-08 17:48:09 +00:00
Kp c3937f391f Convert ai_static::GOAL_STATE to enum 2022-01-08 17:48:09 +00:00
Kp 9fdf6005df Convert ai_static::GOALSIDE to sidenum_t 2022-01-08 17:48:09 +00:00
Kp c6d98df9fb Move CURRENT_GUN out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp 5128b84122 Move CURRENT_STATE out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp 39e9673f54 Move GOAL_STATE out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp c10855939b Move PATH_DIR out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp 1f00d716de Move SUBMODE/SUB_FLAGS out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp db90f0df62 Move GOALSIDE out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp ae44e0226e Move CLOAKED out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp db7b528177 Move SKIP_AI_COUNT out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp 197ed13d42 Move REMOTE_OWNER out of ai_static::flags 2022-01-08 17:48:09 +00:00
Kp 7015e3e93c Move REMOTE_SLOT_NUM out of ai_static::flags
Some flags merit a type other than int8_t.  Begin moving flags out to
distinct variables with their own type.

Add static_assert checks that the ABI relevant structures do not change.
2022-01-08 17:48:09 +00:00
Kp 3da1fdad0d Log a diagnostic when D1 cannot find target secret level
A level can have a secret exit without having a mission entry describing
where to go when the secret exit is used.  Switch from an assertion
failure in that case to a log message.
2022-01-08 17:48:09 +00:00
Kp 4d5488e493 Remove unused-but-set variable similar/main/piggy.cpp: sbytes 2022-01-07 04:26:22 +00:00
Kp 328046d1ba Use xrange for texture merge loops 2021-12-01 03:15:21 +00:00
Kp 4ac9845f07 Fix clang build of fuelcen.cpp
clang treats names introduced by structured bindings specially, and
refuses to capture them for a lambda, even when it should be capturing
an rvalue reference.  gcc accepts this capture.

Switch to initializing a lambda local variable from the structured
binding in the outer scope, which works with both compilers.

Reported-by: Kreeblah <https://github.com/dxx-rebirth/dxx-rebirth/issues/609>
2021-11-04 03:24:43 +00:00
Kp 92990222a2 Use structured bindings in mission parsing 2021-11-01 03:37:20 +00:00
Kp b0103a1950 Allow non-developers to start on any level 2021-11-01 03:37:20 +00:00
Kp 1ca482d587 Factor out clamping AI times during save
Also, fix a bug that time_player_sound_attacked was clamped, stored, and
then immediately overwritten with an unclamped value.
2021-11-01 03:37:20 +00:00
Kp 2fbddf7a5a Use enum class for tmapinfo_flags 2021-11-01 03:37:20 +00:00
Kp 795b0e9111 Use enum class for station_number 2021-11-01 03:37:20 +00:00
Kp d463b4beba Use enumerate when traversing Station 2021-11-01 03:37:20 +00:00
Kp 3e02f99bcd Use enum class for materialization_center_number 2021-11-01 03:37:20 +00:00
Kp 0389955d7d Fix logic in write_matcen_text
write_matcen_text had a comment warning that its iteration logic was
bogus.  Rework the logic to try to walk the right structures.
2021-11-01 03:37:20 +00:00
Kp d0c028ee2b Use enumerated_array for Two_sides_to_edge 2021-11-01 03:37:20 +00:00
Kp 29b619db99 Pass random generator to pick_random_point_in_seg 2021-11-01 03:37:20 +00:00
Kp 3da988708e Change Side_opposite value_type to sidenum_t 2021-11-01 03:37:20 +00:00
Kp 6467929025 Consolidate Side_to_verts and Side_to_verts_int
They have been the same variable since
a8c3a7f10b ("Alias Side_to_verts to
Side_to_verts_int").
2021-11-01 03:37:20 +00:00
Kp 0044c010ad Use structured bindings for create_abs_vertex_lists 2021-11-01 03:37:20 +00:00
Kp 6fefeadf09 Avoid storing verts_for_normal::negate_flag when not needed
Change it to be returned from get_verts_for_normal, so that callers
which do not need it can discard it.
2021-11-01 03:37:20 +00:00
Kp 164727db9a Pass segment sound flags to do_ambient_sounds 2021-11-01 03:37:20 +00:00
Kp 3862edfb6c Use enum class for segment_special 2021-11-01 03:37:19 +00:00
Kp b0b53c2711 Sanitize segment special in D2 also 2021-11-01 03:37:19 +00:00
Kp 12a0f8e8e0 Use enum class for wall_state 2021-11-01 03:37:19 +00:00
Kp 76e2f2c6d9 Use enum class for wall_flags 2021-11-01 03:37:19 +00:00
Kp f64ed06a9d Use enum class for wall flag constants 2021-11-01 03:37:19 +00:00
Kp 9823c2e33c Fix blastable wall test
WALL_BLASTABLE is a property of the wall flags, not the wall state.
2021-11-01 03:37:19 +00:00
Kp a6f2db2502 Use enum class for player ranking 2021-11-01 03:37:19 +00:00
Kp 8ddfbd17e0 Use enum class for show_kill_list_mode 2021-11-01 03:37:19 +00:00
Kp d22632ac48 Use enum class for msgsend_state 2021-11-01 03:37:19 +00:00
Kp 7cb34fda0c Use enum class for network_game_type 2021-11-01 03:37:19 +00:00
Kp 87cc8f0794 Simplify clearing UDP_Socket
Remove the workaround added for issue #289 [1].  That issue covered a
miscompilation by early versions of gcc-4.9.  gcc-4.9.x is no longer
supported, so the workaround is no longer needed.

[1]: https://github.com/dxx-rebirth/dxx-rebirth/issues/289
2021-11-01 03:37:19 +00:00