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 } }