using System.Collections.Generic; using Cute; using UnityEngine; using Wizard.Battle.UI; using Wizard.Battle.View; using Wizard.Battle.View.Vfx; public class EnemyStatusPanelControl : MonoBehaviour, IStatusPanelControl { private BattleManagerBase _battleMgr; [SerializeField] private GameObject StatusPanel; [SerializeField] private GameObject PPPanel; [SerializeField] private GameObject StatusPanelAllwaysDisp; [SerializeField] private UISprite EpPanel; [SerializeField] private UISprite DeckIconSprite; [SerializeField] private UILabel DeckLabelAlwaysDisp; [SerializeField] private UISprite GraveIconSprite; [SerializeField] private UILabel GraveLabelAlwaysDisp; [SerializeField] private UILabel DeckLabel; [SerializeField] private UILabel GraveLabel; [SerializeField] private UILabel PPLabel; [SerializeField] private UILabel PPLineLabel; [SerializeField] private UILabel PPMaxLabel; [SerializeField] private UILabel EpLabel; [SerializeField] private UISprite[] EpList; [SerializeField] private UISprite EpIcon; [SerializeField] private UILabel HandCountLabel; [SerializeField] private UILabel HandCountLabelAlwaysDisp; [SerializeField] private UISprite HandCountIconSpriteAlwaysDisp; private const float ALWAYS_STATUS_PANEL_SHOW_ANIMATION_OFFSET = 350f; private const float ALWAYS_STATUS_PANEL_SHOW_ANIMATION_SECOND = 0.5f; private readonly Vector3 EP_PANEL_POSITION = new Vector3(235f, -90f, 0f); private readonly Vector3 ANYA_EP_PANEL_POSITION = new Vector3(207f, -90f, 0f); private const float EP_PANEL_OFFSET = 350f; private const float PP_PANEL_OFFSET = 300f; private const int ANYA_HIGH_RANK_SKIN_ID = 4413; private ParticleSystem[] GaugeShiftEfcChild; private bool isPlayer; private IDictionary DefaultPosDict; private Vector3 EpPanelPosition { get { if (GameMgr.GetIns().GetDataMgr().GetEnemySkinId() != 4413) { return EP_PANEL_POSITION; } return ANYA_EP_PANEL_POSITION; } } public Vector3 EpPanelOffScreenPosition => EpPanelPosition + Vector3.up * 350f; public Vector3 BpPanelOffScreenPosition => DefaultPosDict["BPPanel"] + Vector3.up * 350f; private void Start() { string text = Toolbox.SavedataManager.GetString("LANG_SETTING", "Eng"); if (text == Global.LANG_TYPE.Eng.ToString() || text == Global.LANG_TYPE.Ger.ToString()) { PPPanel.transform.Find("PPIcon/PPSprite").gameObject.SetActive(value: false); Vector3 vector = new Vector3(0f, 11f, 0f); PPLabel.transform.localPosition += vector; PPLineLabel.transform.localPosition += vector; PPMaxLabel.transform.localPosition += vector; } PPPanel.transform.parent = BattleManagerBase.GetIns().Battle3DContainer.transform; DefaultPosDict = new Dictionary(); DefaultPosDict["StatusPanel"] = StatusPanel.transform.localPosition; DefaultPosDict["PPPanel"] = new Vector3(PPPanel.transform.localPosition.x, 460f, PPPanel.transform.localPosition.z); DefaultPosDict["StatusPanelAllwaysDisp"] = StatusPanelAllwaysDisp.transform.localPosition; SetPp(0, 0); SetDeck(0); SetGrave(0); PPPanel.transform.localPosition = DefaultPosDict["PPPanel"] + Vector3.up * 300f; EpPanel.transform.localPosition = EpPanelOffScreenPosition; PPPanel.SetActive(value: false); EpPanel.gameObject.SetActive(value: false); PPPanel.SetActive(value: false); EpPanel.gameObject.SetActive(value: false); StatusPanelAllwaysDisp.gameObject.SetActive(value: false); List list = new List(); list.Add(base.gameObject); list.Add(PPPanel); list.Add(EpPanel.gameObject); UIManager.GetInstance().AttachAtlas(list); } public void ChangePPPanelParent(Transform parent, Vector3 position) { PPPanel.transform.parent = parent; DefaultPosDict["PPPanel"] = position; if (PPPanel.GetComponent() != null) { StartPPPanelAnimation(); } else { PPPanel.transform.localPosition = DefaultPosDict["PPPanel"] + Vector3.up * 300f; } } public void SetUp(BattleManagerBase battleMgr) { _battleMgr = battleMgr; } public void ShowStatus(bool isNewReplayMoveTurn) { if (BattlePlayerViewBase.AlwaysShowStatusPanel && !isNewReplayMoveTurn) { ShowStatusPanelAlways(); } else { StatusPanel.SetActive(value: true); } } public void ShowStatusPanelOnBattle() { StatusPanelAllwaysDisp.gameObject.SetActive(BattlePlayerViewBase.AlwaysShowStatusPanel); } public void ShowStatusPanelAlways() { if (BattlePlayerViewBase.AlwaysShowStatusPanel) { StatusPanelAllwaysDisp.gameObject.SetActive(value: true); Vector3 localPosition = DefaultPosDict["StatusPanelAllwaysDisp"] + Vector3.up * 350f; StatusPanelAllwaysDisp.transform.localPosition = localPosition; iTween.MoveTo(StatusPanelAllwaysDisp, iTween.Hash("position", DefaultPosDict["StatusPanelAllwaysDisp"], "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInOutExpo)); } } public void HideStatusPanelAlways() { if (BattlePlayerViewBase.AlwaysShowStatusPanel) { StatusPanelAllwaysDisp.gameObject.SetActive(value: false); } } public void ShowPpEp(bool isNotEPMax3, bool fixDirection = false, bool isNewReplay = false, bool isBanmenkun = false) { if (fixDirection) { isNotEPMax3 = false; } EpPanel.spriteName = GetEvoPanelSprite(isNotEPMax3); bool flag = GameMgr.GetIns().GetDataMgr().GetEnemySkinId() == 4413; if (isNotEPMax3) { EpIcon.transform.localPosition = new Vector3(-7.5f, -3.6f, 0f); EpList[0].spriteName = "battle_icon_evo_off_mini"; EpList[1].spriteName = "battle_icon_evo_off_mini"; EpList[2].spriteName = "battle_icon_evo_off_mini"; EpList[0].transform.localPosition = new Vector3(5.1f, -59.2f, 0f); EpList[1].transform.localPosition = new Vector3(23.8f, -59.2f, 0f); EpList[2].gameObject.SetActive(value: false); if (isNewReplay) { EpPanel.transform.localScale = new Vector3(Mathf.Abs(EpPanel.transform.localScale.x), EpPanel.transform.localScale.y, EpPanel.transform.localScale.z); EpIcon.transform.localScale = new Vector3(Mathf.Abs(EpIcon.transform.localScale.x), EpIcon.transform.localScale.y, EpIcon.transform.localScale.z); } if (flag) { EpPanel.transform.localScale = new Vector3(0f - Mathf.Abs(EpPanel.transform.localScale.x), EpPanel.transform.localScale.y, EpPanel.transform.localScale.z); EpIcon.transform.localScale = new Vector3(0f - Mathf.Abs(EpIcon.transform.localScale.x), EpIcon.transform.localScale.y, EpIcon.transform.localScale.z); } } else { EpIcon.transform.localPosition = new Vector3(8f, -3.6f, 0f); EpList[0].spriteName = "battle_icon_evo_off_mini"; EpList[1].spriteName = "battle_icon_evo_off_mini"; EpList[2].spriteName = "battle_icon_evo_off_mini"; EpList[0].transform.localPosition = new Vector3(17.1f, -59.2f, 0f); EpList[1].transform.localPosition = new Vector3(-1.6f, -59.2f, 0f); EpList[2].transform.localPosition = new Vector3(-20.2f, -59.2f, 0f); if (isNewReplay) { EpList[2].gameObject.SetActive(value: true); } float x = ((fixDirection || isNewReplay || isBanmenkun) ? (0f - Mathf.Abs(EpPanel.transform.localScale.x)) : (0f - EpPanel.transform.localScale.x)); if (flag) { x = Mathf.Abs(EpPanel.transform.localScale.x); } EpPanel.transform.localScale = new Vector3(x, EpPanel.transform.localScale.y, EpPanel.transform.localScale.z); float x2 = ((fixDirection || isNewReplay || isBanmenkun) ? (0f - Mathf.Abs(EpIcon.transform.localScale.x)) : (0f - EpIcon.transform.localScale.x)); if (flag) { x2 = Mathf.Abs(EpIcon.transform.localScale.x); } EpIcon.transform.localScale = new Vector3(x2, EpIcon.transform.localScale.y, EpIcon.transform.localScale.z); } if (!isNewReplay) { StartPPPanelAnimation(); EpPanel.transform.localPosition = EpPanelOffScreenPosition; iTween.MoveTo(EpPanel.gameObject, iTween.Hash("position", EpPanelPosition, "time", 0.5f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeInOutExpo)); } else { PPPanel.transform.localPosition = DefaultPosDict["PPPanel"]; EpPanel.transform.localPosition = EpPanelPosition; } EpPanel.gameObject.SetActive(value: true); } private void StartPPPanelAnimation() { PPPanel.transform.localPosition = DefaultPosDict["PPPanel"] + Vector3.up * 300f; iTween.MoveTo(PPPanel, iTween.Hash("position", DefaultPosDict["PPPanel"], "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInOutExpo)); PPPanel.SetActive(value: true); } public void HideUI() { iTween.MoveTo(PPPanel, iTween.Hash("position", DefaultPosDict["PPPanel"] + Vector3.up * 300f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInOutExpo)); iTween.MoveTo(EpPanel.gameObject, iTween.Hash("position", EpPanelOffScreenPosition, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeInOutExpo)); } public void SetDeck(int num) { DeckLabel.text = num.ToString(); DeckLabelAlwaysDisp.text = num.ToString(); } public void SetGrave(int num) { GraveLabel.text = num.ToString(); GraveLabelAlwaysDisp.text = num.ToString(); } public void SetHandCount(int num) { HandCountLabelAlwaysDisp.text = num.ToString(); UISprite handCountIconSpriteAlwaysDisp = HandCountIconSpriteAlwaysDisp; Color color = (HandCountLabelAlwaysDisp.color = ClassInfomationUIBase.GetHandCardCountColor(num)); handCountIconSpriteAlwaysDisp.color = color; } public void SetPp(int num, int max, bool isNewReplayMoveTurn = false) { PPLabel.text = num.ToString(); PPMaxLabel.text = max.ToString(); } public void PlayIncreasePpAnimation(int oldPp, int newPp) { } public void SetEp(int evo, int cnt) { if (evo > 0) { EpIcon.spriteName = "battle_icon_evo_off"; EpLabel.gameObject.SetActive(value: true); EpLabel.text = evo.ToString(); return; } if (!_battleMgr.BattleEnemy.IsEpEvolveThisTurn) { EpIcon.spriteName = "battle_icon_evo_on"; } else { EpIcon.spriteName = "battle_icon_evo_off"; } EpLabel.gameObject.SetActive(value: false); bool flag = GameMgr.GetIns().GetDataMgr().GetEnemySkinId() == 4413; for (int i = 0; i < 3; i++) { if (EpList[i] != null && EpList[i].gameObject.activeSelf) { if (flag) { EpList[i].spriteName = ((i < _battleMgr.BattleEnemy.EpTotal - cnt) ? "battle_icon_evo_off_mini" : "battle_icon_evo_on_mini"); } else { EpList[i].spriteName = ((i < cnt) ? "battle_icon_evo_on_mini" : "battle_icon_evo_off_mini"); } } } if (cnt <= 0) { EpIcon.spriteName = "battle_icon_evo_off"; } } public VfxBase PlayIncreaseMaxEpAnimation(int oldMaxEp, int newMaxEp) { return InstantVfx.Create(delegate { EpPanel.spriteName = GetEvoPanelSprite(isNotEpMax3: false); EpIcon.transform.localPosition = new Vector3(8f, -3.6f, 0f); EpList[0].transform.localPosition = new Vector3(17.1f, -59.2f, 0f); EpList[1].transform.localPosition = new Vector3(-1.6f, -59.2f, 0f); EpList[2].transform.localPosition = new Vector3(-20.2f, -59.2f, 0f); EpList[2].gameObject.SetActive(value: true); EpPanel.transform.localScale = new Vector3(0f - EpPanel.transform.localScale.x, EpPanel.transform.localScale.y, EpPanel.transform.localScale.z); EpIcon.transform.localScale = new Vector3(0f - EpIcon.transform.localScale.x, EpIcon.transform.localScale.y, EpIcon.transform.localScale.z); }); } public VfxBase PlayIncreaseUsableEpAnimation(int oldUsableEpAmount, int amountOfUsableEpGained, int maxEp) { return InstantVfx.Create(delegate { bool flag = GameMgr.GetIns().GetDataMgr().GetEnemySkinId() == 4413; for (int i = oldUsableEpAmount; i < oldUsableEpAmount + amountOfUsableEpGained; i++) { GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_UI_EP_5, EpList[flag ? (_battleMgr.BattleEnemy.EpTotal - i - 1) : i].transform.position); } }); } public VfxBase PlayDecreaseUsableEpAnimation(int oldUsableEpAmount, int usedEp) { return InstantVfx.Create(delegate { GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CMN_UI_EP_6); int num = Mathf.Max(oldUsableEpAmount - usedEp, 0); EffectMgr effectMgr = GameMgr.GetIns().GetEffectMgr(); bool flag = GameMgr.GetIns().GetDataMgr().GetEnemySkinId() == 4413; for (int i = num; i < oldUsableEpAmount; i++) { effectMgr.Start(EffectMgr.EffectType.CMN_UI_EP_6, EpList[flag ? (_battleMgr.BattleEnemy.EpTotal - i - 1) : i].transform.position); } }); } public void ChangeColor(Color color, float time) { TweenColor.Begin(StatusPanel, time, color); TweenColor.Begin(DeckLabel.gameObject, time, color); TweenColor.Begin(GraveLabel.gameObject, time, color); TweenColor.Begin(DeckIconSprite.gameObject, time, color); TweenColor.Begin(GraveIconSprite.gameObject, time, color); } public Transform GetClassInfoAnchor() { return base.gameObject.transform.Find("AnchorTR"); } public GameObject GetPPPanel() { return PPPanel; } public GameObject GetEPIcon() { return EpIcon.gameObject; } private string GetEvoPanelSprite(bool isNotEpMax3) { string text = "battle_evo_"; DataMgr dataMgr = GameMgr.GetIns().GetDataMgr(); int enemySkinId = dataMgr.GetEnemySkinId(); if (dataMgr.IsHighRankSkinEnemy()) { text = text + enemySkinId + "_"; } else if (dataMgr.Is3DSkin(isPlayer: false)) { text += "uma_"; } else if (Global.IsSnCollabSkin(enemySkinId)) { text += "sn_"; } return text + "base_" + (isNotEpMax3 ? "02" : "01"); } }