using UnityEngine; using Wizard; public class TurnEndButtonUI : UIBase, ITurnEndButtonUI { public enum ViewType { Normal, Watch, Replay } private const int TITLELABEL_FONTSIZE_NORMAL = 28; private const int TITLELABEL_FONTSIZE_WATCH = 25; private const int HIDE_X_VALUE = 200; private const string SPRITE_NAME_BLUE = "battle_btn_turnend_off"; private const string SPRITE_NAME_BLUE_WATCH = "battle_btn_turnend_owner"; private const string SPRITE_NAME_RED = "battle_btn_turnend_red"; private const string SPRITE_NAME_RED_WATCH = "battle_btn_turnend_guest"; [SerializeField] private GameObject BtnMain; [SerializeField] private UILabel TitleLabel; [SerializeField] private UISprite TurnEndButtonImg; [SerializeField] private UIButton TurnEndButtonButton; private Vector3 _defPos; private bool _isSettingDefPost; public bool _isButtonForcedOff { get; set; } public bool GetEnableLabel => TitleLabel.gameObject.activeSelf; public bool _isChangeViewLock { get; set; } public GameObject GameObject => base.gameObject; private ViewType ActiveView { get { if (GameMgr.GetIns().IsReplayBattle) { return ViewType.Replay; } if (GameMgr.GetIns().IsWatchBattle) { return ViewType.Watch; } return ViewType.Normal; } } public void StartTurnEndCountdown() { GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_ACTUVATE_TURNEND_BUTTON); base.gameObject.SetActive(value: true); ShowBtn(); } public void ShowBtn(bool canPlayerEndTurnImmediately = false) { BattleManagerBase ins = BattleManagerBase.GetIns(); BattlePlayer battlePlayer = ins.BattlePlayer; BattlePlayerBase battlePlayer2 = ins.GetBattlePlayer(isPlayer: false); if (!battlePlayer.IsTurnStartEffectNotFinished && !battlePlayer.Class.IsDead && !battlePlayer2.Class.IsDead && !ins.IsPlayerRetire) { if (_isButtonForcedOff) { DisableButton(); } else { EnableButton(); } bool isSelfTurn = battlePlayer.IsSelfTurn; if (isSelfTurn) { BtnMain.SetActive(value: true); } if (ActiveView == ViewType.Watch) { TitleLabel.gameObject.SetActive(value: true); } else { TitleLabel.gameObject.SetActive(isSelfTurn); } ChangeButtonView(isSelfTurn); if (canPlayerEndTurnImmediately) { EnableEndTurnPulsateEffect(); } else { DisableEndTurnPulsateEffect(); } } } public void HideBtn() { if (ActiveView == ViewType.Normal) { TitleLabel.gameObject.SetActive(value: false); } DisableButton(); DisableEndTurnPulsateEffect(); } public void HideAnimation() { iTween.MoveTo(BtnMain, iTween.Hash("position", BtnMain.transform.localPosition + Vector3.right * 200f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInOutExpo)); } public void ChangeButtonView(bool isMyTurn) { if (!_isChangeViewLock) { ChangeSpriteOnTurn(isMyTurn); ChangeTitleLabelOnTurn(isMyTurn); } } private void ChangeSpriteOnTurn(bool isMyTurn) { string text = ""; text = ((ActiveView != ViewType.Normal) ? (isMyTurn ? "battle_btn_turnend_owner" : "battle_btn_turnend_guest") : (isMyTurn ? "battle_btn_turnend_off" : "battle_btn_turnend_red")); TurnEndButtonImg.spriteName = text; TurnEndButtonButton.normalSprite = text; } private void ChangeTitleLabelOnTurn(bool isMyTurn) { string text = string.Empty; int num = 28; if (ActiveView == ViewType.Normal && isMyTurn) { text = "Battle_0109"; num = 28; } else if (ActiveView == ViewType.Normal && !isMyTurn) { text = string.Empty; num = 28; } else if (ActiveView == ViewType.Replay) { TitleLabel.text = string.Empty; num = 28; } else { text = (isMyTurn ? "Battle_0468" : "Battle_0469"); num = 25; } if (!string.IsNullOrEmpty(text)) { TitleLabel.text = Data.SystemText.Get(text); TitleLabel.fontSize = num; } else { TitleLabel.text = string.Empty; TitleLabel.fontSize = 28; } } public void EnableButton() { if (BattleManagerBase.GetIns().BattlePlayer.IsSelfTurn && !_isButtonForcedOff && !_isChangeViewLock) { TurnEndButtonButton.isEnabled = true; } } public void DisableButton() { TurnEndButtonButton.isEnabled = false; } public void EnableEndTurnPulsateEffect() { if (TurnEndButtonButton.isEnabled && GetEnableLabel && base.gameObject.activeSelf && ActiveView != ViewType.Watch) { GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_FRAME_BTN_1, GetBtnPosition()); } } public void DisableEndTurnPulsateEffect() { GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_FRAME_BTN_1); } public Vector3 GetBtnPosition() { return BtnMain.transform.position; } public void SettingTimer(float second, bool isRed) { if (!isRed) { if (!_isSettingDefPost) { _defPos = BtnMain.transform.localPosition; _isSettingDefPost = true; } BtnMain.transform.localPosition = _defPos; } else { float num = 20f - second; BtnMain.transform.localPosition = new Vector3(num * Random.value - num * 0.5f, num * Random.value - num * 0.5f, 0f) + _defPos; } } public void Recovery() { BtnMain.SetActive(value: false); BtnMain.SetActive(value: true); } public GameObject GetTurnEndButton() { return TurnEndButtonButton.gameObject; } }