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); param.RefreshParams(); if (!action.CheckCan(param)) return; action.CompleteExecute(param); OnClose(); } } }