cirnogodot/Scripts/Components/AlarmTrigger.cs

52 lines
1 KiB
C#
Raw Normal View History

2025-02-21 18:57:00 +01:00
using Godot;
namespace Cirno.Scripts.Components;
public partial class AlarmTrigger : Node2D
{
private AlarmManager _alarmManager;
[Export]
public AlarmTriggerType TriggerType { get; private set; }
[Export]
public Node2D Target { get; private set; }
public override void _Ready()
{
_alarmManager = this.GetAlarmManager(); //AlarmManager.Instance;
if (TriggerType is AlarmTriggerType.OnEnabled)
{
_alarmManager.AlarmEnabled += AlarmManagerOnAlarmEnabled;
}
else
{
_alarmManager.AlarmDisabled += AlarmManagerOnAlarmDisabled;
}
}
private void AlarmManagerOnAlarmDisabled()
{
Activate();
}
private void AlarmManagerOnAlarmEnabled(Vector2 location)
{
Activate();
}
private void Activate()
{
if (Target is IActivable activatable)
{
activatable.Activate();
}
}
public enum AlarmTriggerType
{
OnEnabled,
OnDisabled
}
}