Files
Cielonos/Assets/Scripts/MainGame/Interactions/ExitGate.cs

45 lines
1.5 KiB
C#
Raw Normal View History

2026-02-13 09:22:11 -05:00
using Cielonos.Core.Interaction;
using UnityEngine;
namespace Cielonos.MainGame.Interactions
{
2026-05-10 11:47:55 -04:00
/// <summary>
/// 出口传送门。战斗房间全部敌人清空后才激活,玩家交互后通知 RunManager 当前节点已完成。
/// - 普通/精英战斗节点:完成后回到地图选择
/// - Boss 节点:完成后进入结算画面
/// 不需要在脚本中区分节点类型,由 RunManager.CompleteCurrentNode() 内部判断。
/// </summary>
2026-02-13 09:22:11 -05:00
public class ExitGate : InteractableObjectBase
{
2026-05-10 11:47:55 -04:00
private void Start()
{
// 初始不可交互,等待战斗房间清空
SetInteractable(false);
2026-05-23 08:27:50 -04:00
CombatManager.CombatRoomSm.OnRoomCleared += OnRoomCleared;
2026-05-10 11:47:55 -04:00
}
private void OnDestroy()
{
2026-05-23 08:27:50 -04:00
CombatManager.CombatRoomSm.OnRoomCleared -= OnRoomCleared;
2026-05-10 11:47:55 -04:00
}
2026-02-13 09:22:11 -05:00
protected override void InitializeChoices()
{
2026-05-10 11:47:55 -04:00
choices.Add(new InteractionChoice("Leave Zone", CompleteNode));
}
/// <summary>战斗房间清空后激活传送门,允许玩家交互。</summary>
private void OnRoomCleared()
{
SetInteractable(true);
Debug.Log("[ExitGate] 战斗房间已清空,传送门已激活。");
2026-02-13 09:22:11 -05:00
}
2026-05-10 11:47:55 -04:00
/// <summary>通知 RunManager 当前节点已完成,触发阶段切换。</summary>
private void CompleteNode()
2026-02-13 09:22:11 -05:00
{
2026-05-10 11:47:55 -04:00
RunManager.Instance.CompleteCurrentNode();
2026-02-13 09:22:11 -05:00
}
}
2026-05-10 11:47:55 -04:00
}