Browse Source

卡牌红点

zhaoyang 2 years ago
parent
commit
8a0ee15c46

+ 71 - 0
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -261,7 +261,78 @@ namespace GFGGame
         {
             return RoleInfoManager.Instance.newHeadBorderDatas.Count > 0;
         }
+        /// <summary>
+        /// 卡牌
+        /// </summary>
+        /// <returns></returns>
+        public bool GetCardRed()
+        {
+            if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(nameof(CardDetailView), false)) return false;
+            List<CardData> cardDatas = CardDataManager.GetCardListByRarity(0);
+            for (int i = 0; i < cardDatas.Count; i++)
+            {
+                if (GetCardRed(cardDatas[i].id)) return true;
+            }
+            return false;
+        }
+        /// <summary>
+        /// 卡牌
+        /// </summary>
+        /// <returns></returns>
+        public bool GetCardRed(int cardId)
+        {
+            return GetCardStarReward(cardId) || GetCardUpStarRed(cardId) || GetCardSkillsRed(cardId) || GetCardUpLvRed(cardId);
+        }
+
+        /// <summary>
+        /// 卡牌-升级红点
+        /// </summary>
+        /// <param name="cardId"></param>
+        /// <returns></returns>
+        public bool GetCardUpLvRed(int cardId)
+        {
+            CardData cardData = CardDataManager.GetCardDataById(cardId);
+            int maxLv = RoleLevelCfgArray.Instance.GetCfg(RoleDataManager.lvl).cardLeverLimit;
+            if (cardData.lv >= maxLv) return false;
+            if (cardData.lv == CardRarityCfgArray.Instance.GetCfg(cardData.itemCfg.rarity).maxCardLvl) return false;
+
+            int curExp = cardData.exp;
+            int needExp = CardLvlCfgArray.Instance.GetCfgByrarityAndcardLvl(cardData.itemCfg.rarity, cardData.lv).needExp;
+
+            int cardUpLvGoldsNeed = 0;
+            int[] materials = GlobalCfgArray.globalCfg.upgradeCardItemsArr;
+            for (int i = 0; i < materials.Length; i++)
+            {
+                int[] cardUpLvGolds = ItemCfgArray.Instance.GetCfg(materials[i]).cardUpLvGoldsArr[i];
+
+                for (int j = 0; j < ItemDataManager.GetItemNum(materials[i]); j++)
+                {
+                    cardUpLvGoldsNeed += cardUpLvGolds[1];
+                    curExp += ItemCfgArray.Instance.GetCfg(materials[i]).cardUpLvExp;
+                    if (curExp >= needExp && ItemDataManager.GetItemNum(cardUpLvGolds[0]) >= cardUpLvGoldsNeed) return true;
+                }
+            }
+            return false;
 
+        }
+        /// <summary>
+        /// 卡牌-升星红点
+        /// </summary>
+        /// <param name="cardId"></param>
+        /// <returns></returns>
+        public bool GetCardUpStarRed(int cardId)
+        {
+            CardData cardData = CardDataManager.GetCardDataById(cardId);
+            List<CardStarCfg> starCfgs = CardStarCfgArray.Instance.GetCfgsBycardId(cardId);
+            if (cardData.star >= starCfgs.Count) return false;
+            CardStarCfg starCfg = CardStarCfgArray.Instance.GetCfgBycardIdAndstarLvl(cardId, cardData.star);
+            if (ItemDataManager.GetItemNum(starCfg.costID) < starCfg.costNum) return false;
+            for (int i = 0; i < starCfg.materiarsArr.Length; i++)
+            {
+                if (ItemDataManager.GetItemNum(starCfg.materiarsArr[i][0]) < starCfg.materiarsArr[i][1]) return false;
+            }
+            return true;
+        }
         /// <summary>
         /// 卡牌-卡牌技能升级
         /// </summary>

+ 2 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/CardSProxy.cs

@@ -74,6 +74,7 @@ namespace GFGGame
                     {
                         cardData.starRewardsState[response.KsStarBonus[i]] = response.VsStarBonus[i];
                     }
+                    EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
                     return true;
                 }
             }
@@ -110,6 +111,7 @@ namespace GFGGame
                     int[][] rewards = CardStarCfgArray.Instance.GetCfgBycardIdAndstarLvl(response.CardId, response.CardStar).rewardsArr;
                     BonusController.TryShowBonusList(rewards);
                     EventAgent.DispatchEvent(ConstMessage.CARD_STAR_REWARD);
+                    EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
                     return true;
                 }
             }

+ 1 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/SkillSProxy.cs

@@ -47,6 +47,7 @@ namespace GFGGame
                 {
                     SkillDataManager.Instance.UpdateCardSkill(response.CardId, response.SkillId, response.SkillLvl);
                     EventAgent.DispatchEvent(ConstMessage.CARD_UP_SKILL);
+                    EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
                     return true;
                 }
             }

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

@@ -105,7 +105,7 @@ namespace GFGGame
             listItem.m_loaBorder.url = "ui://CommonGame/kp_kuang_" + data.itemCfg.rarity;//ResPathUtil.GetCommonGameResPath("kp_sxing_x_" + data.itemCfg.rarity);
             listItem.m_txtLv.text = data.lv + "级";
             listItem.m_txtName.text = data.itemCfg.name;
-            RedDotController.Instance.SetComRedDot(listItem.target, RedDotDataManager.Instance.GetCardSkillsRed(data.id) || RedDotDataManager.Instance.GetCardStarReward(data.id), "", 10, -4);
+            RedDotController.Instance.SetComRedDot(listItem.target, RedDotDataManager.Instance.GetCardRed(data.id), "", 10, -4);
 
             listItem.m_txtStarLv.text = data.star.ToString();
             //           UI_ComStar comStar = UI_ComStar.Proxy(listItem.m_comStar);

+ 19 - 7
GameClient/Assets/Game/HotUpdate/Views/Card/CardFosterView.cs

@@ -133,7 +133,6 @@ namespace GFGGame
             this.UpdateUpSkillView();
             this.UpdateRedDot();
             _comFosterBottom.m_ctrlTab.selectedIndex = this._selectTab;
-            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id));
 
             List<CardStarCfg> cardStarCfgs = CardStarCfgArray.Instance.GetCfgsBycardId(_cardData.id);
             for (int i = 0; i < cardStarCfgs.Count; i++)
@@ -151,7 +150,7 @@ namespace GFGGame
             base.AddEventListener();
             EventAgent.AddEventListener(ConstMessage.CARD_UP_SKILL, UpdateUpSkillView);
             EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateItemChange);
-            EventAgent.AddEventListener(ConstMessage.CARD_STAR_REWARD, UpdateRedDot);
+            EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDot);
 
         }
         private void ClearItemsCountList()
@@ -423,6 +422,7 @@ namespace GFGGame
                 }
                 return false;
             }
+
             if (IsUpLvLimit(itemId, false)) return false;
             itemsCount[index] = itemsCount[index] + 1;
             listItem.m_txtUseCount.text = itemsCount[index].ToString();
@@ -471,16 +471,19 @@ namespace GFGGame
         }
         private void OnClcikBtnAll()
         {
+            int cardUpLvGoldsNeed = 0;
             for (int i = 0; i < itemsCount.Count; i++)
             {
-                // if (IsUpLvLimit()) break;
+                int[] cardUpLvGolds = ItemCfgArray.Instance.GetCfg(upgradeCardItemsArr[i]).cardUpLvGoldsArr[_cardData.itemCfg.rarity - 1];
                 long itemNum = ItemDataManager.GetItemNum(upgradeCardItemsArr[i]);
                 for (long j = 0; j < itemNum; j++)
                 {
-                    if (this.OnClickBtnPlusLvConsume(_comFosterBottom.m_listLvConsume.GetChildAt(i), false) == false)
+
+                    if (ItemDataManager.GetItemNum(cardUpLvGolds[0]) < cardUpLvGoldsNeed + cardUpLvGolds[1] || this.OnClickBtnPlusLvConsume(_comFosterBottom.m_listLvConsume.GetChildAt(i), false) == false)
                     {
                         break;
                     }
+                    cardUpLvGoldsNeed += cardUpLvGolds[1];
                 }
             }
         }
@@ -651,10 +654,11 @@ namespace GFGGame
             // listItem.m_btnPlus.data = cardStarCfg.materiarsArr[index][0];
             listItem.target.data = cardStarCfg.materiarsArr[index][0];
 
+            _comFosterBottom.m_btnUpStar.data = hasCount >= needCount && ItemDataManager.GetItemNum(cardStarCfg.costID) >= cardStarCfg.costNum ? 1 : 0;
+
             if (hasCount < needCount)
             {
                 //材料不足显示加号
-                _comFosterBottom.m_btnUpStar.data = 1;
                 listItem.m_btnPlus.visible = true;
             }
         }
@@ -748,7 +752,7 @@ namespace GFGGame
 
         private void UpdateUpSkillView()
         {
-            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id));
+            // RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id));
             _comFosterBottom.m_listSkill.numItems = PassivitySkillCfgArray.Instance.GetCfgsBycardId(_cardData.id).Count;
             _comFosterBottom.m_listSkill.selectedIndex = 0;
             _comFosterBottom.m_ctrlSkillCount.selectedIndex = _comFosterBottom.m_listSkill.numItems;
@@ -909,6 +913,14 @@ namespace GFGGame
         private void UpdateRedDot()
         {
             RedDotController.Instance.SetComRedDot(_ui.m_ComFosterTop.m_btnStarReward, RedDotDataManager.Instance.GetCardStarReward(_cardData.id));
+
+            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnUpLv, RedDotDataManager.Instance.GetCardUpLvRed(_cardData.id), "", -74, 60);
+            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnUpStar, RedDotDataManager.Instance.GetCardUpStarRed(_cardData.id), "", -74, 60);
+
+            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnLv, RedDotDataManager.Instance.GetCardUpLvRed(_cardData.id), "", 0, 0);
+            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnStar, RedDotDataManager.Instance.GetCardUpStarRed(_cardData.id), "", 0, 0);
+            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id), "", 0, 0);
+
         }
         protected override void OnHide()
         {
@@ -929,7 +941,7 @@ namespace GFGGame
             // EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, OnItemChangeListener);
             EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateItemChange);
             EventAgent.RemoveEventListener(ConstMessage.CARD_UP_SKILL, UpdateUpSkillView);
-            EventAgent.RemoveEventListener(ConstMessage.CARD_STAR_REWARD, UpdateRedDot);
+            EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDot);
         }
 
         private void CheckGuide(object param)

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -1025,6 +1025,7 @@ namespace GFGGame
             RedDotController.Instance.SetComRedDot(_ui.m_btnActivityDay7.target, RedDotDataManager.Instance.GetActivityDay7Red());
 
             RedDotController.Instance.SetComRedDot(_ui.m_btnXiuFang.target, RedDotDataManager.Instance.GetClothingFosterRed() || RedDotDataManager.Instance.GetClothingSyntheticRed(), "", -10, 20);
+            RedDotController.Instance.SetComRedDot(_ui.m_btnCiPai.target, RedDotDataManager.Instance.GetCardRed(), "", -10, 20);
         }
 
         private void CheckGuide(object param)