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;
	}
}
