complete project reorganization
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 55s
Create tag and build when new code gets to main / Test (push) Successful in 7m7s
Create tag and build when new code gets to main / Export (push) Successful in 9m56s

This commit is contained in:
2026-02-04 11:20:00 +01:00
parent b6e8d0b590
commit cd519e528f
824 changed files with 397 additions and 16380 deletions

View File

@@ -0,0 +1,31 @@
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

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

View File

@@ -0,0 +1,6 @@
[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

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

View File

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

View File

@@ -0,0 +1,20 @@
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

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

View File

@@ -0,0 +1,43 @@
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;
[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

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