Răsfoiți Sursa

修改卡牌为虚拟列表

leiyasi 1 an în urmă
părinte
comite
438b872d4f
1 a modificat fișierele cu 29 adăugiri și 20 ștergeri
  1. 29 20
      GameClient/Assets/Game/HotUpdate/Views/Card/CardDetailView.cs

+ 29 - 20
GameClient/Assets/Game/HotUpdate/Views/Card/CardDetailView.cs

@@ -12,10 +12,16 @@ namespace GFGGame
         private UI_CardDetailUI _ui;
         private const int listRoleCount = 5;
         private bool _startInAnim;
-        private Dictionary<string, EffectUI> _effectUIDic = new Dictionary<string, EffectUI>();
+        private List<EffectUI> _effectUIList = new List<EffectUI>();
 
         public override void Dispose()
         {
+            foreach (var v in _effectUIList)
+            {
+                EffectUIPool.Recycle(v);
+            }
+            _effectUIList.Clear();
+
             if (_ui != null)
             {
                 _ui.Dispose();
@@ -39,7 +45,7 @@ namespace GFGGame
 
             _ui.m_comListCard.m_listCard.itemRenderer = RenderListCardItem;
             _ui.m_comListCard.m_listCard.onClickItem.Add(OnClickListCardItem);
-            //_ui.m_comListCard.m_listCard.SetVirtual();
+            _ui.m_comListCard.m_listCard.SetVirtual();
 
             _ui.m_listRole.itemRenderer = RenderListRoleItem;
             _ui.m_listRole.onClickItem.Add(OnClickListRoleItem);
@@ -60,12 +66,18 @@ namespace GFGGame
             EventAgent.AddEventListener(ConstMessage.CARD_UP_SKILL, UpdateCardList);
             EventAgent.AddEventListener(ConstMessage.CARD_STAR_REWARD, UpdateCardList);
         }
-        protected override void OnShown()
+        protected async override void OnShown()
         {
             base.OnShown();
             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("cp_beijing");
 
-            CardSProxy.GetCardInfos().Coroutine();
+            //ViewManager.Show<ModalStatusView>("加载中...");
+            await CardSProxy.GetCardInfos();
+            if (!isShowing)
+            {
+                return;
+            }
+            //ViewManager.Hide<ModalStatusView>();
             int listRoleSelect = this.viewData != null ? (int)this.viewData : 0;
             _ui.m_listRole.selectedIndex = listRoleSelect;
             _ui.m_listRole.numItems = listRoleCount;
@@ -83,12 +95,6 @@ namespace GFGGame
         protected override void OnHide()
         {
             base.OnHide();
-            foreach (var v in _effectUIDic)
-            {
-                EffectUIPool.Recycle(v.Value);
-            }
-            _effectUIDic.Clear();
-
             this.Clear();
             Timers.inst.Remove(CheckGuide);
         }
@@ -120,12 +126,6 @@ namespace GFGGame
             }
             cardList = CardDataManager.SortItemList(cardList);
 
-            foreach (var v in _effectUIDic)
-            {
-                EffectUIPool.Recycle(v.Value);
-            }
-            _effectUIDic.Clear();
-
             _ui.m_comListCard.m_listCard.data = cardList;
             _ui.m_comListCard.m_listCard.numItems = cardList.Count;
 
@@ -148,15 +148,24 @@ namespace GFGGame
             listItem.m_txtName.text = data.itemCfg.name;
             RedDotController.Instance.SetComRedDot(listItem.target, RedDotDataManager.Instance.GetCardRed(data.id), "", 5, -10);
 
+            listItem.m_rarity.selectedIndex = data.itemCfg.rarity;
+
             if (data.itemCfg.rarity == 5)
             {
-                if (!_effectUIDic.ContainsKey("gold" + index))
-                    _effectUIDic.Add("gold" + index, EffectUIPool.CreateEffectUI(listItem.m_holderGoldBg, "ui_KP", "KP_Gold_Frame"));
+                if (listItem.m_holderGoldBg.m_used.visible)
+                {
+                    listItem.m_holderGoldBg.m_used.visible = false;
+                    _effectUIList.Add(EffectUIPool.CreateEffectUI(listItem.m_holderGoldBg.m_holderBg, "ui_KP", "KP_Gold_Frame"));
+                }
+                    
             }
             else if (data.itemCfg.rarity == 3)
             {
-                if (!_effectUIDic.ContainsKey("purple" + index))
-                    _effectUIDic.Add("purple" + index, EffectUIPool.CreateEffectUI(listItem.m_holderPurpleBg, "ui_KP", "KP_Purple_Frame"));
+                if (listItem.m_holderPurpleBg.m_used.visible)
+                {
+                    listItem.m_holderPurpleBg.m_used.visible = false;
+                    _effectUIList.Add(EffectUIPool.CreateEffectUI(listItem.m_holderPurpleBg.m_holderBg, "ui_KP", "KP_Purple_Frame"));
+                }
             }
             
             int starLevelDodge = data.star / 5;