using System; using System.Collections.Generic; using Cute; using UnityEngine; public class MyPageItem : MonoBehaviour { protected const float APPEAR_ANIMATION_DISTANCE_X = 1000f; protected const float APPEAR_ANIMATION_TIME = 0.3f; protected const float APPEAR_ANIMATION_DELAY = 0.1f; protected const float TWEEN_MOVE_TIME = 0.3f; protected const float TWEEN_DELAY_TIME = 0.1f; private const float CARD_PANEL_LEFT_X = -328f; [SerializeField] private MyPageCardPanelAnimation _cardMove; [SerializeField] private MyPageCardPanel[] _cardPanelList; private MyPageMenu _parent; private Dictionary _defaultPosition = new Dictionary(); private bool _isAttachAtlasEnd; private bool cardAnimationInitialized; public MyPageCardPanel[] CardPanelList => _cardPanelList; protected bool IsCardMoving { get { if (_cardMove != null) { return _cardMove.IsCardMoving; } return false; } } public TopBar TopBar => _parent.TopBar; protected MyPageCardPanelAnimation CardAnimation => _cardMove; protected MyPageMenu Parent => _parent; public bool IsEnableFooterCurrentMenu { get; set; } public void SetCardPanelList(MyPageCardPanel[] myPageCardPanels) { _cardPanelList = myPageCardPanels; } public virtual void Initialize(MyPageMenu parent) { _parent = parent; SaveCardPanelDefaultPosition(); if (cardAnimationInitialized) { return; } cardAnimationInitialized = true; if (_cardMove != null) { GameObject[] array = new GameObject[_cardPanelList.Length]; for (int i = 0; i < _cardPanelList.Length; i++) { array[i] = _cardPanelList[i].gameObject; } _cardMove.SetCardPanelList(array); } } public virtual void Show(bool skipCardAnimation = false) { base.gameObject.SetActive(value: true); IsEnableFooterCurrentMenu = false; } public virtual void Hide() { base.gameObject.SetActive(value: false); } public virtual void OnClose() { } public void AttachAtlas() { if (!_isAttachAtlasEnd) { _isAttachAtlasEnd = true; UIManager.GetInstance().AttachAtlas(base.gameObject); } } protected void StartCardPanelAppearAnimation() { if (_cardMove != null) { _cardMove.StartCardPanelAnimation(isCutCardMotion: false); } } protected void SaveCardPanelDefaultPosition() { int num = _cardPanelList.Length; if (num > 0) { Vector3[] array = new Vector3[num]; for (int i = 0; i < num; i++) { array[i] = _cardPanelList[i].SavePosition(); } CardAnimation.UpdateCardPanelDefaultPosition(array); } } protected void RestoreCardPanelPosition() { if (_cardPanelList == null) { return; } for (int i = 0; i < _cardPanelList.Length; i++) { if (_cardPanelList[i] != null) { _cardPanelList[i].RestoreSavedPosition(); _cardPanelList[i].gameObject.SetActive(value: true); _cardPanelList[i].EffectActive = false; _cardPanelList[i].EffectActive = true; _cardPanelList[i].CheckMaintenanceType(); UITweenAlpha component = _cardPanelList[i].GetComponent(); if (component != null) { UnityEngine.Object.Destroy(component); } } } } public virtual void OnMyPageInfoReceive() { if (_cardPanelList == null) { return; } for (int i = 0; i < _cardPanelList.Length; i++) { if (_cardPanelList[i] != null) { _cardPanelList[i].CheckMaintenanceType(); } } } protected void RemoveITween(GameObject obj) { iTween component = obj.GetComponent(); if (component != null) { UnityEngine.Object.Destroy(component); } } protected void TweenMoveTo(GameObject obj, float x) { RemoveITween(obj); iTween.MoveTo(obj, iTween.Hash("x", x, "time", 0.3f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo)); } protected void TweenMoveTo(GameObject obj, float x, float y) { RemoveITween(obj); iTween.MoveTo(obj, iTween.Hash("x", x, "y", y, "time", 0.3f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo)); } protected void MoveCardPanelLeftPosition(GameObject moveObj) { CardAnimation.StopMove(); TweenMoveTo(moveObj, -328f); } public void AppearAnimationFromRight(GameObject obj) { RemoveITween(obj); obj.gameObject.SetActive(value: true); iTween.MoveFrom(obj, iTween.Hash("x", obj.transform.localPosition.x + 1000f, "time", 0.3f, "delay", 0.1f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo)); } protected void FadeOutCardPanel(MyPageCardPanel panel, Action onFinish) { panel.EffectActive = false; FadeOutObject(panel.gameObject.AddMissingComponent(), delegate { onFinish.Call(); }); } protected void FadeOutCardPanelAndNonActive(MyPageCardPanel panel) { FadeOutCardPanel(panel, delegate { panel.gameObject.SetActive(value: false); }); } protected static void FadeOutObject(UITweenAlpha tweenAlpha, Action onFinish = null) { tweenAlpha.End(); FadeUtility.FadeOutObject(tweenAlpha, onFinish); } protected static void FadeInObject(UITweenAlpha tweenAlpha, Action onFinish = null) { tweenAlpha.End(); FadeUtility.FadeInObject(tweenAlpha, onFinish); } protected void ResetAlphaAndRemoveTween(UISprite spriteObj) { UITweenAlpha component = spriteObj.GetComponent(); if (component != null) { UnityEngine.Object.Destroy(component); } spriteObj.alpha = 1f; } public static CardPanelMaintenancePlate SetMaintenanceVisible(bool isMaintenance, UIButton button, CardPanelMaintenancePlate currentPlate, int buttonLabelDepth) { if (isMaintenance) { if (currentPlate == null) { GameObject prefab = GameMgr.GetIns().GetPrefabMgr().Get("Prefab/UI/Menu/CardPanelMaintenancePlate"); currentPlate = NGUITools.AddChild(button.gameObject, prefab).GetComponent(); currentPlate.SetDepth(buttonLabelDepth + 1); } currentPlate.gameObject.SetActive(value: true); UIManager.SetObjectToGrey(button.gameObject, b: true); UIManager.SetObjectToGrey(currentPlate.gameObject, b: false); button.isEnabled = false; } else { if (currentPlate != null) { currentPlate.gameObject.SetActive(value: false); } UIManager.SetObjectToGrey(button.gameObject, b: false); button.isEnabled = true; } return currentPlate; } protected void SaveDefaultPosition(GameObject obj) { if (obj != null) { _defaultPosition[obj.GetInstanceID()] = obj.transform.localPosition; } } protected void RestoreDefaultPosition(GameObject obj) { if (_defaultPosition.ContainsKey(obj.GetInstanceID())) { obj.transform.localPosition = _defaultPosition[obj.GetInstanceID()]; } } protected void ShowMenu(MyPageCardPanel selectedPanel, GameObject menuRoot, bool isAnimate) { int index = selectedPanel.Index; selectedPanel.RestoreSavedPosition(); MoveCardPanelLeftPosition(selectedPanel.gameObject); if (isAnimate) { CardAnimation.OnClicked(index); } for (int i = 0; i < CardPanelList.Length; i++) { if (i == index) { continue; } MyPageCardPanel myPageCardPanel = CardPanelList[i]; if (myPageCardPanel.gameObject.activeSelf) { if (isAnimate) { FadeOutCardPanelAndNonActive(myPageCardPanel); } else { myPageCardPanel.gameObject.SetActive(value: false); } } } menuRoot.SetActive(value: true); RestoreDefaultPosition(menuRoot); AppearAnimationFromRight(menuRoot); } }