using System.Collections;
using UnityEngine;
using Wizard.Battle.View.Vfx;

public class TurnPanelControl : MonoBehaviour, ITurnPanelControl
{
	[SerializeField]
	private UIPanel TurnPanel;

	[SerializeField]
	private UISprite TurnTitle;

	[SerializeField]
	private UISprite SubTurnTitle;

	[SerializeField]
	private UILabel SubTurnLabel;

	[SerializeField]
	private UITable SubEvoTable;

	[SerializeField]
	private UISprite SubEvoTitle;

	[SerializeField]
	private UISprite SubEvoTurn;

	[SerializeField]
	private UILabel SubEvoLabel;

	[SerializeField]
	private UIPanel EvoPanel;

	[SerializeField]
	private UISprite EvoText;

	[SerializeField]
	private UIPanel ArcanePanel;

	[SerializeField]
	private UISprite ArcaneOut;

	[SerializeField]
	private UISprite ArcaneIn;

	[SerializeField]
	private UISprite Bg;

	private int evoCnt;

	private bool isPlayer;

	[HideInInspector]
	public bool isEvoEnableP;

	[HideInInspector]
	public bool isEvoEnableE;

	private GameObject m_effectGameObject;

	private IEnumerator _turnStartSequenceEnumerator;

	public GameObject GameObject => base.gameObject;

	public void Initialize(bool isEvoEnableP = true, bool isEvoEnableE = true)
	{
		this.isEvoEnableP = isEvoEnableP;
		this.isEvoEnableE = isEvoEnableE;
		TurnPanel.alpha = 0f;
		EvoPanel.alpha = 0f;
		ArcanePanel.alpha = 0f;
		Bg.alpha = 0f;
		_turnStartSequenceEnumerator = RunUI();
	}

	public VfxBase LoadResource()
	{
		return new WaitLoadEffectAndSetSeVfx("cmn_ui_yourturn_3", "se_cmn_ui_yourturn_3", delegate(GameObject e)
		{
			m_effectGameObject = e;
		});
	}

	public void StartUI(int turn, int evo, bool isP)
	{
		base.gameObject.SetActive(value: true);
		evoCnt = evo;
		isPlayer = isP;
		if (isPlayer)
		{
			TurnTitle.spriteName = "img_your_turn_panel_01";
			SubTurnTitle.spriteName = "img_your_turn_count_panel_01";
			SubEvoTitle.spriteName = "text_battle_evo_left_01";
			if (evoCnt + 1 == 1)
			{
				SubEvoTurn.spriteName = "text_battle_evo_right_01_1";
			}
			else
			{
				SubEvoTurn.spriteName = "text_battle_evo_right_01_2";
			}
			ArcaneIn.spriteName = "arcane_01_ring";
			ArcaneOut.spriteName = "arcane_01_ring";
			SubTurnLabel.effectColor = new Color(0f, 0.5f, 0.9f, 0.5f);
			SubEvoLabel.effectColor = new Color(0f, 0.5f, 0.9f, 0.5f);
			if (isEvoEnableP)
			{
				SubTurnTitle.gameObject.SetActive(value: false);
				SubEvoTable.gameObject.SetActive(value: true);
				SubEvoLabel.text = (evoCnt + 1).ToString();
			}
			else
			{
				SubTurnTitle.gameObject.SetActive(value: true);
				SubEvoTable.gameObject.SetActive(value: false);
				SubTurnLabel.text = turn.ToString();
			}
		}
		else
		{
			TurnTitle.spriteName = "img_your_turn_panel_02";
			SubTurnTitle.spriteName = "img_your_turn_count_panel_02";
			SubEvoTitle.spriteName = "text_battle_evo_left_02";
			if (evoCnt + 1 == 1)
			{
				SubEvoTurn.spriteName = "text_battle_evo_right_02_1";
			}
			else
			{
				SubEvoTurn.spriteName = "text_battle_evo_right_02_2";
			}
			ArcaneIn.spriteName = "arcane_02_ring";
			ArcaneOut.spriteName = "arcane_02_ring";
			SubTurnLabel.effectColor = new Color(0.75f, 0f, 0.25f, 0.5f);
			SubEvoLabel.effectColor = new Color(0.75f, 0f, 0.25f, 0.5f);
			if (isEvoEnableE)
			{
				SubTurnTitle.gameObject.SetActive(value: false);
				SubEvoTable.gameObject.SetActive(value: true);
				SubEvoLabel.text = (evoCnt + 1).ToString();
			}
			else
			{
				SubTurnTitle.gameObject.SetActive(value: true);
				SubEvoTable.gameObject.SetActive(value: false);
				SubTurnLabel.text = turn.ToString();
			}
		}
		SnapSprites();
		TurnPanel.alpha = 0f;
		EvoPanel.alpha = 0f;
		ArcanePanel.alpha = 0f;
		Bg.alpha = 0f;
		StopCoroutine(_turnStartSequenceEnumerator);
		_turnStartSequenceEnumerator = RunUI();
		StartCoroutine(_turnStartSequenceEnumerator);
	}

	private IEnumerator RunUI()
	{
		TweenAlpha.Begin(Bg.gameObject, 0.2f, 0.5f);
		TweenAlpha.Begin(TurnPanel.gameObject, 0.2f, 1f);
		TurnPanel.transform.localScale = Vector3.one * 0.01f;
		iTween.ScaleTo(TurnPanel.gameObject, iTween.Hash("scale", Vector3.one * 0.95f, "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
		TweenAlpha.Begin(ArcanePanel.gameObject, 0.2f, 1f);
		ArcanePanel.transform.localScale = Vector3.one * 10f;
		iTween.ScaleTo(ArcanePanel.gameObject, iTween.Hash("scale", Vector3.one * 1.05f, "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
		yield return new WaitForSeconds(0.2f);
		TurnPanel.transform.localScale = Vector3.one * 0.95f;
		iTween.ScaleTo(TurnPanel.gameObject, iTween.Hash("scale", Vector3.one, "time", 1f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
		ArcanePanel.transform.localScale = Vector3.one * 1.05f;
		iTween.ScaleTo(ArcanePanel.gameObject, iTween.Hash("scale", Vector3.one, "time", 1f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
		yield return new WaitForSeconds(0.5f);
		if ((isPlayer && isEvoEnableP) || (!isPlayer && isEvoEnableE))
		{
			SubEvoLabel.transform.localScale = Vector3.one;
			if (isPlayer)
			{
				if (evoCnt == 1)
				{
					SubEvoTurn.spriteName = "text_battle_evo_right_01_1";
				}
				else
				{
					SubEvoTurn.spriteName = "text_battle_evo_right_01_2";
				}
			}
			else if (evoCnt == 1)
			{
				SubEvoTurn.spriteName = "text_battle_evo_right_02_1";
			}
			else
			{
				SubEvoTurn.spriteName = "text_battle_evo_right_02_2";
			}
			SnapSprites();
			yield return new WaitForSeconds(0.05f);
			SubEvoLabel.text = evoCnt.ToString();
			SubEvoLabel.transform.localScale = Vector3.one * 1.5f;
			iTween.ScaleTo(SubEvoLabel.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
			yield return new WaitForSeconds(0.45f);
		}
		else
		{
			yield return new WaitForSeconds(0.5f);
		}
		iTween.ScaleTo(TurnPanel.gameObject, iTween.Hash("scale", Vector3.one * 0.01f, "time", 0.4f, "islocal", true, "easetype", iTween.EaseType.easeInQuad));
		iTween.ScaleTo(ArcanePanel.gameObject, iTween.Hash("scale", Vector3.one * 10f, "time", 0.4f, "islocal", true, "easetype", iTween.EaseType.easeInExpo));
		TweenAlpha.Begin(TurnPanel.gameObject, 0.4f, 0f);
		TweenAlpha.Begin(ArcanePanel.gameObject, 0.4f, 0f);
		if (evoCnt == 0 && ((isPlayer && isEvoEnableP) || (!isPlayer && isEvoEnableE)))
		{
			yield return new WaitForSeconds(0.2f);
			BattleManagerBase.GetIns().VfxMgr.RegisterImmediateVfx(new PlayEffectAndSeVfx(() => m_effectGameObject, Vector3.zero));
			yield return new WaitForSeconds(0.2f);
			EvoPanel.alpha = 1f;
			EvoPanel.transform.localScale = Vector3.one * 1.05f;
			iTween.ScaleTo(EvoPanel.gameObject, iTween.Hash("scale", Vector3.one, "time", 1.5f, "islocal", true, "easetype", iTween.EaseType.linear));
			yield return new WaitForSeconds(1.2f);
			TweenAlpha.Begin(EvoPanel.gameObject, 0.3f, 0f);
			if (isPlayer)
			{
				isEvoEnableP = false;
			}
			else
			{
				isEvoEnableE = false;
			}
		}
		TweenAlpha.Begin(Bg.gameObject, 0.2f, 0f);
		yield return new WaitForSeconds(0.3f);
		base.gameObject.SetActive(value: false);
	}

	private void SnapSprites()
	{
		TurnTitle.MakePixelPerfect();
		SubEvoTitle.MakePixelPerfect();
		SubEvoTurn.MakePixelPerfect();
		SubEvoTable.Reposition();
	}
}
