Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9690280cd7 |
@@ -3,5 +3,5 @@ using Godot;
|
|||||||
|
|
||||||
interface ISpawnable
|
interface ISpawnable
|
||||||
{
|
{
|
||||||
void Setup();
|
void Initialize();
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=19 format=3 uid="uid://q7uc1h2jpbd2"]
|
[gd_scene load_steps=20 format=3 uid="uid://q7uc1h2jpbd2"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bei4nhkf8lwdo" path="res://player_controller/PlayerController.tscn" id="1_62kkh"]
|
[ext_resource type="PackedScene" uid="uid://bei4nhkf8lwdo" path="res://player_controller/PlayerController.tscn" id="1_62kkh"]
|
||||||
[ext_resource type="Material" uid="uid://31aulub2nqov" path="res://assets/greybox/m_greybox.tres" id="2_3uydm"]
|
[ext_resource type="Material" uid="uid://31aulub2nqov" path="res://assets/greybox/m_greybox.tres" id="2_3uydm"]
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://cmlud1hwkd6sv" path="res://scenes/enemies/flying_enemy/flying_enemy.tscn" id="5_8fd2t"]
|
[ext_resource type="PackedScene" uid="uid://cmlud1hwkd6sv" path="res://scenes/enemies/flying_enemy/flying_enemy.tscn" id="5_8fd2t"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c305mfrtumcyq" path="res://scenes/spawners/spawner.tscn" id="6_7m3bq"]
|
[ext_resource type="PackedScene" uid="uid://c305mfrtumcyq" path="res://scenes/spawners/spawner.tscn" id="6_7m3bq"]
|
||||||
[ext_resource type="Resource" uid="uid://bqq6uukbdfysr" path="res://scenes/enemies/grounded_enemy/grounded_enemy_movement.tres" id="7_caohq"]
|
[ext_resource type="Resource" uid="uid://bqq6uukbdfysr" path="res://scenes/enemies/grounded_enemy/grounded_enemy_movement.tres" id="7_caohq"]
|
||||||
[ext_resource type="Resource" uid="uid://bohbojc68j7y1" path="res://scenes/enemies/grounded_enemy/grounded_enemy_health.tres" id="8_dmw1t"]
|
[ext_resource type="Script" uid="uid://baiapod3csndf" path="res://resource_definitions/RHealth.cs" id="9_2e4ci"]
|
||||||
[ext_resource type="Resource" uid="uid://otfc2snh8umc" path="res://scenes/enemies/grounded_enemy/grounded_enemy_damage.tres" id="9_dmw1t"]
|
[ext_resource type="Resource" uid="uid://otfc2snh8umc" path="res://scenes/enemies/grounded_enemy/grounded_enemy_damage.tres" id="9_dmw1t"]
|
||||||
[ext_resource type="Resource" uid="uid://dgo65k2ceqfvy" path="res://scenes/enemies/flying_enemy/flying_enemy_damage.tres" id="9_gp7s3"]
|
[ext_resource type="Resource" uid="uid://dgo65k2ceqfvy" path="res://scenes/enemies/flying_enemy/flying_enemy_damage.tres" id="9_gp7s3"]
|
||||||
[ext_resource type="Resource" uid="uid://bwqjaom4k7rc3" path="res://scenes/enemies/flying_enemy/flying_enemy_movement.tres" id="10_spw1u"]
|
[ext_resource type="Resource" uid="uid://bwqjaom4k7rc3" path="res://scenes/enemies/flying_enemy/flying_enemy_movement.tres" id="10_spw1u"]
|
||||||
@@ -45,6 +45,11 @@ glow_enabled = true
|
|||||||
script = ExtResource("5_7m3bq")
|
script = ExtResource("5_7m3bq")
|
||||||
metadata/_custom_type_script = "uid://b4cwruitopcee"
|
metadata/_custom_type_script = "uid://b4cwruitopcee"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ybosk"]
|
||||||
|
script = ExtResource("9_2e4ci")
|
||||||
|
StartingHealth = 1.0
|
||||||
|
metadata/_custom_type_script = "uid://baiapod3csndf"
|
||||||
|
|
||||||
[node name="Main" type="Node3D"]
|
[node name="Main" type="Node3D"]
|
||||||
|
|
||||||
[node name="Player" parent="." instance=ExtResource("1_62kkh")]
|
[node name="Player" parent="." instance=ExtResource("1_62kkh")]
|
||||||
@@ -137,7 +142,7 @@ Target = NodePath("../Player")
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 2.5, -15)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 2.5, -15)
|
||||||
EnemyToSpawn = ExtResource("3_3uydm")
|
EnemyToSpawn = ExtResource("3_3uydm")
|
||||||
MovementInputs = ExtResource("7_caohq")
|
MovementInputs = ExtResource("7_caohq")
|
||||||
HealthInputs = ExtResource("8_dmw1t")
|
HealthInputs = SubResource("Resource_ybosk")
|
||||||
DamageInputs = ExtResource("9_dmw1t")
|
DamageInputs = ExtResource("9_dmw1t")
|
||||||
Target = NodePath("../Player")
|
Target = NodePath("../Player")
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ using Godot;
|
|||||||
using Movementtests.interfaces;
|
using Movementtests.interfaces;
|
||||||
|
|
||||||
[GlobalClass]
|
[GlobalClass]
|
||||||
public partial class Enemy : CharacterBody3D, IDamageable, IDamageMaker, IHealthable, IKillable, IMoveable
|
public partial class Enemy : CharacterBody3D, IDamageable, IDamageMaker, IHealthable, IKillable, IMoveable, ISpawnable
|
||||||
{
|
{
|
||||||
public event Action<IDamageable, float> DamageTaken;
|
public event Action<IDamageable, float> DamageTaken;
|
||||||
public event Action<IHealthable, float> HealthChanged;
|
public event Action<IHealthable, float> HealthChanged;
|
||||||
@@ -38,15 +38,14 @@ public partial class Enemy : CharacterBody3D, IDamageable, IDamageMaker, IHealth
|
|||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
_damageBox = GetNode<Area3D>("DamageBox");
|
Initialize();
|
||||||
|
SetupSignals();
|
||||||
_damageBox.BodyEntered += OnDamageBoxTriggered;
|
|
||||||
if (CDamage is IDamageable damageable) damageable.DamageTaken += ReduceHealth;
|
|
||||||
if (CHealth is IHealthable healthable) healthable.HealthDepleted += Kill;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Setup()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
|
_damageBox = GetNode<Area3D>("DamageBox");
|
||||||
|
|
||||||
if (CMovement is IMoveable moveable && RMovement != null) moveable.RMovement = RMovement;
|
if (CMovement is IMoveable moveable && RMovement != null) moveable.RMovement = RMovement;
|
||||||
if (CHealth is IHealthable healthable && RHealth != null)
|
if (CHealth is IHealthable healthable && RHealth != null)
|
||||||
{
|
{
|
||||||
@@ -54,6 +53,13 @@ public partial class Enemy : CharacterBody3D, IDamageable, IDamageMaker, IHealth
|
|||||||
healthable.CurrentHealth = RHealth.StartingHealth;
|
healthable.CurrentHealth = RHealth.StartingHealth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetupSignals()
|
||||||
|
{
|
||||||
|
_damageBox.BodyEntered += OnDamageBoxTriggered;
|
||||||
|
if (CDamage is IDamageable damageable) damageable.DamageTaken += ReduceHealth;
|
||||||
|
if (CHealth is IHealthable healthable) healthable.HealthDepleted += Kill;
|
||||||
|
}
|
||||||
|
|
||||||
public override void _PhysicsProcess(double delta)
|
public override void _PhysicsProcess(double delta)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public partial class Spawner : Node3D
|
|||||||
spawnedInstance.RMovement = MovementInputs;
|
spawnedInstance.RMovement = MovementInputs;
|
||||||
spawnedInstance.RDamage = DamageInputs;
|
spawnedInstance.RDamage = DamageInputs;
|
||||||
spawnedInstance.RHealth = HealthInputs;
|
spawnedInstance.RHealth = HealthInputs;
|
||||||
spawnedInstance.Setup();
|
spawnedInstance.Initialize();
|
||||||
|
|
||||||
GetTree().GetCurrentScene().AddChild(spawnedInstance);
|
GetTree().GetCurrentScene().AddChild(spawnedInstance);
|
||||||
spawnedInstance.GlobalPosition = GlobalPosition;
|
spawnedInstance.GlobalPosition = GlobalPosition;
|
||||||
|
|||||||
Reference in New Issue
Block a user