From e8e7c242b2254773262b61c20fcd0aeb21fc4989 Mon Sep 17 00:00:00 2001 From: Sara Date: Sun, 28 Jun 2026 21:25:37 +0200 Subject: [PATCH] feat: updated engine --- engine | 2 +- modules/wave_survival/damage_box.cpp | 7 +++++-- .../wave_survival/enemies/enemy_rifleman.cpp | 2 ++ .../wave_survival/enemies/enemy_wretched.cpp | 1 + modules/wave_survival/enemy_body.cpp | 2 +- modules/wave_survival/enemy_body.h | 1 + modules/wave_survival/enemy_spawner.cpp | 11 +++++++---- modules/wave_survival/enemy_spawner.h | 1 + modules/wave_survival/heads_up_display.cpp | 3 +++ modules/wave_survival/health_status.cpp | 1 + modules/wave_survival/hitbox.cpp | 5 ++++- modules/wave_survival/hitscan_muzzle.cpp | 10 +++++++--- modules/wave_survival/hitscan_muzzle.h | 1 + modules/wave_survival/interactable.cpp | 2 +- modules/wave_survival/interactable.h | 2 +- modules/wave_survival/map_region.cpp | 5 +++-- modules/wave_survival/map_region.h | 2 +- modules/wave_survival/muzzle_effect.cpp | 1 + modules/wave_survival/npc_unit.cpp | 10 ++++++---- modules/wave_survival/npc_unit.h | 1 + modules/wave_survival/patrol_path.cpp | 2 ++ modules/wave_survival/player_body.cpp | 10 ++++++---- modules/wave_survival/player_camera.cpp | 6 ++++-- modules/wave_survival/player_detector.cpp | 6 ++++-- modules/wave_survival/player_input.cpp | 1 + modules/wave_survival/player_interactor.cpp | 10 ++++++---- modules/wave_survival/player_interactor.h | 1 + modules/wave_survival/register_types.cpp | 1 + modules/wave_survival/sound_event_node.cpp | 4 +++- modules/wave_survival/state_machine.cpp | 2 +- modules/wave_survival/weapon_base.cpp | 8 +++++--- modules/wave_survival/weapon_inventory.cpp | 7 +++++-- modules/wave_survival/weapon_inventory.h | 1 + modules/wave_survival/weapons/revolver.cpp | 3 +++ modules/wave_survival/weapons/rifle.cpp | 4 ++++ modules/wave_survival/weapons/rifle.h | 1 - project/maps/game.scn | Bin 2540 -> 2543 bytes project/maps/industrial_area_map.scn | Bin 11941 -> 11939 bytes 38 files changed, 96 insertions(+), 41 deletions(-) diff --git a/engine b/engine index 5ad8b27d..d7c45b19 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit 5ad8b27d8db0776700c2b08bf68fbea5e0a4680d +Subproject commit d7c45b19ccf6ddadc73d1c8423cd2848f59de437 diff --git a/modules/wave_survival/damage_box.cpp b/modules/wave_survival/damage_box.cpp index f7617d5a..cc9ed359 100644 --- a/modules/wave_survival/damage_box.cpp +++ b/modules/wave_survival/damage_box.cpp @@ -1,6 +1,9 @@ #include "damage_box.h" -#include "health_status.h" -#include "hitbox.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" +#include "wave_survival/health_status.h" +#include "wave_survival/hitbox.h" void DamageBox::_bind_methods() { ClassDB::bind_method(D_METHOD("attack_motion_begin"), &self_type::attack_motion_begin); diff --git a/modules/wave_survival/enemies/enemy_rifleman.cpp b/modules/wave_survival/enemies/enemy_rifleman.cpp index ef2e442c..b51f40e0 100644 --- a/modules/wave_survival/enemies/enemy_rifleman.cpp +++ b/modules/wave_survival/enemies/enemy_rifleman.cpp @@ -1,4 +1,6 @@ #include "enemy_rifleman.h" +#include "core/config/engine.h" +#include "core/object/class_db.h" #include "core/os/memory.h" #include "scene/animation/animation_player.h" #include "wave_survival/macros.h" diff --git a/modules/wave_survival/enemies/enemy_wretched.cpp b/modules/wave_survival/enemies/enemy_wretched.cpp index 53d1b604..6cdfee8f 100644 --- a/modules/wave_survival/enemies/enemy_wretched.cpp +++ b/modules/wave_survival/enemies/enemy_wretched.cpp @@ -1,4 +1,5 @@ #include "enemy_wretched.h" +#include "core/config/engine.h" #include "scene/animation/animation_player.h" #include "wave_survival/npc_unit.h" #include "wave_survival/player_body.h" diff --git a/modules/wave_survival/enemy_body.cpp b/modules/wave_survival/enemy_body.cpp index 09a673fd..0de69c1a 100644 --- a/modules/wave_survival/enemy_body.cpp +++ b/modules/wave_survival/enemy_body.cpp @@ -1,5 +1,5 @@ #include "enemy_body.h" -#include "core/math/math_funcs.h" +#include "core/config/engine.h" #include "macros.h" #include "scene/animation/animation_player.h" #include "wave_survival/npc_unit.h" diff --git a/modules/wave_survival/enemy_body.h b/modules/wave_survival/enemy_body.h index 9021acc2..6710fac3 100644 --- a/modules/wave_survival/enemy_body.h +++ b/modules/wave_survival/enemy_body.h @@ -1,6 +1,7 @@ #ifndef ENEMY_BODY_H #define ENEMY_BODY_H +#include "core/object/callable_mp.h" #include "scene/3d/navigation/navigation_agent_3d.h" #include "scene/3d/physics/character_body_3d.h" #include "wave_survival/health_status.h" diff --git a/modules/wave_survival/enemy_spawner.cpp b/modules/wave_survival/enemy_spawner.cpp index ce1c8bbb..c8afecc9 100644 --- a/modules/wave_survival/enemy_spawner.cpp +++ b/modules/wave_survival/enemy_spawner.cpp @@ -1,11 +1,14 @@ #include "enemy_spawner.h" +#include "core/config/engine.h" #include "core/io/resource.h" -#include "core/object/object.h" +#include "core/io/resource_loader.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" #include "macros.h" -#include "map_region.h" -#include "npc_unit.h" -#include "patrol_path.h" #include "scene/resources/packed_scene.h" +#include "wave_survival/map_region.h" +#include "wave_survival/npc_unit.h" +#include "wave_survival/patrol_path.h" void SpawnData::_bind_methods() { BIND_HPROPERTY(Variant::DICTIONARY, difficulty_spawns, PROPERTY_HINT_DICTIONARY_TYPE, vformat("int;%s/%s:PackedScene", Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE)); diff --git a/modules/wave_survival/enemy_spawner.h b/modules/wave_survival/enemy_spawner.h index 87c512e2..fea92e93 100644 --- a/modules/wave_survival/enemy_spawner.h +++ b/modules/wave_survival/enemy_spawner.h @@ -4,6 +4,7 @@ #include "core/io/resource.h" #include "core/templates/hash_map.h" #include "scene/3d/marker_3d.h" +#include "scene/resources/packed_scene.h" class MapRegion; class PatrolPath; diff --git a/modules/wave_survival/heads_up_display.cpp b/modules/wave_survival/heads_up_display.cpp index 50f4d31f..80a20062 100644 --- a/modules/wave_survival/heads_up_display.cpp +++ b/modules/wave_survival/heads_up_display.cpp @@ -1,4 +1,7 @@ #include "heads_up_display.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" HeadsUpDisplay *HeadsUpDisplay::singleton_instance{ nullptr }; diff --git a/modules/wave_survival/health_status.cpp b/modules/wave_survival/health_status.cpp index b10591ad..86d2dc22 100644 --- a/modules/wave_survival/health_status.cpp +++ b/modules/wave_survival/health_status.cpp @@ -1,5 +1,6 @@ #include "health_status.h" #include "core/config/engine.h" +#include "core/object/class_db.h" #include "macros.h" String HealthStatus::sig_death{ "death" }; diff --git a/modules/wave_survival/hitbox.cpp b/modules/wave_survival/hitbox.cpp index 99afb072..40035050 100644 --- a/modules/wave_survival/hitbox.cpp +++ b/modules/wave_survival/hitbox.cpp @@ -1,6 +1,9 @@ #include "hitbox.h" -#include "health_status.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" #include "macros.h" +#include "wave_survival/health_status.h" void Hitbox::_bind_methods() { BIND_HPROPERTY(Variant::OBJECT, health, PROPERTY_HINT_NODE_TYPE, "HealthStatus"); diff --git a/modules/wave_survival/hitscan_muzzle.cpp b/modules/wave_survival/hitscan_muzzle.cpp index df255f5a..d05399c1 100644 --- a/modules/wave_survival/hitscan_muzzle.cpp +++ b/modules/wave_survival/hitscan_muzzle.cpp @@ -1,9 +1,13 @@ #include "hitscan_muzzle.h" -#include "health_status.h" -#include "hitbox.h" +#include "core/config/engine.h" +#include "core/io/resource_loader.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" #include "macros.h" -#include "muzzle_effect.h" #include "scene/resources/packed_scene.h" +#include "wave_survival/health_status.h" +#include "wave_survival/hitbox.h" +#include "wave_survival/muzzle_effect.h" void HitscanMuzzle::_bind_methods() { ClassDB::bind_method(D_METHOD("shoot"), &self_type::shoot); diff --git a/modules/wave_survival/hitscan_muzzle.h b/modules/wave_survival/hitscan_muzzle.h index ac040a73..a87f78b9 100644 --- a/modules/wave_survival/hitscan_muzzle.h +++ b/modules/wave_survival/hitscan_muzzle.h @@ -2,6 +2,7 @@ #define HITSCAN_MUZZLE_H #include "scene/3d/physics/ray_cast_3d.h" +#include "scene/resources/packed_scene.h" class MuzzleEffect; class HitscanMuzzle : public RayCast3D { diff --git a/modules/wave_survival/interactable.cpp b/modules/wave_survival/interactable.cpp index 57f8f6c3..993ef278 100644 --- a/modules/wave_survival/interactable.cpp +++ b/modules/wave_survival/interactable.cpp @@ -1,5 +1,5 @@ #include "interactable.h" -#include "heads_up_display.h" +#include "core/object/class_db.h" #include "macros.h" void Interactable::_bind_methods() { diff --git a/modules/wave_survival/interactable.h b/modules/wave_survival/interactable.h index ebaecc88..c774a19b 100644 --- a/modules/wave_survival/interactable.h +++ b/modules/wave_survival/interactable.h @@ -1,8 +1,8 @@ #ifndef INTERACTABLE_H #define INTERACTABLE_H -#include "player_interactor.h" #include "scene/main/node.h" +#include "wave_survival/player_interactor.h" class Interactable : public Node { GDCLASS(Interactable, Node); diff --git a/modules/wave_survival/map_region.cpp b/modules/wave_survival/map_region.cpp index 4dd344d3..de928a83 100644 --- a/modules/wave_survival/map_region.cpp +++ b/modules/wave_survival/map_region.cpp @@ -1,6 +1,7 @@ #include "map_region.h" -#include "enemy_body.h" -#include "player_body.h" +#include "core/config/engine.h" +#include "wave_survival/enemy_body.h" +#include "wave_survival/player_body.h" String const MapRegion::sig_difficulty_increased{ "difficulty_increased" }; String const MapRegion::sig_phase_changed{ "hunt_phase" }; diff --git a/modules/wave_survival/map_region.h b/modules/wave_survival/map_region.h index b821c930..a6c48c66 100644 --- a/modules/wave_survival/map_region.h +++ b/modules/wave_survival/map_region.h @@ -2,8 +2,8 @@ #define MAP_REGION_H #include "core/templates/hash_set.h" -#include "npc_unit.h" #include "scene/3d/physics/area_3d.h" +#include "wave_survival/npc_unit.h" class MapRegion : public Area3D { GDCLASS(MapRegion, Area3D); diff --git a/modules/wave_survival/muzzle_effect.cpp b/modules/wave_survival/muzzle_effect.cpp index e7306c8a..a7282a9b 100644 --- a/modules/wave_survival/muzzle_effect.cpp +++ b/modules/wave_survival/muzzle_effect.cpp @@ -1,4 +1,5 @@ #include "muzzle_effect.h" +#include "core/object/class_db.h" void MuzzleEffect::_bind_methods() { GDVIRTUAL_BIND(trigger); diff --git a/modules/wave_survival/npc_unit.cpp b/modules/wave_survival/npc_unit.cpp index 582dc525..a248e650 100644 --- a/modules/wave_survival/npc_unit.cpp +++ b/modules/wave_survival/npc_unit.cpp @@ -1,10 +1,12 @@ #include "npc_unit.h" -#include "enemy_body.h" +#include "core/config/engine.h" +#include "core/object/class_db.h" #include "macros.h" -#include "map_region.h" -#include "patrol_path.h" -#include "player_detector.h" #include "scene/resources/packed_scene.h" +#include "wave_survival/enemy_body.h" +#include "wave_survival/map_region.h" +#include "wave_survival/patrol_path.h" +#include "wave_survival/player_detector.h" void NpcUnit::_bind_methods() { BIND_HPROPERTY(Variant::OBJECT, patrol_path, PROPERTY_HINT_NODE_TYPE, "PatrolPath"); diff --git a/modules/wave_survival/npc_unit.h b/modules/wave_survival/npc_unit.h index 6fb32bda..36794afa 100644 --- a/modules/wave_survival/npc_unit.h +++ b/modules/wave_survival/npc_unit.h @@ -2,6 +2,7 @@ #define NPC_UNIT_H #include "scene/3d/node_3d.h" +#include "scene/resources/packed_scene.h" class StateMachine; class EnemyBody; class PatrolPath; diff --git a/modules/wave_survival/patrol_path.cpp b/modules/wave_survival/patrol_path.cpp index 720a4407..a4a982a3 100644 --- a/modules/wave_survival/patrol_path.cpp +++ b/modules/wave_survival/patrol_path.cpp @@ -1,4 +1,6 @@ #include "patrol_path.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" void PatrolPath::_bind_methods() {} diff --git a/modules/wave_survival/player_body.cpp b/modules/wave_survival/player_body.cpp index 0cd01cad..a68f6ce8 100644 --- a/modules/wave_survival/player_body.cpp +++ b/modules/wave_survival/player_body.cpp @@ -1,10 +1,12 @@ #include "player_body.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" #include "health_status.h" #include "macros.h" -#include "player_camera.h" -#include "player_input.h" -#include "weapon_base.h" -#include "weapon_inventory.h" +#include "wave_survival/player_camera.h" +#include "wave_survival/player_input.h" +#include "wave_survival/weapon_base.h" +#include "wave_survival/weapon_inventory.h" PlayerBody *PlayerBody::singleton_instance{ nullptr }; diff --git a/modules/wave_survival/player_camera.cpp b/modules/wave_survival/player_camera.cpp index ecde8de2..9c09fc88 100644 --- a/modules/wave_survival/player_camera.cpp +++ b/modules/wave_survival/player_camera.cpp @@ -1,7 +1,9 @@ #include "player_camera.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" #include "macros.h" -#include "player_body.h" -#include "player_input.h" +#include "wave_survival/player_body.h" +#include "wave_survival/player_input.h" void PlayerCamera::_bind_methods() { } diff --git a/modules/wave_survival/player_detector.cpp b/modules/wave_survival/player_detector.cpp index 6f1b5bdb..ea6a7ff8 100644 --- a/modules/wave_survival/player_detector.cpp +++ b/modules/wave_survival/player_detector.cpp @@ -1,6 +1,8 @@ #include "player_detector.h" -#include "player_body.h" -#include "sound_event_patchboard.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" +#include "wave_survival/player_body.h" +#include "wave_survival/sound_event_patchboard.h" String PlayerDetector::sig_awareness_changed{ "awareness_changed" }; diff --git a/modules/wave_survival/player_input.cpp b/modules/wave_survival/player_input.cpp index dd45e4b9..89973d0a 100644 --- a/modules/wave_survival/player_input.cpp +++ b/modules/wave_survival/player_input.cpp @@ -1,6 +1,7 @@ #include "player_input.h" #include "core/config/engine.h" #include "core/input/input.h" +#include "core/object/callable_mp.h" #include "scene/main/scene_tree.h" String PlayerInput::sig_movement_input{ "movement_input" }; diff --git a/modules/wave_survival/player_interactor.cpp b/modules/wave_survival/player_interactor.cpp index 1574cc53..654404b1 100644 --- a/modules/wave_survival/player_interactor.cpp +++ b/modules/wave_survival/player_interactor.cpp @@ -1,8 +1,10 @@ #include "player_interactor.h" -#include "interactable.h" -#include "player_body.h" -#include "player_input.h" -#include "weapon_inventory.h" +#include "core/config/engine.h" +#include "core/object/class_db.h" +#include "wave_survival/interactable.h" +#include "wave_survival/player_body.h" +#include "wave_survival/player_input.h" +#include "wave_survival/weapon_inventory.h" void PlayerInteractor::_bind_methods() { ClassDB::bind_method(D_METHOD("pickup_demo_pack"), &self_type::pickup_demo_pack); diff --git a/modules/wave_survival/player_interactor.h b/modules/wave_survival/player_interactor.h index e18b14a1..3c522b0b 100644 --- a/modules/wave_survival/player_interactor.h +++ b/modules/wave_survival/player_interactor.h @@ -1,6 +1,7 @@ #ifndef PLAYER_INTERACTOR_H #define PLAYER_INTERACTOR_H +#include "core/object/callable_mp.h" #include "scene/3d/physics/shape_cast_3d.h" class Interactable; class WeaponInventory; diff --git a/modules/wave_survival/register_types.cpp b/modules/wave_survival/register_types.cpp index ec20b74c..e6074636 100644 --- a/modules/wave_survival/register_types.cpp +++ b/modules/wave_survival/register_types.cpp @@ -1,5 +1,6 @@ #include "register_types.h" +#include "core/config/engine.h" #include "core/object/class_db.h" #include "wave_survival/damage_box.h" #include "wave_survival/enemies/enemy_rifleman.h" diff --git a/modules/wave_survival/sound_event_node.cpp b/modules/wave_survival/sound_event_node.cpp index 45ef167c..a36dd6f8 100644 --- a/modules/wave_survival/sound_event_node.cpp +++ b/modules/wave_survival/sound_event_node.cpp @@ -1,6 +1,8 @@ #include "sound_event_node.h" +#include "core/config/engine.h" +#include "core/object/class_db.h" #include "macros.h" -#include "sound_event_patchboard.h" +#include "wave_survival/sound_event_patchboard.h" void SoundEventNode::_bind_methods() { ClassDB::bind_method(D_METHOD("trigger_event"), &self_type::trigger_event); diff --git a/modules/wave_survival/state_machine.cpp b/modules/wave_survival/state_machine.cpp index ece6bdae..96f85f2b 100644 --- a/modules/wave_survival/state_machine.cpp +++ b/modules/wave_survival/state_machine.cpp @@ -1,6 +1,6 @@ #include "state_machine.h" #include "core/config/engine.h" -#include "state.h" +#include "wave_survival/state.h" void StateMachine::_bind_methods() { ClassDB::bind_method(D_METHOD("switch_to_state", "state"), &self_type::switch_to_state); diff --git a/modules/wave_survival/weapon_base.cpp b/modules/wave_survival/weapon_base.cpp index 8c7e54d2..387e073b 100644 --- a/modules/wave_survival/weapon_base.cpp +++ b/modules/wave_survival/weapon_base.cpp @@ -1,9 +1,11 @@ #include "weapon_base.h" +#include "core/config/engine.h" +#include "core/object/class_db.h" #include "macros.h" -#include "player_body.h" -#include "player_camera.h" -#include "player_input.h" #include "scene/animation/animation_player.h" +#include "wave_survival/player_body.h" +#include "wave_survival/player_camera.h" +#include "wave_survival/player_input.h" void WeaponBase::_bind_methods() { BIND_HPROPERTY(Variant::OBJECT, anim, PROPERTY_HINT_NODE_TYPE, AnimationPlayer::get_class_static()); diff --git a/modules/wave_survival/weapon_inventory.cpp b/modules/wave_survival/weapon_inventory.cpp index 768e7c31..a8a01a77 100644 --- a/modules/wave_survival/weapon_inventory.cpp +++ b/modules/wave_survival/weapon_inventory.cpp @@ -1,7 +1,10 @@ #include "weapon_inventory.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" #include "macros.h" -#include "player_input.h" -#include "weapon_base.h" +#include "wave_survival/player_input.h" +#include "wave_survival/weapon_base.h" void WeaponInventory::_bind_methods() { BIND_HPROPERTY(Variant::OBJECT, starting_weapon, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"); diff --git a/modules/wave_survival/weapon_inventory.h b/modules/wave_survival/weapon_inventory.h index 0b32242a..fe065605 100644 --- a/modules/wave_survival/weapon_inventory.h +++ b/modules/wave_survival/weapon_inventory.h @@ -1,6 +1,7 @@ #ifndef WEAPON_INVENTORY_H #define WEAPON_INVENTORY_H +#include "scene/3d/node_3d.h" #include "scene/main/node.h" #include "scene/resources/packed_scene.h" class PlayerBody; diff --git a/modules/wave_survival/weapons/revolver.cpp b/modules/wave_survival/weapons/revolver.cpp index 379d70aa..901d695a 100644 --- a/modules/wave_survival/weapons/revolver.cpp +++ b/modules/wave_survival/weapons/revolver.cpp @@ -1,4 +1,7 @@ #include "revolver.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" #include "scene/animation/animation_player.h" #include "wave_survival/macros.h" #include "wave_survival/player_body.h" diff --git a/modules/wave_survival/weapons/rifle.cpp b/modules/wave_survival/weapons/rifle.cpp index e572069d..33bbaf6c 100644 --- a/modules/wave_survival/weapons/rifle.cpp +++ b/modules/wave_survival/weapons/rifle.cpp @@ -1,8 +1,12 @@ #include "rifle.h" +#include "core/config/engine.h" +#include "core/object/callable_mp.h" +#include "core/object/class_db.h" #include "scene/animation/animation_player.h" #include "wave_survival/hitscan_muzzle.h" #include "wave_survival/macros.h" #include "wave_survival/player_body.h" +#include "wave_survival/player_camera.h" #include "wave_survival/player_input.h" #include "wave_survival/weapon_inventory.h" diff --git a/modules/wave_survival/weapons/rifle.h b/modules/wave_survival/weapons/rifle.h index 335b86ce..f49a78e8 100644 --- a/modules/wave_survival/weapons/rifle.h +++ b/modules/wave_survival/weapons/rifle.h @@ -1,7 +1,6 @@ #ifndef WEAPONS_RIFLE_H #define WEAPONS_RIFLE_H -#include "wave_survival/player_camera.h" #include "wave_survival/weapon_base.h" class PlayerBody; class HitscanMuzzle; diff --git a/project/maps/game.scn b/project/maps/game.scn index 7d90f6f4c327b43e03eecee97da208237e6934db..ff7fc7ab6680df42ea7505a447968f6a4684a5f5 100644 GIT binary patch delta 1479 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 RWnokGY@ul}>zP2MGXOIct4sg@ diff --git a/project/maps/industrial_area_map.scn b/project/maps/industrial_area_map.scn index a042130db05e4d025f0b2be6c91c2d771ff634d0..8e6ee031b99f997637696c8eb54ecdc10c4e31d4 100644 GIT binary patch delta 1775 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 J^RZ7=2LR?BaUK8w