浏览代码

[修复]竞技场能重复搭配卡牌的问题

heixaojie 2 年之前
父节点
当前提交
cf2e2e0b74
共有 1 个文件被更改,包括 56 次插入18 次删除
  1. 56 18
      GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs

+ 56 - 18
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryCardChoose.cs

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using System.Threading.Tasks;
 using FairyGUI;
 using UI.CommonGame;
@@ -9,12 +10,11 @@ namespace GFGGame
 {
     public class StoryCardChoose : BaseWindow
     {
-
         private UI_StoryCardChooseUI _ui;
         private List<CardData> cardList = new List<CardData>();
         private static int _scoreType;
         private int _selectedIndex = 0;
-        private int _cardId = 0;//记录打开界面时的竞技场卡牌id
+        private int _cardId = 0; //记录打开界面时的竞技场卡牌id
         private int _skillId = 0;
 
         private List<GameObject> _effects = new List<GameObject>();
@@ -22,6 +22,7 @@ namespace GFGGame
         private GameObject gameObject0;
         private GoWrapper wrapper0;
         private GComponent _comSelected;
+
         public override void Dispose()
         {
             base.Dispose();
@@ -30,6 +31,7 @@ namespace GFGGame
                 _comSelected.RemoveFromParent();
                 _comSelected.Dispose();
             }
+
             for (int i = 0; i < _effects.Count; i++)
             {
                 SceneController.DestroyObjectFromView(_effects[i], _wrappers[i]);
@@ -67,20 +69,38 @@ namespace GFGGame
 
             // SceneController.AddObjectToView(gameObject0, null, _comSelected.GetChild("holder").asGraph, resPath, out gameObject0, out wrapper0);
         }
+
         protected override void OnShown()
         {
             base.OnShown();
             _scoreType = (int)viewData;
+            ArenaDataManager dataManager = ArenaDataManager.Instance;
+            //其他主题带的cardIds
+            var otherThemeCardIds = new List<int>();
+            for (int i = 0; i < dataManager.DressupList.Count; i++)
+            {
+                if (dataManager.SelectThemeIndex == i)
+                {
+                    continue;
+                }
+
+                otherThemeCardIds.Add(dataManager.DressupList[i].cardId);
+            }
+
             cardList = CardDataManager.GetCardListByRarity(0);
-            float dressListAllAcore = FightDataManager.Instance.GetDressListAllScore(MyDressUpHelper.dressUpObj.itemList, _scoreType);
+            //去掉已经在其他主题装配的cardList
+            cardList = cardList.Where(a => !otherThemeCardIds.Contains(a.id)).ToList();
+
+            float dressListAllAcore =
+                FightDataManager.Instance.GetDressListAllScore(MyDressUpHelper.dressUpObj.itemList, _scoreType);
             cardList = FightDataManager.Instance.SortCardList(cardList, dressListAllAcore, _scoreType);
             _ui.m_listCard.numItems = cardList.Count;
             _ui.m_listCard.selectedIndex = 0;
             if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
             {
-                ArenaDataManager dataManager = ArenaDataManager.Instance;
                 _cardId = dataManager.DressupList[dataManager.SelectThemeIndex].cardId;
             }
+
             OnCardSelected(cardList[0].id);
             UpdateView(0);
 
@@ -107,24 +127,29 @@ namespace GFGGame
             int childIndex = _ui.m_listCard.ItemIndexToChildIndex(index);
             _ui.m_listCard.GetChildAt(childIndex).asCom.AddChild(_comSelected);
         }
+
         private void RenderListSkillItem(int index, GObject obj)
         {
             List<PassivitySkillCfg> skillCfgs = obj.parent.data as List<PassivitySkillCfg>;
             UI_ListCardSkillItem item = UI_ListCardSkillItem.Proxy(obj);
             item.m_loaSkill.url = ResPathUtil.GetCardSkillPath(skillCfgs[index].res);
-            item.m_txtLv.text = SkillDataManager.Instance.GetCardSkillLv(skillCfgs[index].cardId, skillCfgs[index].skillId).ToString();
+            item.m_txtLv.text = SkillDataManager.Instance
+                .GetCardSkillLv(skillCfgs[index].cardId, skillCfgs[index].skillId).ToString();
             if (item.target.data == null)
             {
                 item.target.onClick.Add(OnSkillItemClick);
             }
-            item.target.data = index;// skillCfgs[index];
+
+            item.target.data = index; // skillCfgs[index];
             UI_ListCardSkillItem.ProxyEnd();
         }
+
         private void OnSkillItemClick(EventContext context)
         {
             GObject gObject = context.sender as GObject;
             int index = (int)gObject.data;
-            List<PassivitySkillCfg> skillCfgs = PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardList[_selectedIndex].id);
+            List<PassivitySkillCfg> skillCfgs =
+                PassivitySkillCfgArray.Instance.GetCfgsBycardId(cardList[_selectedIndex].id);
 
             PassivitySkillCfg skillCfg = skillCfgs[index];
             _ui.m_comSkillTips.target.visible = _skillId != skillCfg.skillId;
@@ -135,22 +160,25 @@ namespace GFGGame
 
             _ui.m_comSkillTips.m_txtName.text = skillCfg.name;
             int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.cardId, skillCfg.skillId);
-            PassivitySkillLvlCfg skillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillCfg.skillId);
+            PassivitySkillLvlCfg skillLvlCfg =
+                PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillCfg.skillId);
             _ui.m_comSkillTips.m_txtSkillTips.text = skillLvlCfg.describe;
 
             _skillId = skillCfg.skillId;
-
         }
+
         private void RenderListCardItem(int index, GObject obj)
         {
             CardData cardData = cardList[index];
-            UI_ListCardItem item = UI_ListCardItem.Proxy(obj);// obj as GButton;
+            UI_ListCardItem item = UI_ListCardItem.Proxy(obj); // obj as GButton;
 
             item.m_txtName.text = cardData.itemCfg.name;
-            item.m_comCardMask.m_loaCard.asLoader.url = ResPathUtil.GetCardIconPath(cardData.resources[cardData.resIndex]);
+            item.m_comCardMask.m_loaCard.asLoader.url =
+                ResPathUtil.GetCardIconPath(cardData.resources[cardData.resIndex]);
             item.m_txtLv.text = string.Format("{0}级", cardData.lv);
             // item.m_loaRarity.url = ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + cardData.itemCfg.rarity);
-            RarityIconController.UpdateRarityIcon(item.m_loaRarity, cardData.itemCfg.id, false);// ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + data.itemCfg.rarity);
+            RarityIconController.UpdateRarityIcon(item.m_loaRarity, cardData.itemCfg.id,
+                false); // ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + data.itemCfg.rarity);
             item.m_loaMainScore.url = ResPathUtil.GetCommonGameResPath("kp_sx_" + (cardData.itemCfg.mainScore));
             item.m_loaBorder.url = "ui://CommonGame/kp_kuang_" + cardData.itemCfg.rarity;
             // UI_ComStar comStar = UI_ComStar.Proxy(item.m_comStar);
@@ -165,15 +193,16 @@ namespace GFGGame
                 // _effects.Add(gameObject0);
                 // _wrappers.Add(wrapper0);
             }
+
             UI_ListCardItem.ProxyEnd();
             // UI_ComStar.ProxyEnd();
         }
+
         private void OnListCardItemClick(EventContext context)
         {
             UpdateView(_ui.m_listCard.selectedIndex);
 
             OnCardSelected(cardList[_ui.m_listCard.selectedIndex].id);
-
         }
 
         private void OnCardSelected(int cardId)
@@ -182,15 +211,19 @@ namespace GFGGame
             {
                 ArenaDataManager dataManager = ArenaDataManager.Instance;
                 dataManager.DressupList[dataManager.SelectThemeIndex].cardId = cardId;
-                dataManager.SetMineFightAttr(dataManager.DressupList[dataManager.SelectThemeIndex], dataManager.SelectThemeIndex);
+                dataManager.SetMineFightAttr(dataManager.DressupList[dataManager.SelectThemeIndex],
+                    dataManager.SelectThemeIndex);
                 EventAgent.DispatchEvent(ConstMessage.CARD_SELECTED);
             }
         }
+
         private void OnBtnUpCardClikc()
         {
-            ViewManager.Show<CardFosterView>(cardList[_ui.m_listCard.selectedIndex], new object[] { typeof(StoryCardChoose).FullName, _scoreType });
+            ViewManager.Show<CardFosterView>(cardList[_ui.m_listCard.selectedIndex],
+                new object[] { typeof(StoryCardChoose).FullName, _scoreType });
             this.Hide();
         }
+
         private void OnBtnComfirmClick()
         {
             int cardId = cardList[_ui.m_listCard.selectedIndex].id;
@@ -198,7 +231,8 @@ namespace GFGGame
             if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
             {
                 ArenaDataManager dataManager = ArenaDataManager.Instance;
-                ArenaSproxy.ReqChangeArenaDressup(dataManager.SelectThemeIndex, cardId, MyDressUpHelper.dressUpObj.itemList).Coroutine();
+                ArenaSproxy.ReqChangeArenaDressup(dataManager.SelectThemeIndex, cardId,
+                    MyDressUpHelper.dressUpObj.itemList).Coroutine();
                 if (InstanceZonesDataManager.FightScene == ConstInstanceZonesType.Arena)
                 {
                     ViewManager.GoBackFrom(typeof(ArenaDressUpFightView).FullName);
@@ -210,6 +244,7 @@ namespace GFGGame
                 InstanceZonesDataManager.currentCardId = cfgs.Count > 0 ? cardId : -1;
                 EventAgent.DispatchEvent(ConstMessage.CARD_CHOOSE);
             }
+
             this.Hide();
         }
 
@@ -219,14 +254,15 @@ namespace GFGGame
             OnCardSelected(_cardId);
             this.Hide();
         }
+
         protected override void OnHide()
         {
             base.OnHide();
             _skillId = 0;
             _ui.m_listCard.ScrollToView(0);
             Timers.inst.Remove(CheckGuide);
-
         }
+
         private void CheckGuide(object param)
         {
             if (GuideDataManager.IsGuideFinish(ConstGuideId.SKILL_CARD_FIGHT) <= 0)
@@ -238,11 +274,13 @@ namespace GFGGame
                 Timers.inst.Remove(CheckGuide);
             }
         }
+
         protected override void UpdateToCheckGuide(object param)
         {
             if (!ViewManager.CheckIsTopView(this.viewCom)) return;
 
-            GuideController.TryGuide(null, ConstGuideId.SKILL_CARD_FIGHT, 1, "词牌可以辅助战斗,增加过关概率哦。", -1, true, _ui.m_btnCancel.y + _ui.m_btnCancel.height);
+            GuideController.TryGuide(null, ConstGuideId.SKILL_CARD_FIGHT, 1, "词牌可以辅助战斗,增加过关概率哦。", -1, true,
+                _ui.m_btnCancel.y + _ui.m_btnCancel.height);
             GuideController.TryGuide(_ui.m_listCard, ConstGuideId.SKILL_CARD_FIGHT, 2, "选择一张合适的词牌,增加过关战斗力。", 0);
             GuideController.TryCompleteGuide(ConstGuideId.SKILL_CARD_FIGHT, 2);
         }