removed obsolete interfaces for health and damage
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 27s
Create tag and build when new code gets to main / Export (push) Successful in 5m25s

This commit is contained in:
2026-05-05 11:51:35 +02:00
parent 33f55d04f3
commit 68e36742af
41 changed files with 37 additions and 703 deletions

View File

@@ -1,31 +0,0 @@
using Godot;
using System;
using Movementtests.interfaces;
[GlobalClass, Icon("res://assets/ui/IconGodotNode/white/icon_skull.png")]
public partial class CDamageable : Node, IDamageable
{
public event Action<IDamageable, DamageRecord> DamageTaken;
[Export]
public RDamageModifier[] DamageModifiers { get; set; }
public DamageRecord TakeDamage(DamageRecord damageRecord)
{
var finalDamage = 0f;
foreach (var damageable in DamageModifiers.ToIDamageables())
finalDamage += damageable.TakeDamage(damageRecord).Damage.DamageDealt;
var finalDamageRecord = damageRecord with { Damage = new RDamage(finalDamage, damageRecord.Damage.DamageType) };
DamageTaken?.Invoke(this, finalDamageRecord);
return finalDamageRecord;
}
public DamageRecord ComputeDamage(DamageRecord damageRecord)
{
var finalDamage = 0f;
foreach (var damageable in DamageModifiers.ToIDamageables())
finalDamage += damageable.ComputeDamage(damageRecord).Damage.DamageDealt;
return damageRecord with { Damage = new RDamage(finalDamage, damageRecord.Damage.DamageType) };
}
}

View File

@@ -1 +0,0 @@
uid://b0u23nkpaimyc

View File

@@ -1,6 +0,0 @@
[gd_scene format=3 uid="uid://hpsg4fqwrx1u"]
[ext_resource type="Script" uid="uid://b0u23nkpaimyc" path="res://scenes/components/damage/CDamageable.cs" id="1_qp8bd"]
[node name="CDamageable" type="Node" unique_id=482221079]
script = ExtResource("1_qp8bd")

View File

@@ -1,9 +0,0 @@
namespace Movementtests.systems.damage;
public enum EDamageTypes
{
Normal,
Fire,
Ice,
Explosion,
}

View File

@@ -1 +0,0 @@
uid://dubmiwfuunxmu

View File

@@ -1,20 +0,0 @@
using Godot;
using System;
using Movementtests.systems.damage;
[GlobalClass, Icon("res://assets/ui/IconGodotNode/white/icon_skull.png")]
public partial class RDamage : Resource
{
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
public float DamageDealt { get; set;}
[Export]
public EDamageTypes DamageType { get; set;}
public RDamage() : this(1.0f, EDamageTypes.Normal) {}
public RDamage(float damageDealt, EDamageTypes damageType)
{
DamageDealt = damageDealt;
DamageType = damageType;
}
}

View File

@@ -1 +0,0 @@
uid://jitubgv6judn

View File

@@ -1,43 +0,0 @@
using Godot;
using System;
using Movementtests.interfaces;
using Movementtests.systems.damage;
[Icon("res://assets/ui/IconGodotNode/white/icon_freeze.png")]
[GlobalClass]
public partial class RDamageModifier : Resource, IDamageable
{
public event Action<IDamageable, DamageRecord> DamageTaken = null!;
[Export]
public EDamageTypes DamageType { get; set;}
[Export]
public float Modifier { get; set;}
public RDamageModifier() : this(EDamageTypes.Normal, 1.0f) {}
public RDamageModifier(EDamageTypes damageType, float modifier)
{
Modifier = modifier;
DamageType = damageType;
}
public DamageRecord TakeDamage(DamageRecord damageRecord)
{
if (damageRecord.Damage.DamageType != DamageType)
return damageRecord with { Damage = new RDamage(0, damageRecord.Damage.DamageType) };
var finalDamage = damageRecord.Damage.DamageDealt * Modifier;
var finalDamageRecord = damageRecord with { Damage = new RDamage(finalDamage, damageRecord.Damage.DamageType) };
DamageTaken?.Invoke(this, finalDamageRecord);
return finalDamageRecord;
}
public DamageRecord ComputeDamage(DamageRecord damageRecord)
{
if (damageRecord.Damage.DamageType != DamageType)
return damageRecord with { Damage = new RDamage(0, damageRecord.Damage.DamageType) };
var finalDamage = damageRecord.Damage.DamageDealt * Modifier;
return damageRecord with { Damage = new RDamage(finalDamage, damageRecord.Damage.DamageType) };
}
}

View File

@@ -1 +0,0 @@
uid://b6y3ugfydvch0

View File

@@ -1,35 +0,0 @@
using Godot;
using System;
using Movementtests.interfaces;
[GlobalClass, Icon("res://assets/ui/IconGodotNode/white/icon_heart.png")]
public partial class CHealth : Node, IHealthable
{
public event Action<IHealthable, HealthChangedRecord> HealthChanged = null!;
public event Action<IHealthable> HealthDepleted = null!;
[Export]
public RHealth RHealth { get; set; } = null!;
public float CurrentHealth { get; set; }
public override void _Ready()
{
CurrentHealth = RHealth.StartingHealth;
}
public HealthChangedRecord ReduceHealth(IDamageable source, DamageRecord damageRecord)
{
var previousHealth = CurrentHealth;
CurrentHealth -= damageRecord.Damage.DamageDealt;
var record = new HealthChangedRecord(CurrentHealth, previousHealth, RHealth.StartingHealth);
HealthChanged?.Invoke(this, record);
if (CurrentHealth <= 0)
{
CurrentHealth = 0;
HealthDepleted?.Invoke(this);
}
return record;
}
}

View File

@@ -1 +0,0 @@
uid://bjwrpv3jpsc1e

View File

@@ -1,6 +0,0 @@
[gd_scene format=3 uid="uid://c4ikbhojckpnc"]
[ext_resource type="Script" uid="uid://bjwrpv3jpsc1e" path="res://scenes/components/health/CHealth.cs" id="1_75uyt"]
[node name="CHealth" type="Node" unique_id=1940090217]
script = ExtResource("1_75uyt")

View File

@@ -5,8 +5,8 @@ using Movementtests.interfaces;
[GlobalClass, Icon("res://assets/ui/IconGodotNode/control/icon_thunder.png")]
public partial class RDeathEffect : Resource, IKillable
{
public void Kill(IHealthable source)
public void Kill()
{
GD.Print($"Death Effect triggered on {source}");
GD.Print($"Death Effect triggered");
}
}

View File

@@ -1,12 +0,0 @@
using Godot;
using System;
using Movementtests.interfaces;
[GlobalClass, Icon("res://assets/ui/IconGodotNode/white/icon_heart.png")]
public partial class RHealth(float startingHealth) : Resource
{
[Export]
public float StartingHealth { get; set;} = startingHealth;
public RHealth() : this(100.0f) {}
}

View File

@@ -1 +0,0 @@
uid://baiapod3csndf