newlon/scripts/entities/zombies/EatBox.cs
2025-07-26 03:04:32 +05:00

51 lines
1.1 KiB
C#

using Godot;
using Newlon.Components.Plants;
namespace Newlon.Components.Zombies;
public partial class EatBox : Area2D
{
// Rewrite this class completely when field system will be introduced.
[Export] public FloatModifiers _damage;
[Export]
private AudioStream biteSound = ResourceLoader.Load<AudioStream>("uid://dyid55nhflwyn");
private RuntimePlantData plant;
public float Damage => _damage.GetValue();
public bool isEating = false;
public void Bite()
{
if (GetParent<RuntimeZombieData>().AbleToEat)
{
plant?.TakeDamage(Damage, GetParent());
AudioSequencer.Play("bite", biteSound);
}
}
public void OnAreaEntered(Area2D area)
{
var parent = area.GetParent();
if (parent != null && parent is RuntimePlantData plantData)
{
plant = plantData;
isEating = true;
}
}
public void OnAreaExited(Area2D area)
{
var parent = area.GetParent();
if (parent == plant)
{
plant = null;
isEating = false;
}
}
}