浏览代码

随机掉落奖励

zhaoyang 3 年之前
父节点
当前提交
a5e769f678

+ 1 - 1
FGUIProject/assets/Main/componentsLevel/CompChapter20001.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <component size="1200,2600" scroll="both">
   <displayList>
-    <loader id="n37_fz8v" name="loaBg" xy="600,1300" pivot="0.5,0.5" anchor="true" size="1200,2600" fill="scaleMatchWidth">
+    <loader id="n38_xv4o" name="loaBg" xy="600,1300" pivot="0.5,0.5" anchor="true" size="1200,2600" fill="scaleMatchWidth">
       <relation target="" sidePair="width-width,height-height,center-center,middle-middle"/>
     </loader>
     <component id="n31_oq7r" name="g1" src="xuzk2d" fileName="componentsLevel/CompStoryLevelItem.xml" xy="509,1972"/>

+ 50 - 13
GameClient/Assets/Game/HotUpdate/Data/Cache/DropOutDataCache.cs

@@ -26,10 +26,10 @@ namespace GFGGame
         {
             List<ItemData> result = new List<ItemData>();
             int tryCount = 0;
-            while(result.Count < count && tryCount < 1000)
+            while (result.Count < count && tryCount < 1000)
             {
                 ItemData itemData = GetDropItemData(dropId, true);
-                if(itemData != null)
+                if (itemData != null)
                 {
                     result.Add(itemData);
                 }
@@ -42,17 +42,17 @@ namespace GFGGame
         {
             ItemData itemData = null;
             List<DropOutData> dropOutDatas = null;
-            if(!_probDic.ContainsKey(dropId))
+            if (!_probDic.ContainsKey(dropId))
             {
                 InitData(dropId);
             }
             dropOutDatas = _probDic[dropId];
-            if(dropOutDatas != null)
+            if (dropOutDatas != null)
             {
                 float result = Random.Range(0, 1f);
-                foreach(DropOutData dropOutData in dropOutDatas)
+                foreach (DropOutData dropOutData in dropOutDatas)
                 {
-                    if(result <= dropOutData.WeightEnd || !doRandome)
+                    if (result <= dropOutData.WeightEnd || !doRandome)
                     {
                         return GetItemData(dropOutData.dropOutCfg, doRandome);
                     }
@@ -68,35 +68,35 @@ namespace GFGGame
             var arr = DropOutCfgArray.Instance.GetCfgs(dropId);
             List<DropOutCfg> cfgs = new List<DropOutCfg>(arr);
             float totalWeight = 0;
-            foreach(DropOutCfg cfg in cfgs)
+            foreach (DropOutCfg cfg in cfgs)
             {
                 totalWeight += cfg.weight;
             }
             float weightEnd = 0;
-            foreach(DropOutCfg cfg in cfgs)
+            foreach (DropOutCfg cfg in cfgs)
             {
                 DropOutData dropOutData = new DropOutData();
                 dropOutData.dropOutCfg = cfg;
                 weightEnd += cfg.weight;
-                dropOutData.WeightEnd = weightEnd/totalWeight;
+                dropOutData.WeightEnd = weightEnd / totalWeight;
                 dropOutDatas.Add(dropOutData);
             }
         }
 
         private static ItemData GetItemData(DropOutCfg dropOutCfg, bool doRandomeNum)
         {
-            if(dropOutCfg.item >= 10000000)//掉落id
+            if (dropOutCfg.item >= 10000000)//掉落id
             {
                 return GetDropItemData(dropOutCfg.item, doRandomeNum);
             }
-            else if(dropOutCfg.item > 0)
+            else if (dropOutCfg.item > 0)
             {
                 int num = dropOutCfg.maxNum;
-                if(doRandomeNum)
+                if (doRandomeNum)
                 {
                     num = Random.Range(dropOutCfg.minNum, dropOutCfg.maxNum + 1);
                 }
-                if(num > 0)
+                if (num > 0)
                 {
                     ItemData itemData = ItemDataPool.GetItemData(dropOutCfg.item);
                     itemData.num = num;
@@ -105,5 +105,42 @@ namespace GFGGame
             }
             return null;
         }
+
+        public static List<ItemData> GetDropItemDatas1(int[] dropIds, bool doRandome)
+        {
+            List<ItemData> result = new List<ItemData>();
+            foreach (int dropId in dropIds)
+            {
+                GetDropItemDatas(dropId, result);
+
+            }
+            return result;
+        }
+
+        public static List<ItemData> GetDropItemDatas(int dropId, List<ItemData> result)
+        {
+
+            List<DropOutCfg> dropOutCfgs = DropOutCfgArray.Instance.GetCfgs(dropId);
+
+            for (int i = 0; i < dropOutCfgs.Count; i++)
+            {
+
+                List<DropOutCfg> _dropOutCfgs = DropOutCfgArray.Instance.GetCfgs(dropOutCfgs[i].item);
+                if (_dropOutCfgs.Count > 0)
+                {
+
+                    GetDropItemDatas(dropOutCfgs[i].item, result);
+                }
+                else
+                {
+                    ItemData itemData = ItemUtil.createItemData(dropOutCfgs[i].item, dropOutCfgs[i].maxNum);// GetDropItemData(dropId, doRandome);
+                    if (dropOutCfgs[i].item > 0 && itemData != null)
+                    {
+                        result.Add(itemData);
+                    }
+                }
+            }
+            return result;
+        }
     }
 }

+ 4 - 4
GameClient/Assets/Game/HotUpdate/Data/Cache/StoryBonusDataCache.cs

@@ -24,9 +24,9 @@ namespace GFGGame
                     {
                         StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(levelID);
                         StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
-                        if(fightCfg != null)
+                        if (fightCfg != null)
                         {
-                            List<ItemData> randomList = DropOutDataCache.GetDropItemDatas(fightCfg.bonusRandomArr, true);
+                            List<ItemData> randomList = DropOutDataCache.GetDropItemDatas1(fightCfg.bonusRandomArr, true);
                             bonusList.AddRange(randomList);
                         }
                     }
@@ -40,7 +40,7 @@ namespace GFGGame
             {
                 bonusList.AddRange(bonusData.bonusBase);
             }
-            
+
             return bonusList;
         }
 
@@ -83,7 +83,7 @@ namespace GFGGame
                 {
                     StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
                     bonusData.bonusBase = ItemUtil.CreateItemDataList(fightCfg.bonusBaseArr);
-                    bonusData.bonusRandom = DropOutDataCache.GetDropItemDatas(fightCfg.bonusRandomArr, false);
+                    bonusData.bonusRandom = DropOutDataCache.GetDropItemDatas1(fightCfg.bonusRandomArr, false);
                 }
             }
             else

+ 8 - 2
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightTargetScoreView.cs

@@ -367,14 +367,20 @@ namespace GFGGame
             _ui.m_comMineCircle.m_t0.Play(CircleScoreEnd);
             _ui.m_comMineCircle.m_t1.ignoreEngineTimeScale = false;
             _ui.m_comMineCircle.m_t1.timeScale = _speed;
-            _ui.m_comMineCircle.m_t1.Play(() => { PlayScoreTWEffect(_ui.m_holderPartScore, _ui.m_comMineCircle.target.position, _ui.m_proScore.target.position); });
+            _ui.m_comMineCircle.m_t1.Play(() =>
+            {
+                PlayScoreTWEffect(_ui.m_holderPartScore, _ui.m_comMineCircle.target.position, _ui.m_proScore.target.position);
+            });
 
             _ui.m_comTargetCircle.m_t0.ignoreEngineTimeScale = false;
             _ui.m_comTargetCircle.m_t0.timeScale = _speed;
             _ui.m_comTargetCircle.m_t0.Play();
             _ui.m_comTargetCircle.m_t1.ignoreEngineTimeScale = false;
             _ui.m_comTargetCircle.m_t1.timeScale = _speed;
-            _ui.m_comTargetCircle.m_t1.Play(() => { PlayScoreTWEffect(_ui.m_holderPartScoreNpc, _ui.m_comTargetCircle.target.position, _ui.m_proScore.target.position + new Vector3(_ui.m_proScore.target.width, 0, 0)); });
+            _ui.m_comTargetCircle.m_t1.Play(() =>
+            {
+                PlayScoreTWEffect(_ui.m_holderPartScoreNpc, _ui.m_comTargetCircle.target.position, _ui.m_proScore.target.position + new Vector3(_ui.m_proScore.target.width, 0, 0));
+            });
         }
         private void PlayScoreTWEffect(GGraph holderScore, Vector3 startValue, Vector3 endValue)
         {

二进制
GameClient/Assets/ResIn/UI/Main/Main_fui.bytes