knockback component
This commit is contained in:
@@ -6,7 +6,7 @@ using Movementtests.systems.damage;
|
||||
[GlobalClass]
|
||||
public partial class RDamageModifier : Resource, IDamageable
|
||||
{
|
||||
public event Action<IDamageable, float> DamageTaken;
|
||||
public event Action<IDamageable, DamageRecord> DamageTaken;
|
||||
|
||||
[Export]
|
||||
public EDamageTypes DamageType = EDamageTypes.Normal;
|
||||
@@ -24,11 +24,14 @@ public partial class RDamageModifier : Resource, IDamageable
|
||||
DamageType = damageType;
|
||||
}
|
||||
|
||||
public float TakeDamage(RDamage damage)
|
||||
public DamageRecord TakeDamage(DamageRecord damageRecord)
|
||||
{
|
||||
if (damage.DamageType != DamageType) return 0;
|
||||
var finalDamage = damage.DamageDealt * Modifier;
|
||||
DamageTaken?.Invoke(this, finalDamage);
|
||||
return finalDamage;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
19
resource_definitions/RKnockback.cs
Normal file
19
resource_definitions/RKnockback.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using Movementtests.interfaces;
|
||||
|
||||
[GlobalClass]
|
||||
public partial class RKnockback : Resource
|
||||
{
|
||||
[Export]
|
||||
public float Modifier = 1.0f;
|
||||
|
||||
public RKnockback()
|
||||
{
|
||||
Modifier = 1.0f;
|
||||
}
|
||||
public RKnockback(float modifier)
|
||||
{
|
||||
Modifier = modifier;
|
||||
}
|
||||
}
|
||||
1
resource_definitions/RKnockback.cs.uid
Normal file
1
resource_definitions/RKnockback.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b44cse62qru7j
|
||||
@@ -6,6 +6,8 @@ public partial class RMovement : Resource
|
||||
{
|
||||
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
|
||||
public float Speed;
|
||||
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
|
||||
public float Acceleration;
|
||||
|
||||
[Export(PropertyHint.Range, "0,20,1,or_greater")]
|
||||
public float TargetHeight;
|
||||
@@ -13,11 +15,13 @@ public partial class RMovement : Resource
|
||||
public RMovement()
|
||||
{
|
||||
Speed = 3.0f;
|
||||
Acceleration = 1.0f;
|
||||
TargetHeight = 10.0f;
|
||||
}
|
||||
public RMovement(float speed, float targetHeight)
|
||||
public RMovement(float speed, float acceleration, float targetHeight)
|
||||
{
|
||||
Speed = speed;
|
||||
Acceleration = acceleration;
|
||||
TargetHeight = targetHeight;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user