using Godot; using System; using Movementtests.interfaces; using Movementtests.systems.damage; [GlobalClass] public partial class RDamageModifier : Resource, IDamageable { [Signal] delegate void DamageTakenEventHandler(float damage); [Export] public EDamageTypes DamageType = EDamageTypes.Normal; [Export] public float Modifier = 1.0f; public RDamageModifier() { Modifier = 1.0f; DamageType = EDamageTypes.Normal; } public RDamageModifier(EDamageTypes damageType, float modifier) { Modifier = modifier; DamageType = damageType; } public void TakeDamage(RDamage damage) { if (damage.DamageType != DamageType) return; var finalDamage = damage.DamageDealt * Modifier; var message = $"Damage of type {DamageType} taken: {finalDamage}"; GD.Print(message); EmitSignalDamageTaken(finalDamage); } }