79 lines
2.0 KiB
C#
79 lines
2.0 KiB
C#
using Animancer;
|
|
using Logic;
|
|
using Logic.Action;
|
|
using RuntimeData;
|
|
using TH1_Core.Events;
|
|
using TH1_Core.Managers;
|
|
using TH1_Logic.Core;
|
|
using TH1_Logic.Net;
|
|
using TH1Resource;
|
|
using TH1Renderer;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace TH1_UI.View.Bottom
|
|
{
|
|
public class UIBottomBottomBarQuitPanelMono : MonoBehaviour
|
|
{
|
|
public AnimancerComponent Animancer;
|
|
public Button CancelButton;
|
|
public Button SurrenderButton;
|
|
public Button CheckButton;
|
|
|
|
// 确认退出时执行的委托
|
|
public ViDelegateAssisstant.Dele OnQuitConfirm;
|
|
|
|
public void OnInit()
|
|
{
|
|
CancelButton.onClick.RemoveAllListeners();
|
|
CancelButton.onClick.AddListener(OnClose);
|
|
CheckButton.onClick.RemoveAllListeners();
|
|
CheckButton.onClick.AddListener(OnConfirm);
|
|
SurrenderButton.onClick.RemoveAllListeners();
|
|
SurrenderButton.onClick.AddListener(OnSurrender);
|
|
gameObject.SetActive(false);
|
|
}
|
|
|
|
public void Open()
|
|
{
|
|
// 只在对局中且玩家存活时显示投降按钮
|
|
bool canSurrender = Main.MapData != null
|
|
&& Main.MapData.PlayerMap.SelfPlayerData != null
|
|
&& Main.MapData.PlayerMap.SelfPlayerData.IsSurvival;
|
|
SurrenderButton.gameObject.SetActive(canSurrender);
|
|
|
|
gameObject.SetActive(true);
|
|
Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeIn);
|
|
}
|
|
|
|
public void OnClose()
|
|
{
|
|
AnimancerState state = Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeOut);
|
|
state.Events.OnEnd += () =>
|
|
{
|
|
gameObject.SetActive(false);
|
|
};
|
|
}
|
|
|
|
private void OnConfirm()
|
|
{
|
|
OnQuitConfirm?.Invoke();
|
|
}
|
|
|
|
private void OnSurrender()
|
|
{
|
|
if (Main.MapData == null) return;
|
|
var selfPlayer = Main.MapData.PlayerMap.SelfPlayerData;
|
|
if (selfPlayer == null) return;
|
|
|
|
var actionId = new CommonActionId { ActionType = CommonActionType.PlayerSurrender };
|
|
var action = ActionLogicFactory.GetActionLogic(actionId);
|
|
var param = new CommonActionParams(Main.MapData, playerData: selfPlayer);
|
|
if (!action.CheckCan(param)) return;
|
|
action.CompleteExecute(param);
|
|
|
|
OnClose();
|
|
}
|
|
}
|
|
}
|