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