some damage interfacing

This commit is contained in:
2026-01-17 11:02:17 +01:00
parent 5908494977
commit b1e78df6c7
13 changed files with 122 additions and 52 deletions

View File

@@ -7,7 +7,7 @@ using Movementtests.systems;
using Movementtests.player_controller.Scripts;
using RustyOptions;
public partial class PlayerController : CharacterBody3D, IDamageable, IKnockbackable
public partial class PlayerController : CharacterBody3D, IDamageable, IKnockbackable, IDamageMaker
{
// Enums
public enum AllowedInputs
@@ -59,6 +59,11 @@ public partial class PlayerController : CharacterBody3D, IDamageable, IKnockback
[Export] public Marker3D TutorialWeaponTarget;
[Export] public bool TutorialDone { get; set; }
[ExportCategory("Combat")]
[ExportGroup("Damage")]
[Export]
public RDamage GetDamageDealt { get; set; }
[ExportCategory("Movement")]
[ExportGroup("Ground")]
[Export(PropertyHint.Range, "0,20,0.1,or_greater")]
@@ -1571,26 +1576,6 @@ public partial class PlayerController : CharacterBody3D, IDamageable, IKnockback
DashIndicatorMesh.Visible = false;
}
///////////////////////////
// Hit Management ///////
///////////////////////////
public void OnInputHitPressed()
{
if (_aiming.Active && WeaponSystem.InHandState.Active)
{
ThrowWeapon();
}
if (!WeaponSystem.InHandState.Active) return;
var bodies = WeaponHitbox.GetOverlappingBodies();
foreach (var body in bodies)
{
if(body is IDamageable spawnable)
spawnable.TakeDamage();
}
}
///////////////////////////
// Parry Management ///////
///////////////////////////
@@ -1741,9 +1726,29 @@ public partial class PlayerController : CharacterBody3D, IDamageable, IKnockback
DashIndicatorNode.LookAt(WeaponSystem.GlobalPosition);
}
}
public void TakeDamage()
public void TakeDamage(RDamage damage)
{
GD.Print("Ouch!");
GD.Print("Ouch", damage.DamageDealt);
}
///////////////////////////
// Hit Management ///////
///////////////////////////
public void OnInputHitPressed()
{
if (_aiming.Active && WeaponSystem.InHandState.Active)
{
ThrowWeapon();
}
if (!WeaponSystem.InHandState.Active) return;
var bodies = WeaponHitbox.GetOverlappingBodies();
foreach (var body in bodies)
{
if(body is IDamageable spawnable)
spawnable.TakeDamage(GetDamageDealt);
}
}
}