Browse Source

卡牌升星奖励

zhaoyang 2 years ago
parent
commit
eeccf0e4a0

+ 6 - 3
FGUIProject/assets/Card/components/ListCardStarRewardItem.xml

@@ -1,17 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <component size="910,180">
-  <controller name="c1" exported="true" pages="0,,1," selected="0"/>
+  <controller name="c1" exported="true" pages="0,,1,,2," selected="1"/>
   <displayList>
     <image id="n71_lc71" name="n71" src="f2bfa4" fileName="images/cpjl_kdikdi_2.png" xy="0,0"/>
     <text id="n67_lc71" name="txtTitle" xy="42,60" size="129,56" font="ui://eg2y0ldpwonotja" fontSize="42" color="#a38364" text="第一节"/>
     <component id="n69_lc71" name="btnGet" src="f2bftjz" fileName="components/Button23.xml" pkg="mk0fwx0x" xy="625,48">
-      <gearDisplay controller="c1" pages="0"/>
+      <gearDisplay controller="c1" pages="0,1"/>
       <Button title="领取"/>
     </component>
     <component id="n74_f2bf" name="btnGot" src="f2bftk0" fileName="components/Button24.xml" pkg="mk0fwx0x" xy="625,49">
-      <gearDisplay controller="c1" pages="1"/>
+      <gearDisplay controller="c1" pages="2"/>
       <Button title="已领取"/>
     </component>
     <component id="n73_f2bf" name="comItem" src="j48o98" fileName="components/ComItem.xml" pkg="eg2y0ldp" xy="380,-26" pivot="0.5,0.5" size="222,223" scale="0.65,0.65"/>
+    <component id="n75_psph" name="n75" src="hspqf4" fileName="components/ComRedDot.xml" pkg="eg2y0ldp" xy="844,44">
+      <gearDisplay controller="c1" pages="1"/>
+    </component>
   </displayList>
 </component>

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs

@@ -29,6 +29,7 @@ namespace GFGGame
         public const string CARD_REFRESH = "CARD_REFRESH";
         public const string CARD_FILTER = "CARD_FILTER";
         public const string CARD_INFO = "CARD_INFO";
+        public const string CARD_STAR_REWARD = "CARD_STAR_REWARD";
 
         public const string PLAT_CARDFOSTER_T1 = "PLAT_CARDFOSTER_T0";
         public const string CLOSE_PHOTOGRAPHVIEW = "CLOSE_PHOTOGRAPHVIEW";

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Data/CardDataManager.cs

@@ -48,6 +48,10 @@ namespace GFGGame
             cardData.star = cardInfoProto.Star;
             cardData.itemCfg = itemCfg;
             cardData.resIndex = cardInfoProto.ResIndex >= cardData.resources.Count ? 0 : cardInfoProto.ResIndex;
+            for (int i = 0; i < cardInfoProto.KsStarBonus.Count; i++)
+            {
+                cardData.starRewardsState[cardInfoProto.KsStarBonus[i]] = cardInfoProto.VsStarBonus[i];
+            }
             cardData.scores = new Dictionary<int, int>();
 
             for (int j = 0; j < cardInfoProto.KsAttribute.Count; j++)

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

@@ -266,6 +266,17 @@ namespace GFGGame
             int costNeed = skillLvlCfg.costNum;
             return itemHas >= itemNeed && costHas >= costNeed;
         }
+        //卡牌-卡牌升星奖励状态
+        public bool GetCardStarReward(int cardId)
+        {
+            CardData cardData = CardDataManager.GetCardDataById(cardId);
+            foreach (int value in cardData.starRewardsState.Values)
+            {
+                if (value == ConstBonusStatus.CAN_GET) return true;
+            }
+            return false;
+
+        }
 
         /// <summary>
         /// 服装养护红点

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/CardData.cs

@@ -12,6 +12,7 @@ namespace GFGGame
         public int mainScore;
         public List<string> resources;//所有配置卡面
         public Dictionary<int, int> scores;
+        public Dictionary<int, int> starRewardsState = new Dictionary<int, int>();//升星奖励领取状态,只记录可领和已领
         public ItemCfg itemCfg;
     }
 }

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

@@ -70,6 +70,10 @@ namespace GFGGame
                     {
                         cardData.scores[response.KsAttribute[i]] = response.VsAttribute[i];
                     }
+                    for (int i = 0; i < response.KsStarBonus.Count; i++)
+                    {
+                        cardData.starRewardsState[response.KsStarBonus[i]] = response.VsStarBonus[i];
+                    }
                     return true;
                 }
             }
@@ -106,5 +110,24 @@ namespace GFGGame
             }
             return false;
         }
+
+        public static async ETTask<bool> GetCardStarBonus(int cardId, int starLv)
+        {
+            S2C_GetCardStarBonus response = null;
+            response = (S2C_GetCardStarBonus)await MessageHelper.SendToServer(new C2S_GetCardStarBonus() { CardId = cardId, CardStar = starLv });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    CardData cardData = CardDataManager.GetCardDataById(response.CardId);
+                    cardData.starRewardsState[response.CardStar] = response.BonusStatus;
+                    int[][] rewards = CardStarCfgArray.Instance.GetCfgBycardIdAndstarLvl(response.CardId, response.CardStar).rewardsArr;
+                    BonusController.TryShowBonusList(rewards);
+                    EventAgent.DispatchEvent(ConstMessage.CARD_STAR_REWARD);
+                    return true;
+                }
+            }
+            return false;
+        }
     }
 }

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

@@ -105,7 +105,7 @@ namespace GFGGame
             listItem.m_loaBorder.url = "ui://Card/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),"",10,-4);
+            RedDotController.Instance.SetComRedDot(listItem.target, RedDotDataManager.Instance.GetCardSkillsRed(data.id) || RedDotDataManager.Instance.GetCardStarReward(data.id), "", 10, -4);
 
             UI_ComStar comStar = UI_ComStar.Proxy(listItem.m_comStar);
             comStar.m_c1.selectedIndex = data.star;

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

@@ -128,6 +128,7 @@ namespace GFGGame
             this.UpdateUpLvView();
             this.UpdateUpStarView();
             this.UpdateUpSkillView();
+            this.UpdateRedDot();
             _comFosterBottom.m_ctrlTab.selectedIndex = this._selectTab;
             RedDotController.Instance.SetComRedDot(_ui.m_ComFosterBottom.m_btnSkill, RedDotDataManager.Instance.GetCardSkillsRed(_cardData.id));
 
@@ -138,6 +139,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);
 
         }
         private void ClearItemsCountList()
@@ -670,7 +672,7 @@ namespace GFGGame
                 // this._selectTab = _comFosterBottom.m_ctrlTab.selectedIndex;
                 ViewManager.Show(ViewName.CARD_UP_VIEW, new object[] { _cardData.scores, "star", _cardData.star - 1, _cardData.star }, new object[] { ViewName.CARD_FOSTER_VIEW, _cardData });
                 LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.CI_PAI, 2);
-
+                UpdateRedDot();
             }
         }
         /***********************************************************升技能***************************************************/
@@ -847,6 +849,10 @@ namespace GFGGame
             ViewManager.GoBackFrom(ViewName.CARD_FOSTER_VIEW);
             this._selectTab = 0;
         }
+        private void UpdateRedDot()
+        {
+            RedDotController.Instance.SetComRedDot(_ui.m_ComFosterTop.m_btnStarReward, RedDotDataManager.Instance.GetCardStarReward(_cardData.id));
+        }
         protected override void OnHide()
         {
             base.OnHide();
@@ -865,6 +871,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);
         }
 
         private void CheckGuide(object param)

+ 27 - 9
GameClient/Assets/Game/HotUpdate/Views/Card/CardStarRewardView.cs

@@ -31,16 +31,35 @@ namespace GFGGame
 
             _ui.m_listReward.itemRenderer = RenderListStarRewardItem;
         }
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.CARD_STAR_REWARD, UpdateView);
+        }
         protected override void OnShown()
         {
             base.OnShown();
             _viewData = this.viewData as CardData;
+            UpdateView();
+        }
+        protected override void OnHide()
+        {
+            base.OnHide();
+        }
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.CARD_STAR_REWARD, UpdateView);
+        }
+        private void UpdateView()
+        {
             _ui.m_listReward.numItems = CardStarCfgArray.Instance.GetCfgsBycardId(_viewData.itemCfg.id).Count;
+
         }
         private void RenderListStarRewardItem(int index, GObject obj)
         {
             UI_ListCardStarRewardItem item = UI_ListCardStarRewardItem.Proxy(obj);
-            CardStarCfg cardStoryCfg = CardStarCfgArray.Instance.GetCfgsBycardId(_viewData.itemCfg.id)[index];
+            CardStarCfg cardStarCfg = CardStarCfgArray.Instance.GetCfgsBycardId(_viewData.itemCfg.id)[index];
             if (index == 0)
             {
                 item.m_txtTitle.text = "激活词牌";
@@ -49,14 +68,16 @@ namespace GFGGame
             {
                 item.m_txtTitle.text = string.Format("词牌星级达到{0}星", NumberUtil.GetChiniseNumberText(index + 1));
             }
-            RedDotController.Instance.SetComRedDot(item.m_btnGet, true);
+            // RedDotController.Instance.SetComRedDot(item.m_btnGet, true);
+            int star = index + 1;
+            item.m_c1.selectedIndex = _viewData.starRewardsState.ContainsKey(star) ? _viewData.starRewardsState[star] : 0;
             if (item.m_btnGet.data == null)
             {
                 item.m_btnGet.onClick.Add(OnClickBtnGet);
             }
-            item.m_btnGet.data = index;
+            item.m_btnGet.data = index + 1;
 
-            ItemData reward = ItemUtil.createItemData(cardStoryCfg.rewardsArr[0]);
+            ItemData reward = ItemUtil.createItemData(cardStarCfg.rewardsArr[0]);
             if (item.m_comItem.data == null)
             {
                 item.m_comItem.data = new ItemView(item.m_comItem);
@@ -71,11 +92,8 @@ namespace GFGGame
         {
             GObject obj = context.sender as GObject;
             int index = (int)obj.data;
-
-        }
-        protected override void OnHide()
-        {
-            base.OnHide();
+            CardSProxy.GetCardStarBonus(_viewData.id, index).Coroutine();
         }
+
     }
 }

BIN
GameClient/Assets/ResIn/UI/Card/Card_fui.bytes