Move collision functions into namespaces

This commit is contained in:
Kp 2021-06-28 03:37:51 +00:00
parent 40b0b6c8fb
commit 9c08b233a5
2 changed files with 43 additions and 38 deletions

View file

@ -36,8 +36,8 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "fwd-window.h"
#if defined(DXX_BUILD_DESCENT_I) || defined(DXX_BUILD_DESCENT_II)
void collide_two_objects(vmobjptridx_t A, vmobjptridx_t B, vms_vector &collision_point);
namespace dsx {
void collide_two_objects(vmobjptridx_t A, vmobjptridx_t B, vms_vector &collision_point);
window_event_result collide_object_with_wall(
#if defined(DXX_BUILD_DESCENT_II)
const d_level_shared_destructible_light_state &LevelSharedDestructibleLightState,
@ -58,18 +58,12 @@ int apply_damage_to_robot(vmobjptridx_t robot, fix damage, objnum_t killer_objnu
#ifdef dsx
namespace dsx {
void collide_player_and_materialization_center(vmobjptridx_t objp);
}
#endif
void collide_robot_and_materialization_center(vmobjptridx_t objp);
#ifdef dsx
namespace dsx {
bool scrape_player_on_wall(vmobjptridx_t obj, vmsegptridx_t hitseg, unsigned hitwall, const vms_vector &hitpt);
int maybe_detonate_weapon(vmobjptridx_t obj0p, object &obj, const vms_vector &pos);
void collide_player_and_nasty_robot(vmobjptridx_t player, vmobjptridx_t robot, const vms_vector &collision_point);
}
#endif
void collide_player_and_nasty_robot(vmobjptridx_t player, vmobjptridx_t robot, const vms_vector &collision_point);
namespace dcx {
void bump_one_object(object_base &obj0, const vms_vector &hit_dir, fix damage);

View file

@ -110,7 +110,6 @@ void bump_one_object(object_base &obj0, const vms_vector &hit_dir, const fix dam
const auto hit_vec = vm_vec_copy_scale(hit_dir, damage);
phys_apply_force(obj0,hit_vec);
}
}
namespace {
@ -126,6 +125,11 @@ static int check_collision_delayfunc_exec()
return 0;
}
static fix64 Last_volatile_scrape_time;
static fix64 Last_volatile_scrape_sound_time;
}
}
// -------------------------------------------------------------------------------------------------------------
@ -432,12 +436,6 @@ static void collide_player_and_wall(const vmobjptridx_t playerobj, const fix hit
return;
}
}
}
static fix64 Last_volatile_scrape_time = 0;
static fix64 Last_volatile_scrape_sound_time = 0;
namespace dsx {
#if defined(DXX_BUILD_DESCENT_I)
static
@ -725,7 +723,6 @@ int check_effect_blowup(const d_level_shared_destructible_light_state &LevelShar
return 0; //didn't blow up
}
}
//these gets added to the weapon's values when the weapon hits a volitle wall
#define VOLATILE_WALL_EXPL_STRENGTH i2f(10)
@ -735,7 +732,8 @@ int check_effect_blowup(const d_level_shared_destructible_light_state &LevelShar
// int Show_seg_and_side = 0;
namespace dsx {
namespace {
static window_event_result collide_weapon_and_wall(
#if defined(DXX_BUILD_DESCENT_II)
const d_level_shared_destructible_light_state &LevelSharedDestructibleLightState,
@ -1006,6 +1004,9 @@ static window_event_result collide_weapon_and_wall(
return result;
}
}
}
namespace {
static void collide_debris_and_wall(const vmobjptridx_t debris, const unique_segment &hitseg, const unsigned hitwall, const vms_vector &)
{
@ -1029,7 +1030,12 @@ static void collide_robot_and_controlcen(object_base &obj_robot, const object_ba
bump_one_object(obj_robot, hitvec, 0);
}
}
namespace dsx {
namespace {
static void collide_robot_and_player(const vmobjptridx_t robot, const vmobjptridx_t playerobj, const vms_vector &collision_point)
{
#if defined(DXX_BUILD_DESCENT_II)
@ -1098,6 +1104,8 @@ static void collide_robot_and_player(const vmobjptridx_t robot, const vmobjptrid
return;
}
}
// Provide a way for network message to instantly destroy the control center
// without awarding points or anything.
@ -1169,6 +1177,8 @@ void apply_damage_to_controlcen(const vmobjptridx_t controlcen, fix damage, cons
}
}
namespace {
static void collide_player_and_controlcen(const vmobjptridx_t playerobj, const vmobjptridx_t controlcen, const vms_vector &collision_point)
{
auto &LevelUniqueControlCenterState = LevelUniqueObjectState.ControlCenterState;
@ -1344,6 +1354,8 @@ static void collide_weapon_and_clutter(object_base &weapon, const vmobjptridx_t
maybe_kill_weapon(weapon,clutter);
}
}
//--mk, 121094 -- extern void spin_robot(object *robot, vms_vector *collision_point);
#if defined(DXX_BUILD_DESCENT_II)
@ -1508,9 +1520,9 @@ int apply_damage_to_robot(const vmobjptridx_t robot, fix damage, objnum_t killer
return 0;
}
#if defined(DXX_BUILD_DESCENT_II)
namespace {
#if defined(DXX_BUILD_DESCENT_II)
enum class boss_weapon_collision_result : uint8_t
{
normal,
@ -1622,11 +1634,7 @@ static boss_weapon_collision_result do_boss_weapon_collision(const d_level_share
}
return boss_weapon_collision_result::normal;
}
}
#endif
namespace {
// ------------------------------------------------------------------------------------------------------
static void collide_robot_and_weapon(const vmobjptridx_t robot, const vmobjptridx_t weapon, vms_vector &collision_point)
{
@ -2096,9 +2104,6 @@ void drop_player_eggs(const vmobjptridx_t playerobj)
}
}
}
}
namespace dsx {
void apply_damage_to_player(object &playerobj, const icobjptridx_t killer, fix damage, ubyte possibly_friendly)
{
@ -2150,9 +2155,8 @@ void apply_damage_to_player(object &playerobj, const icobjptridx_t killer, fix d
}
}
}
namespace {
namespace dsx {
static void collide_player_and_weapon(const vmobjptridx_t playerobj, const vmobjptridx_t weapon, vms_vector &collision_point)
{
auto &Objects = LevelUniqueObjectState.Objects;
@ -2236,6 +2240,7 @@ static void collide_player_and_weapon(const vmobjptridx_t playerobj, const vmobj
return;
}
}
// Nasty robots are the ones that attack you by running into you and doing lots of damage.
@ -2251,6 +2256,8 @@ void collide_player_and_nasty_robot(const vmobjptridx_t playerobj, const vmobjpt
apply_damage_to_player(playerobj, robot, F1_0 * (GameUniqueState.Difficulty_level + 1), 0);
}
namespace {
static vms_vector find_exit_direction(vms_vector result, const object &objp, const cscusegment segp)
{
auto &LevelSharedVertexState = LevelSharedSegmentState.get_vertex_state();
@ -2268,7 +2275,8 @@ static vms_vector find_exit_direction(vms_vector result, const object &objp, con
return result;
}
namespace dsx {
}
void collide_player_and_materialization_center(const vmobjptridx_t objp)
{
const auto &&segp = vmsegptridx(objp->segnum);
@ -2291,10 +2299,6 @@ void collide_player_and_materialization_center(const vmobjptridx_t objp)
#elif defined(DXX_BUILD_DESCENT_II)
apply_damage_to_player( objp, objp, 4*F1_0, 0); // Changed, MK, 2/19/96, make killer the player, so if you die in matcen, will say you killed yourself
#endif
return;
}
}
void collide_robot_and_materialization_center(const vmobjptridx_t objp)
@ -2314,6 +2318,8 @@ void collide_robot_and_materialization_center(const vmobjptridx_t objp)
return;
}
}
void collide_live_local_player_and_powerup(const vmobjptridx_t powerup)
{
if (do_powerup(powerup))
@ -2324,6 +2330,8 @@ void collide_live_local_player_and_powerup(const vmobjptridx_t powerup)
}
}
namespace {
static void collide_player_and_powerup(object &playerobj, const vmobjptridx_t powerup, const vms_vector &)
{
if (!Endlevel_sequence &&
@ -2359,9 +2367,12 @@ static void collide_player_and_clutter(const vmobjptridx_t playerobj, const vmo
return;
}
}
// See if weapon1 creates a badass explosion. If so, create the explosion
// Return true if weapon does proximity (as opposed to only contact) damage when it explodes.
namespace dsx {
int maybe_detonate_weapon(const vmobjptridx_t weapon1, object &weapon2, const vms_vector &collision_point)
{
if ( Weapon_info[get_weapon_id(weapon1)].damage_radius ) {
@ -2384,9 +2395,9 @@ int maybe_detonate_weapon(const vmobjptridx_t weapon1, object &weapon2, const vm
} else
return 0;
}
}
namespace dsx {
namespace {
static void collide_weapon_and_weapon(const vmobjptridx_t weapon1, const vmobjptridx_t weapon2, const vms_vector &collision_point)
{
#if defined(DXX_BUILD_DESCENT_II)
@ -2429,11 +2440,8 @@ static void collide_weapon_and_weapon(const vmobjptridx_t weapon1, const vmobjpt
maybe_detonate_weapon(weapon1,weapon2, collision_point);
#endif
}
}
}
namespace dsx {
static void collide_weapon_and_debris(const vmobjptridx_t weapon, const vmobjptridx_t debris, const vms_vector &collision_point)
{
#if defined(DXX_BUILD_DESCENT_II)
@ -2455,7 +2463,6 @@ static void collide_weapon_and_debris(const vmobjptridx_t weapon, const vmobjptr
}
return;
}
}
#if defined(DXX_BUILD_DESCENT_I)
#define DXX_COLLISION_TABLE(NO,DO) \
@ -2554,6 +2561,8 @@ struct assert_no_truncation
static_assert(static_cast<T>(V) == V, "truncation error");
};
}
void collide_two_objects(vmobjptridx_t A, vmobjptridx_t B, vms_vector &collision_point)
{
if (B->type < A->type)
@ -2576,6 +2585,8 @@ void collide_two_objects(vmobjptridx_t A, vmobjptridx_t B, vms_vector &collision
}
}
}
#define ENABLE_COLLISION(type1,type2,f) \
COLLISION_RESULT(type1, type2, collision_result::check); \
COLLISION_RESULT(type2, type1, collision_result::check); \