Kaynağa Gözat

开发装备

lcn 4 ay önce
ebeveyn
işleme
015f1189af

+ 3 - 3
Assets/Scripts/GameData/ExcelConfig/LevelBattleConfig.cs

@@ -65,13 +65,13 @@ public int bossExpAndGold;
 		/// <summary>
 		///打死小怪可以获得的奖励
 		/// </summary>
-public int[] miniMonsterItem;
+public string[] miniMonsterItem;
 
 
 		/// <summary>
 		///杀死精英怪可以获得的奖励
 		/// </summary>
-public int[] eliteMonsterItem;
+public string[] eliteMonsterItem;
 
 
 		/// <summary>
@@ -101,7 +101,7 @@ public int bossMonsterId;
 		/// <summary>
 		///打死boss可以获得的奖励
 		/// </summary>
-public int[] bossItem;
+public string[] bossItem;
 
 
 		/// <summary>

+ 33 - 1
Assets/Scripts/GameLogic/Bag/BagController.cs

@@ -128,13 +128,42 @@ namespace GameLogic.Bag
             return AddItem(item, count);
         }
 
+        /// <summary>
+        /// 添加装备道具
+        /// </summary>
+        /// <param name="item"></param>
+        public void AddEquipmentItem(ItemInfo item)
+        {
+            ItemInfo eqItemInfo = GetItemInfoWithGuid(item);
+            AddItem(eqItemInfo, item.count.Value);
+        }
+        
+        public ItemInfo GetItemInfoWithGuid(ItemInfo itemInfo)
+        {
+            for (int i = 0; i < m_bagList.Count; i++)
+            {
+                ItemInfo item = m_bagList[i];
+                if (item.guid == itemInfo.guid)
+                {
+                    return item;
+                }
+            }
+
+            if (!string.IsNullOrEmpty(itemInfo.guid))
+            {
+                m_bagList.Add(itemInfo);
+            }
+            return itemInfo;
+        }
+        
+        
         /// <summary>
         /// 添加道具,最后都走这里
         /// </summary>
         /// <param name="item"></param>
         /// <param name="count"></param>
         /// <returns></returns>
-        public bool AddItem(ItemInfo item, long count)
+        private bool AddItem(ItemInfo item, long count)
         {
             if (item.config.ID <= 0)
             {
@@ -179,6 +208,9 @@ namespace GameLogic.Bag
             return DeductItem(item, count);
         }
 
+        
+
+        
         public ItemInfo GetItemInfo(int itemId)
         {
             for (int i = 0; i < m_bagList.Count; i++)

+ 1 - 0
Assets/Scripts/GameLogic/Bag/ItemInfo.cs

@@ -8,6 +8,7 @@ namespace GameLogic.Bag
     public class ItemInfo
     {
         public int ID;
+        public string guid;
         public EncryptionLong count;
 
         public ItemConfig config;

+ 43 - 17
Assets/Scripts/GameLogic/Combat/CombatType/LevelBattleCombatType.cs

@@ -12,6 +12,7 @@ using GameLogic.Bag;
 using GameLogic.Combat.CombatTool;
 using GameLogic.CombatScenesTool;
 using GameLogic.Hero;
+using GameLogic.Player;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
 using UnityEngine;
 
@@ -74,6 +75,8 @@ namespace GameLogic.Combat.CombatType
 
         protected List<string> equipName = new List<string>()
         {
+            "fx_down_zb_blue",
+            "fx_down_zb_blue",
             "fx_down_zb_blue",
             "fx_down_zb_gold",
             "fx_down_zb_green",
@@ -90,6 +93,28 @@ namespace GameLogic.Combat.CombatType
             PlayBgm();
         }
 
+        /// <summary>
+        /// 掉落逻辑放这里
+        /// </summary>
+        private void EntityDropLogic(CombatHeroEntity combatHeroEntity)
+        {
+            List<ItemInfo> equipmentList = DropManager.Instance.
+                DropEquipment(_levelBattleConfig, combatHeroEntity.CurrCombatHeroInfo.heroType);
+
+            Combat_EquipFallEventData combatEquipFallEventData = Combat_EquipFallEventData.Create();
+            //allEquip存放特效标记
+            List<string> allEquip = new List<string>();
+            for (int i = 0; i < equipmentList.Count; i++)
+            {
+                ItemInfo eqItemInfo = equipmentList[i];
+                allEquip.Add(equipName[eqItemInfo.eqInfo.quality-1]);
+            }
+            combatEquipFallEventData.fallEquip = allEquip.ToArray();
+            combatEquipFallEventData.startPos_WorldPos = combatHeroEntity.combatHeroGameObject.position;
+            EventManager.Instance.Dispatch(CustomEventType.Combat_EquipFall, combatEquipFallEventData);
+            
+        }
+
         protected override void ProHeroDie(CombatHeroEntity combatHeroEntity, HarmReturnInfo harmReturnInfo)
         {
             if (harmReturnInfo.harmType == HarmType.SystemKo)
@@ -101,12 +126,13 @@ namespace GameLogic.Combat.CombatType
             {
                 if (!isBossCombat)
                 {
-                    // combatHeroEntity.CurrCombatHeroInfo.heroType
-                    // _levelBattleConfig.
+
+                    EntityDropLogic(combatHeroEntity);
                     MiniMonsterDie(combatHeroEntity);
                 }
                 else if (combatHeroEntity.CurrCombatHeroInfo.heroType == 4) ///boss死了
                 {
+                    EntityDropLogic(combatHeroEntity);
                     BossKo(combatHeroEntity);
                 }
             }
@@ -184,21 +210,21 @@ namespace GameLogic.Combat.CombatType
             combatItemShowEventData.addValue = _levelBattleConfig.miniExpAndGold[0];
             EventManager.Instance.Dispatch(CustomEventType.Combat_ItemShow, combatItemShowEventData);
 
-            //TODO 装备掉落后,飞特效得逻辑
-            List<string> allEquip = new List<string>();
-            for (int i = 0; i < 3; i++)
-            {
-                int odds = CombatCalculateTool.Instance.GetOdd();
-                if (odds < 20)
-                {
-                    allEquip.Add(equipName[CombatCalculateTool.Instance.GetOdd(0, equipName.Count)]);
-                }
-            }
-
-            Combat_EquipFallEventData combatEquipFallEventData = Combat_EquipFallEventData.Create();
-            combatEquipFallEventData.fallEquip = allEquip.ToArray();
-            combatEquipFallEventData.startPos_WorldPos = combatItemShowEventData.startPos_WorldPos;
-            EventManager.Instance.Dispatch(CustomEventType.Combat_EquipFall, combatEquipFallEventData);
+            // //TODO 装备掉落后,飞特效得逻辑
+            // List<string> allEquip = new List<string>();
+            // for (int i = 0; i < 3; i++)
+            // {
+            //     int odds = CombatCalculateTool.Instance.GetOdd();
+            //     if (odds < 20)
+            //     {
+            //         allEquip.Add(equipName[CombatCalculateTool.Instance.GetOdd(0, equipName.Count)]);
+            //     }
+            // }
+            //
+            // Combat_EquipFallEventData combatEquipFallEventData = Combat_EquipFallEventData.Create();
+            // combatEquipFallEventData.fallEquip = allEquip.ToArray();
+            // combatEquipFallEventData.startPos_WorldPos = combatItemShowEventData.startPos_WorldPos;
+            // EventManager.Instance.Dispatch(CustomEventType.Combat_EquipFall, combatEquipFallEventData);
 
             // ShowTextEventData showTextEventData = ShowTextEventData.Create();
             // showTextEventData.text = "+金币 20";

+ 11 - 11
Assets/Scripts/GameLogic/Equipment/EquipmentController.cs

@@ -43,9 +43,9 @@ namespace GameLogic.Equipment
         
         public ItemInfo BuildEquipment(int equipModelDropID, int qualityDropID, int lvDropID)
         {
-            ItemInfo info = new ItemInfo(0);
+            ItemInfo info = null;
             List<ItemInfo> equipModelDropItems = DropManager.Instance.DropItem(equipModelDropID);
-            if (equipModelDropItems.Count == 0)
+            if (equipModelDropItems == null || equipModelDropItems.Count == 0)
             {
                 return info;
             }
@@ -66,15 +66,15 @@ namespace GameLogic.Equipment
             return info;
         }
         
-        public EquipmentInfo BuildEquipment(ItemConfig itemConfig, int eLv, int quality)
-        {
-            EquipmentInfo info = new EquipmentInfo();
-
-            DropManager.Instance.DropItem(1004);
-            
-            info.InitEquipment(itemConfig, eLv, quality);
-            return info;
-        }
+        // public EquipmentInfo BuildEquipment(ItemConfig itemConfig, int eLv, int quality)
+        // {
+        //     EquipmentInfo info = new EquipmentInfo();
+        //
+        //     DropManager.Instance.DropItem(1004);
+        //     
+        //     info.InitEquipment(itemConfig, eLv, quality);
+        //     return info;
+        // }
         
         public void AddEquipment(EquipmentInfo eqInfo)
         {

+ 14 - 3
Assets/Scripts/GameLogic/Equipment/EquipmentInfo.cs

@@ -8,7 +8,11 @@ namespace GameLogic.Equipment
 {
     public class EquipmentInfo
     {
-        //装备ID+装等+Type+品质11011
+        /// <summary>
+        /// guid= itemID + eLv + quality
+        /// 这几个值一样,那装备的属性就一定相同
+        /// 后续要做特殊装备的话,在加新的字段,以及根据新资源,来组合新guid
+        /// </summary>
         public string guid;
         public HeroBasicEquipConfig basicEquipConfig;
         public ItemConfig itemConfig;
@@ -28,6 +32,8 @@ namespace GameLogic.Equipment
         private int m_Defense;
         private int m_HP;
 
+        private ItemInfo myItemInfo;
+
 
         public void InitEquipment(ItemInfo modelInfo, ItemInfo lvInfo, ItemInfo qualityInfo)
         {
@@ -44,6 +50,11 @@ namespace GameLogic.Equipment
                                   qualityInfo.dropItemConfig.dropItemType;
                 LogTool.Error(errorTip);
             }
+
+            myItemInfo = modelInfo;
+            InitEquipment(modelInfo.config, 
+                lvInfo.dropItemConfig.itemID[0], 
+                qualityInfo.dropItemConfig.itemID[0]);
         }
         
         public void InitEquipment(ItemConfig itemConfig, int eLv, int quality)
@@ -59,8 +70,8 @@ namespace GameLogic.Equipment
             level = eLv;
             
             basicEquipConfig = ConfigComponent.Instance.Get<HeroBasicEquipConfig>(equipmentConfigID);
-            guid = GlobalParam.GenerateGUID();
-
+            // guid = GlobalParam.GenerateGUID();
+            myItemInfo.guid = itemConfig.ID.ToString() + eLv + quality;
             CalAtt();
         }
 

+ 34 - 11
Assets/Scripts/GameLogic/Player/DropManager.cs

@@ -37,44 +37,67 @@ namespace GameLogic.Player
             }
         }
 
-        public ItemInfo DropEquipment(string dropStr)
+        public ItemInfo DropEquipment(string eqDropDataStr)
         {
-            string[] eqDrop = dropStr.Split(',');
+            string[] eqDropData = eqDropDataStr.Split(',');
 
-            if (eqDrop.Length != 3)
+            if (eqDropData.Length != 3)
             {
-                LogTool.Error("掉落格式错误:" + dropStr);
+                LogTool.Error("装备掉落格式错误:" + eqDropDataStr);
                 return null;
             }
 
             ItemInfo eqItemInfo = PlayerManager.Instance.eqController.BuildEquipment(
-                int.Parse(eqDrop[0]),
-                int.Parse(eqDrop[1]),
-                int.Parse(eqDrop[2]));
+                int.Parse(eqDropData[0]),
+                int.Parse(eqDropData[1]),
+                int.Parse(eqDropData[2]));
+
+            BagController.Instance.AddEquipmentItem(eqItemInfo);
 
             return eqItemInfo;
         }
 
+        /// <summary>
+        /// 关卡掉装备
+        /// 配的是一个string数组,每个string可以被分成3个掉落ID(装备模版、品质、等级)
+        /// </summary>
+        /// <param name="levelBattleConfig">关卡表</param>
+        /// <param name="monsterType">怪物类型</param>
+        /// <returns></returns>
         public List<ItemInfo> DropEquipment(LevelBattleConfig levelBattleConfig, int monsterType)
         {
             List<ItemInfo> equipmentList = new List<ItemInfo>();
+            ItemInfo itemInfo = null;
 
             if (monsterType == 1)
             {
-                foreach (int dropID in levelBattleConfig.miniMonsterItem)
+                foreach (string eqDropStr in levelBattleConfig.miniMonsterItem)
                 {
-                    // if(levelBattleConfig.min)
+                    itemInfo = DropEquipment(eqDropStr);
                 }
             } 
             else if (monsterType == 2)
             {
-                
+                foreach (string eqDropStr in levelBattleConfig.eliteMonsterItem)
+                {
+                    itemInfo = DropEquipment(eqDropStr);
+                }   
             } 
             else if (monsterType == 3)
             {
-                
+                foreach (string eqDropStr in levelBattleConfig.bossItem)
+                {
+                    itemInfo = DropEquipment(eqDropStr);
+                }
+            }
+
+            if (itemInfo != null && itemInfo.eqInfo != null)
+            {
+                equipmentList.Add(itemInfo);
             }
             
+            
+
             return equipmentList;
         }
 

+ 6 - 6
Assets/Scripts/GameUI/UI/Items/WidgetItem.cs

@@ -24,12 +24,12 @@ namespace Fort23.Mono
         public void InitWidget(ItemInfo itemInfo)
         {
             this.itemInfo = itemInfo;
-            if (itemInfo.config.itemTyp == 4)
-            {
-                itemInfo.eqInfo = PlayerManager.Instance.eqController
-                    .BuildEquipment(itemInfo.config, 1, 1);
-                //itemInfo.eqInfo.InitEquipment(itemInfo.config,1,1);
-            }
+            // if (itemInfo.config.itemTyp == 4)
+            // {
+            //     itemInfo.eqInfo = PlayerManager.Instance.eqController
+            //         .BuildEquipment(itemInfo.config, 1, 1);
+            //     //itemInfo.eqInfo.InitEquipment(itemInfo.config,1,1);
+            // }
         }
 
     }

BIN
Excel2Json/Excel/LevelBattle.xlsx