Added healing

This commit is contained in:
cblech
2025-07-10 23:32:16 +02:00
parent c6fc400994
commit 8bd2b09232
7 changed files with 119 additions and 8 deletions
@@ -106,9 +106,24 @@ public partial class FightInstance : Node2D //TODO: remake
ResetFriendlyActions();
_fightStateManager.CurrentFightState = FightStateManager.FightState.Input;
break;
case FightStateManager.FightState.Heal:
Heal();
GetTree().CreateTimer(1).Timeout += () => _fightStateManager.CurrentFightState = FightStateManager.FightState.Input;
break;
}
};
}
private void Heal()
{
// TODO: make heal staging system
_friendlyFighters.Where(f => !f.IsDead()).ForEach(f =>
{
f.Health += 50;
f.HealAnimation();
f.DecrementActions();
});
UpdateHealthVisual();
}
private void ResetEnemyActions()
{
_enemyFighters.ForEach(f => f.ResetActions());
@@ -312,6 +327,11 @@ public partial class FightInstance : Node2D //TODO: remake
_fightStateManager.CurrentFightState = FightStateManager.FightState.FriendAttackAnim;
}
public void SelectHeal(Fighter fighter)
{
_fightStateManager.CurrentFightState = FightStateManager.FightState.Heal;
}
public bool CheckWinAndSetState()
{
@@ -22,6 +22,7 @@ public partial class FightStateManager : Node
EnemyWinAnim,
ChangeSideToEnemy,
ChangeSideToFriendly,
Heal,
}
private FightState _fightStateBacking = FightState.None;
+26
View File
@@ -18,6 +18,7 @@ public partial class Fighter : Node2D
[Signal] public delegate void DamageTakenEventHandler();
[Signal] public delegate void AttackingEventHandler();
[Signal] public delegate void DyingEventHandler();
[Signal] public delegate void HealedEventHandler();
private int _health;
@@ -36,6 +37,10 @@ public partial class Fighter : Node2D
_health = 0;
Die();
}
if (_health > maxHealth)
{
_health = maxHealth;
}
}
}
@@ -88,12 +93,23 @@ public partial class Fighter : Node2D
if (inputEvent.IsPressed())
ClickedAttack();
}
public void HealMouseEvent(Node viewport, InputEvent inputEvent, int shapeIdx)
{
if (inputEvent.IsPressed())
ClickedHeal();
}
private void ClickedAttack()
{
fightInstance.SelectAttack(this);
}
private void ClickedHeal()
{
fightInstance.SelectHeal(this);
}
private void ClickedTarget()
{
fightInstance.SelectTargetAndAttack(this);
@@ -148,8 +164,18 @@ public partial class Fighter : Node2D
{
return _actions > 0;
}
public void DecrementActions()
{
_actions--;
}
public void HealAnimation()
{
EmitSignalHealed();
var tween = GetTree().CreateTween();
tween.TweenProperty(this, "scale", new Vector2(0.6f, 1.4f), 0.15);
tween.TweenProperty(this, "scale", new Vector2(1, 1), 0.4)
.SetTrans(Tween.TransitionType.Cubic).SetEase(Tween.EaseType.Out);
}
}