32 lines
1.0 KiB
C#
32 lines
1.0 KiB
C#
using Godot;
|
|
using GdUnit4;
|
|
using static GdUnit4.Assertions;
|
|
using Movementtests.interfaces;
|
|
|
|
namespace Movementtests.tests;
|
|
|
|
[TestSuite, RequireGodotRuntime]
|
|
public class KnockbackComponentUnitTest
|
|
{
|
|
[TestCase]
|
|
public void RegisterAndComputeKnockback_Works_And_Resets()
|
|
{
|
|
var cKnock = new CKnockback();
|
|
cKnock.RKnockback = new RKnockback(2.0f);
|
|
cKnock.GlobalPosition = Vector3.Zero;
|
|
|
|
var damage = new DamageRecord(new Vector3(10, 0, 0), new RDamage(0, Movementtests.systems.damage.EDamageTypes.Normal));
|
|
var record = new KnockbackRecord(damage, 1.5f);
|
|
|
|
cKnock.RegisterKnockback(record);
|
|
var force = cKnock.ComputeKnockback();
|
|
|
|
// Direction from source(10,0,0) to target(0,0,0) is (-1,0,0), scaled by modifier(2) and multiplier(1.5) => (-3,0,0)
|
|
AssertVector(force).IsEqual(new Vector3(-3, 0, 0));
|
|
|
|
// Second call returns zero since internal state resets
|
|
var second = cKnock.ComputeKnockback();
|
|
AssertVector(second).IsEqual(Vector3.Zero);
|
|
}
|
|
}
|