Ver código fonte

Merge branch 'master' of http://192.168.123.2:3000/ck/XiuXianGame

# Conflicts:
#	Assets/Scripts/GameUI/UI/CombatPanel/CombatPanel.cs   resolved by origin/master(远端) version
lzx 3 semanas atrás
pai
commit
5b1329f73e
29 arquivos alterados com 878 adições e 519 exclusões
  1. 9 137
      Assets/Res/Config/DropConfig.json
  2. 48 35
      Assets/Res/Config/EventConditionConfig.json
  3. 4 0
      Assets/Res/Config/LanguageChineseConfig.json
  4. 4 4
      Assets/Scripts/Core/UI/Core/UIComponent.cs
  5. 15 3
      Assets/Scripts/Core/UI/Core/UIManager.cs
  6. 1 1
      Assets/Scripts/GameData/ExcelConfig/EventConditionConfig.cs
  7. 1 1
      Assets/Scripts/GameData/ExcelConfig/MonsterPowerUpConfig.cs
  8. 10 0
      Assets/Scripts/GameLogic/Combat/CombatState/CombatIdleState.cs
  9. 25 25
      Assets/Scripts/GameLogic/Combat/CombatState/CombatUpdateState.cs
  10. 14 1
      Assets/Scripts/GameLogic/Combat/CombatTool/CombatController.cs
  11. 14 2
      Assets/Scripts/GameLogic/Combat/CombatType/CombatTypeBasic.cs
  12. 130 109
      Assets/Scripts/GameLogic/Combat/CombatType/LevelBattleCombatType.cs
  13. 21 1
      Assets/Scripts/GameLogic/Combat/CombatType/TestCombatType.cs
  14. 1 1
      Assets/Scripts/GameLogic/Combat/Skill/S1201.cs
  15. 7 1
      Assets/Scripts/GameLogic/EventManager/DialogueManager.cs
  16. 1 0
      Assets/Scripts/GameLogic/EventManager/DialogueMono.cs
  17. 31 2
      Assets/Scripts/GameUI/Combat/CombatDrive.cs
  18. 11 6
      Assets/Scripts/GameUI/DialogueMono.cs
  19. 1 1
      Assets/Scripts/GameUI/GameApplction.cs
  20. 5 1
      Assets/Scripts/GameUI/UI/CombatPanel/BossHpWidget.cs
  21. 62 21
      Assets/Scripts/GameUI/UI/CombatPanel/CombatPanel.cs
  22. 9 0
      Assets/Scripts/GameUI/UI/CombatPanel/HeroHpWidget.cs
  23. 1 0
      Assets/Scripts/GameUI/UI/CombatPanel/ZhuanPanPanel.cs
  24. 7 1
      Assets/Scripts/GameUI/UI/MainPanel/MainPanel.cs
  25. BIN
      Excel2Json/Excel/AttributeConfig.xlsx
  26. BIN
      Excel2Json/Excel/ChouKa.xlsx
  27. BIN
      Excel2Json/Excel/EventConfig.xlsx
  28. BIN
      Excel2Json/Excel/Language.xlsx
  29. 446 166
      UserSettings/Layouts/default-2022.dwlt

+ 9 - 137
Assets/Res/Config/DropConfig.json

@@ -1,153 +1,25 @@
 {
   "configList": [
     {
-      "ID": 10001,
+      "ID": 1001,
       "dropGroupID": [
-        10001
+        1001
       ],
-      "dropType": 2
+      "dropType": 3
     },
     {
-      "ID": 10002,
+      "ID": 1002,
       "dropGroupID": [
-        10002
+        1002
       ],
-      "dropType": 2
+      "dropType": 3
     },
     {
-      "ID": 10003,
+      "ID": 1003,
       "dropGroupID": [
-        10003
+        1003
       ],
-      "dropType": 2
-    },
-    {
-      "ID": 10004,
-      "dropGroupID": [
-        40001
-      ],
-      "dropType": 1
-    },
-    {
-      "ID": 10005,
-      "dropGroupID": [
-        40002
-      ],
-      "dropType": 1
-    },
-    {
-      "ID": 10006,
-      "dropGroupID": [
-        40003
-      ],
-      "dropType": 1
-    },
-    {
-      "ID": 10007,
-      "dropGroupID": [
-        40004
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 10008,
-      "dropGroupID": [
-        40005
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 10009,
-      "dropGroupID": [
-        40019,
-        40020
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 10010,
-      "dropGroupID": [
-        40021,
-        40022
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 10011,
-      "dropGroupID": [
-        41001,
-        41002,
-        41003,
-        41004,
-        41005,
-        41006
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 10012,
-      "dropGroupID": [
-        41007,
-        41008,
-        41009,
-        41010,
-        41011,
-        41012
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 10013,
-      "dropGroupID": [
-        41013,
-        41014,
-        41015,
-        41016,
-        41017,
-        41018
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 10014,
-      "dropGroupID": [
-        42001,
-        42002,
-        42003,
-        42004,
-        42005
-      ],
-      "dropType": 2
-    },
-    {
-      "ID": 20001,
-      "dropGroupID": [
-        501004,
-        501005,
-        501006,
-        501007,
-        141008,
-        141009,
-        141010,
-        141011,
-        141012,
-        141013,
-        141014,
-        141015,
-        141016,
-        141017,
-        141018,
-        141019,
-        141020,
-        141021,
-        141022,
-        141023,
-        141024,
-        141025,
-        141026,
-        141027
-      ],
-      "dropType": 2
+      "dropType": 3
     }
   ]
 }

+ 48 - 35
Assets/Res/Config/EventConditionConfig.json

@@ -1,5 +1,13 @@
 {
   "configList": [
+    {
+      "ID": 100,
+      "LanID": [
+        216
+      ],
+      "ConditionType": null,
+      "optionType": null
+    },
     {
       "ID": 1001,
       "LanID": [
@@ -14,8 +22,7 @@
       "optionPara2": [
         198,
         199
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1002,
@@ -27,7 +34,10 @@
       "optionPara1": [
         100001
       ],
-      "ResultOptions": 1004
+      "ResultOptions": [
+        1004,
+        100
+      ]
     },
     {
       "ID": 1003,
@@ -41,8 +51,7 @@
       ],
       "optionPara2": [
         200
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1004,
@@ -56,8 +65,7 @@
       ],
       "PrizeNums": [
         100
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1005,
@@ -71,8 +79,7 @@
       ],
       "PrizeNums": [
         50
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1010,
@@ -88,8 +95,7 @@
       "optionPara2": [
         201,
         202
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1011,
@@ -105,8 +111,7 @@
       "optionPara2": [
         203,
         204
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1012,
@@ -121,8 +126,7 @@
       ],
       "PrizeNums": [
         10
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1014,
@@ -134,7 +138,10 @@
       "optionPara1": [
         100001
       ],
-      "ResultOptions": 1016
+      "ResultOptions": [
+        1016,
+        100
+      ]
     },
     {
       "ID": 1015,
@@ -149,8 +156,7 @@
       ],
       "PrizeNums": [
         1000
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1016,
@@ -164,8 +170,7 @@
       ],
       "PrizeNums": [
         200
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1020,
@@ -181,8 +186,7 @@
       "optionPara2": [
         201,
         202
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 1021,
@@ -200,7 +204,10 @@
       "PrizeNums": [
         10
       ],
-      "ResultOptions": 1026
+      "ResultOptions": [
+        1026,
+        100
+      ]
     },
     {
       "ID": 1022,
@@ -215,7 +222,9 @@
       "PrizeNums": [
         10
       ],
-      "ResultOptions": 1016
+      "ResultOptions": [
+        1016
+      ]
     },
     {
       "ID": 1024,
@@ -234,7 +243,10 @@
       "PrizeNums": [
         200
       ],
-      "ResultOptions": 1016
+      "ResultOptions": [
+        1016,
+        100
+      ]
     },
     {
       "ID": 1025,
@@ -250,7 +262,9 @@
       "PrizeNums": [
         1000
       ],
-      "ResultOptions": 1002
+      "ResultOptions": [
+        1002
+      ]
     },
     {
       "ID": 1026,
@@ -266,8 +280,7 @@
       "optionPara2": [
         205,
         206
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 10001,
@@ -279,7 +292,10 @@
       "optionPara1": [
         100003
       ],
-      "ResultOptions": 10002
+      "ResultOptions": [
+        10002,
+        100
+      ]
     },
     {
       "ID": 10002,
@@ -293,8 +309,7 @@
       ],
       "PrizeNums": [
         10
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 10003,
@@ -309,8 +324,7 @@
       ],
       "PrizeNums": [
         10
-      ],
-      "ResultOptions": null
+      ]
     },
     {
       "ID": 10004,
@@ -327,8 +341,7 @@
       ],
       "PrizeNums": [
         10
-      ],
-      "ResultOptions": null
+      ]
     }
   ]
 }

+ 4 - 0
Assets/Res/Config/LanguageChineseConfig.json

@@ -859,6 +859,10 @@
     {
       "ID": 215,
       "txt": "原本郁闷的心情,突然变的好了起来,哈哈~"
+    },
+    {
+      "ID": 216,
+      "txt": "你被怪物击败了,事件结束。"
     }
   ]
 }

+ 4 - 4
Assets/Scripts/Core/UI/Core/UIComponent.cs

@@ -41,7 +41,10 @@ namespace Fort23.Mono
         public virtual void ActiveObj()
         {
             _isActivePool = true;
-            own.SetActive(true);
+            if (own != null)
+            {
+                own.SetActive(true);
+            }
         }
 
         /// <summary>
@@ -136,8 +139,5 @@ namespace Fort23.Mono
         {
             _own = gameObject;
         }
-
-
-       
     }
 }

+ 15 - 3
Assets/Scripts/Core/UI/Core/UIManager.cs

@@ -245,7 +245,7 @@ namespace Fort23.Mono
                 UGUIIamgeTool.renderOrder = 0;
             }
 
-            if (Input.GetMouseButtonUp(0) && UILayers != null&&UICamera!=null)
+            if (Input.GetMouseButtonUp(0) && UILayers != null && UICamera != null)
             {
                 Vector3 pos = UICamera.ScreenToWorldPoint(Input.mousePosition);
                 GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_ui_click.prefab",
@@ -253,9 +253,9 @@ namespace Fort23.Mono
                     {
                         if (pool != null)
                         {
-                            Transform t=  UILayers[^1];
+                            Transform t = UILayers[^1];
                             pool.transform.SetParent(t);
-                            pool.transform.position = new Vector3(pos.x, pos.y,t.transform.position.z);
+                            pool.transform.position = new Vector3(pos.x, pos.y, t.transform.position.z);
                         }
                     });
             }
@@ -676,6 +676,7 @@ namespace Fort23.Mono
                 else
                 {
                     gameObjectPool = Activator.CreateInstance<T>();
+                    gameObjectPool.ActiveObj();
                     // UIEventMono uiEventMono = newObject.GetComponent<UIEventMono>();
                     // if (uiEventMono != null)
                     // {
@@ -767,6 +768,17 @@ namespace Fort23.Mono
 
         public void DormancyGComponent(IGObjectPoolInterface poolInterface)
         {
+            if (poolInterface == null)
+            {
+                return;
+            }
+
+            if (string.IsNullOrEmpty(poolInterface.poolObjName))
+            {
+                poolInterface.DormancyObj();
+                return;
+            }
+
             GObjectPool.Instance.Recycle(poolInterface);
         }
 

+ 1 - 1
Assets/Scripts/GameData/ExcelConfig/EventConditionConfig.cs

@@ -71,7 +71,7 @@ public int[] PrizeNums;
 		/// <summary>
 		///事件结局后提供的选项
 		/// </summary>
-public int ResultOptions;
+public int[] ResultOptions;
 
 
 	}

+ 1 - 1
Assets/Scripts/GameData/ExcelConfig/MonsterPowerUpConfig.cs

@@ -1,5 +1,5 @@
 // Auto Generated Code By excel2json
-// Generate From Excel\MonsterPowerUp.xlsx. SheetName: MonsterPowerUpConfig
+// Generate From Excel\HeroPowerUp.xlsx. SheetName: MonsterPowerUpConfig
 
 using System;
 using Fort23.GameData;

+ 10 - 0
Assets/Scripts/GameLogic/Combat/CombatState/CombatIdleState.cs

@@ -1,4 +1,5 @@
 using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
 
 namespace GameLogic.Combat.CombatState
 {
@@ -7,5 +8,14 @@ namespace GameLogic.Combat.CombatState
         public CombatIdleState(CombatController combatController) : base(combatController)
         {
         }
+
+        protected override void ProEnter()
+        {
+            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity;
+            if (playerHeroEntity != null)
+            {
+                playerHeroEntity.PlayAnim(CombatHeroStateType.idle, true, 0, false, 1);
+            }
+        }
     }
 }

+ 25 - 25
Assets/Scripts/GameLogic/Combat/CombatState/CombatUpdateState.cs

@@ -9,15 +9,15 @@ namespace GameLogic.Combat.CombatState
 {
     public class CombatUpdateState : CombatStateBasic
     {
-        /// <summary>
-        /// 下次遇见怪的时间
-        /// </summary>
-        private float _nextMonsterTime;
-
-        /// <summary>
-        /// 是否没有敌人
-        /// </summary>
-        protected bool isNullMonster;
+        // /// <summary>
+        // /// 下次遇见怪的时间
+        // /// </summary>
+        // private float _nextMonsterTime;
+        //
+        // /// <summary>
+        // /// 是否没有敌人
+        // /// </summary>
+        // protected bool isNullMonster;
 
         public CombatUpdateState(CombatController combatController) : base(combatController)
         {
@@ -38,8 +38,8 @@ namespace GameLogic.Combat.CombatState
                     new TriggerData());
             }
 
-            _nextMonsterTime = Random.Range(5, 10);
-            isNullMonster = true;
+            // _nextMonsterTime = Random.Range(5, 10);
+            // isNullMonster = true;
             CombatController.MagicWeaponCombatSence.CloseSecene();
         }
 
@@ -51,20 +51,20 @@ namespace GameLogic.Combat.CombatState
                 return;
             }
 
-            if (isNullMonster)
-            {
-                _nextMonsterTime -= t;
-
-                if (_nextMonsterTime < 0)
-                {
-                    isNullMonster = false;
-                    TestCombatType testCombatType = CombatController.currActiveCombat.CombatTypeBasic as TestCombatType;
-                    if (testCombatType != null)
-                    {
-                        testCombatType.CreateEnemy(new CTaskAwaitBuffer());
-                    }
-                }
-            }
+            // if (isNullMonster)
+            // {
+            //     _nextMonsterTime -= t;
+            //
+            //     if (_nextMonsterTime < 0)
+            //     {
+            //         isNullMonster = false;
+            //         TestCombatType testCombatType = CombatController.currActiveCombat.CombatTypeBasic as TestCombatType;
+            //         if (testCombatType != null)
+            //         {
+            //             testCombatType.CreateEnemy(new CTaskAwaitBuffer());
+            //         }
+            //     }
+            // }
 
 
             CombatHeroEntity[] allHero =

+ 14 - 1
Assets/Scripts/GameLogic/Combat/CombatTool/CombatController.cs

@@ -4,6 +4,7 @@ using Common.Utility.CombatTimer;
 using Core.Audio;
 using Core.Event.Event;
 using Core.State;
+using Excel2Json;
 using Fort23.Core;
 using GameLogic.Combat.CombatGuide;
 using GameLogic.Combat.CombatState;
@@ -19,6 +20,10 @@ namespace GameLogic.Combat.CombatTool
 {
     public class CombatController : ITimeLineAudio, IDisposable
     {
+        public static string idle = "idle";
+        public static string update = "update";
+        public static string fight = "fight";
+
         public static CombatController currActiveCombat;
         public CombatHeroController CombatHeroController;
         public CombatCameraControllder CombatCameraControllder;
@@ -30,7 +35,7 @@ namespace GameLogic.Combat.CombatTool
         public GameTimeLineParticleFactory GameTimeLineParticleFactory;
         public MagicWeaponCombatSence MagicWeaponCombatSence;
         public RandomEventController RandomEventController;
-        
+
         public bool isUpdate;
 
         /// <summary>
@@ -45,6 +50,8 @@ namespace GameLogic.Combat.CombatTool
         public bool IsGameOver;
         public bool IsFightState;
 
+        public System.Action<bool> combatFinish;
+
         public CombatStateBasic CurrState
         {
             get { return stateControl.CurrIState as CombatStateBasic; }
@@ -92,6 +99,7 @@ namespace GameLogic.Combat.CombatTool
             CombatEventManager.Instance.Dispatch(CombatEventType.GameStart, null);
         }
 
+
         private void RefreshFull(IEventData eventData)
         {
             RefreshFullEventData data = (RefreshFullEventData)eventData;
@@ -138,6 +146,11 @@ namespace GameLogic.Combat.CombatTool
             return await AudioManager.Instance.PlayAudio(audioName, isLoop);
         }
 
+        public void GameOver(bool isWin)
+        {
+            combatFinish?.Invoke(isWin);
+        }
+
         public void Dispose()
         {
             TimeLineSingletonEventManager.Instance.RemoveTimeLineBasic(this);

+ 14 - 2
Assets/Scripts/GameLogic/Combat/CombatType/CombatTypeBasic.cs

@@ -9,6 +9,7 @@ using UnityEngine;
 #if UNITY_WEIXINMINIGAME
 using WeChatWASM;
 #endif
+
 namespace GameLogic.Combat.CombatType
 {
     public class CombatTypeBasic : IDisposable
@@ -22,7 +23,7 @@ namespace GameLogic.Combat.CombatType
 
         protected CombatController combatController;
         protected int _currIndex = 0;
- 
+
 
         public IHero currBannerHero;
         public bool isActiveCombat = false;
@@ -52,7 +53,6 @@ namespace GameLogic.Combat.CombatType
         {
         }
 
-  
 
         private void OnTriggerEnterEvent(Collider collider)
         {
@@ -78,6 +78,18 @@ namespace GameLogic.Combat.CombatType
             await ProStartGame();
         }
 
+        /// <summary>
+        /// 开始战斗
+        /// </summary>
+        public async CTask StartCombat()
+        {
+            ProStartCombat();
+        }
+
+        protected async CTask ProStartCombat()
+        {
+        }
+
         public void Dispose()
         {
             CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroDie, HeroDieEventData);

+ 130 - 109
Assets/Scripts/GameLogic/Combat/CombatType/LevelBattleCombatType.cs

@@ -4,6 +4,7 @@ using CombatLibrary.CombatLibrary.CombatCore;
 using Common.Utility.CombatEvent;
 using Common.Utility.CombatTimer;
 using Core.Audio;
+using Core.Utility;
 using Excel2Json;
 using Fort23.Core;
 using Fort23.Mono;
@@ -21,114 +22,134 @@ namespace GameLogic.Combat.CombatType
 {
     public class LevelBattleCombatType : CombatTypeBasic
     {
-       
-
-
-        //
-        //
-        // protected override void ProHeroDie(CombatHeroEntity combatHeroEntity, HarmReturnInfo harmReturnInfo)
-        // {
-        //
-        // }
-        //
-        //
-        // private void PlayBgm()
-        // {
-        //     AudioManager.Instance.PlayBGM("combatBattle.wav");
-        // }
-        //
-        // private void ResurrectionFinish()
-        // {
-        //   
-        // }
-        //
-        //
-        //
-        //
-        //
-        //
-        // protected override async CTask ProStartGame()
-        // {
-        //     CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
-        //     // TestCombat(cTaskAwaitBuffer);
-        //     InitPlayerHero(cTaskAwaitBuffer);
-        //     InitTestCombatBoChi();
-        //     CreateEnemy(cTaskAwaitBuffer);
-        //     await cTaskAwaitBuffer.WaitAll();
-        //     CombatController.currActiveCombat.CombatHeroController.SetFollowTarget();
-        // }
-        //
-        //
-        //
-        //
-        // public void StartBossCombat()
-        // {
-        //
-        // }
-        //
-        // public void StartBossBattle()
-        // {
-        //     CombatController.currActiveCombat.isStopAi = false;
-        // }
-        //
-        //
-        // protected void InitTestCombatBoChi()
-        // {
-        //
-        // }
-        //
-        //
-        // private void CreateEnemy(CTaskAwaitBuffer cTaskAwaitBuffer)
-        // {
-        //
-        // }
-        //
-        // private void CreateEnemy(CTaskAwaitBuffer cTaskAwaitBuffer, int monsterId, int level, int star, int index,
-        //     Vector3 pos,
-        //     System.Action<CombatHeroEntity> callBack = null)
-        // {
-        //     CombatHeroEntity heroEntity = CObjectPool.Instance.Fetch<CombatHeroEntity>();
-        //     heroEntity.IsEnemy = true;
-        //     CombatHeroInfo combatHeroInfo = new CombatHeroInfo();
-        //     combatHeroInfo.InitMonster(monsterId, level, star);
-        //
-        //     cTaskAwaitBuffer.AddTask(heroEntity.Init(new CombatAIBasic(), combatHeroInfo, pos,
-        //         delegate(CombatHeroEntity entity)
-        //         {
-        //             combatController.CombatHeroController.AddHero(entity);
-        //             callBack?.Invoke(entity);
-        //         }));
-        // }
-        //
-        //
-        //
-        // protected override void ProUpdate(float t)
-        // {
-        //
-        // }
-        //
-        //
-        // private void InitPlayerHero(CTaskAwaitBuffer cTaskAwaitBuffer)
-        // {
-        //     // int i = 0;
-        //     // foreach (KeyValuePair<int, HeroInfo> keyValuePair in PlayerManager.Instance.heroController.heroDicInLead)
-        //     // {
-        //     //     int index = i;
-        //     //     CombatHeroEntity heroEntity = CObjectPool.Instance.Fetch<CombatHeroEntity>();
-        //     //     heroEntity.IsEnemy = false;
-        //     //     heroEntity.number = i;
-        //     //     Vector3 pos = _combatScenesConfig.heroPoint[index].position;
-        //     //     cTaskAwaitBuffer.AddTask(heroEntity.Init(new CombatAIBasic(), keyValuePair.Value, pos,
-        //     //         delegate(CombatHeroEntity entity) { combatController.CombatHeroController.AddHero(entity); }));
-        //     //
-        //     //     i++;
-        //     // }
-        //     //
-        //     // Vector3 p = _combatScenesConfig.heroPoint[0].position;
-        //     // combatController.CombatCameraControllder.root.position = new Vector3(p.x,
-        //     //     combatController.CombatCameraControllder.root.position.y, p.z + 13);
-        // }
-
-       
+        private float _currTime;
+
+        private int _currBoChi;
+
+
+        protected Vector3[] enemyHeroPosOff =
+        {
+            new Vector3(0, 0, 0),
+            new Vector3(2, 0, -2),
+            new Vector3(-2, 0, -2)
+        };
+
+        protected override void ProInit()
+        {
+        }
+
+        protected override void ProHeroDie(CombatHeroEntity combatHeroEntity, HarmReturnInfo harmReturnInfo)
+        {
+            CombatHeroEntity[] allHero = combatController.CombatHeroController.GetHero(true);
+            if (allHero==null||allHero.Length <= 0)
+            {
+                //胜利
+                CombatController.currActiveCombat.GameOver(true);
+                return;
+            }
+
+            allHero = combatController.CombatHeroController.GetHero(false);
+            if (allHero==null||allHero.Length <= 0)
+            {
+                //失败
+                CombatController.currActiveCombat.GameOver(false);
+                return;
+            }
+        }
+
+
+        protected override async CTask ProStartGame()
+        {
+            CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
+            TestCombat(cTaskAwaitBuffer);
+
+            await cTaskAwaitBuffer.WaitAll();
+            CombatController.currActiveCombat.CombatHeroController.SetFollowTarget();
+        }
+
+
+        public async CTask LoadCombat(int levelBattleId, System.Action<bool> caombatFinish)
+        {
+            LevelbattleConfig levelbattleConfig = ConfigComponent.Instance.Get<LevelbattleConfig>(levelBattleId);
+            CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
+            for (int i = 0; i < levelbattleConfig.Group.Length; i++)
+            {
+                int group = levelbattleConfig.Group[i];
+                GroupConfig groupConfig = ConfigComponent.Instance.Get<GroupConfig>(group);
+                int[] monster = groupConfig.GroupMonster;
+                int level = groupConfig.GroupMonsterLevel;
+                if (level < 0)
+                {
+                    level = PlayerManager.Instance.myHero.level.Value;
+                }
+
+                for (int j = 0; j < monster.Length; j++)
+                {
+                    HeroInfo heroInfo = new HeroInfo();
+                    heroInfo.InitMonster(monster[j],level);
+                    CreateEnemy(cTaskAwaitBuffer, heroInfo, j);
+                }
+            }
+
+            await cTaskAwaitBuffer.WaitAll();
+            cTaskAwaitBuffer.Dispose();
+        }
+
+        public void CreateEnemy(CTaskAwaitBuffer cTaskAwaitBuffer, HeroInfo heroInfo, int index)
+        {
+            // return;
+            _currBoChi += 1;
+            float d = CombatController.currActiveCombat.CombatSenceController.currTime + 0.4f;
+            Vector3 startPos =
+                CombatController.currActiveCombat.CombatSenceController.GetTarget(d) + new Vector3(0, 1, 0);
+            Vector3 startPos2 =
+                CombatController.currActiveCombat.CombatSenceController.GetTarget(d + 0.01f) + new Vector3(0, 1, 0);
+            Vector3 dir = startPos2 - startPos;
+            Quaternion quaternion = Quaternion.LookRotation(dir);
+
+
+            CombatHeroEntity heroEntity = new CombatHeroEntity();
+            heroEntity.IsEnemy = true;
+            Vector3 pos = startPos + quaternion * enemyHeroPosOff[index];
+            cTaskAwaitBuffer.AddTask(heroEntity.Init(new CombatHeroAi(), heroInfo, pos,
+                delegate(CombatHeroEntity entity) { combatController.CombatHeroController.AddHero(entity); }));
+        }
+
+        protected override void ProUpdate(float t)
+        {
+            if (!isActiveCombat)
+            {
+                return;
+            }
+        }
+
+        private void TestCombat(CTaskAwaitBuffer cTaskAwaitBuffer)
+        {
+            Vector3 heroPoint = CombatController.currActiveCombat.CombatSenceController.GetTarget(0);
+            CombatController.currActiveCombat.MagicWeaponCombatSence.SetMagicWeaponCombatSence(heroPoint,
+                Vector3.forward);
+            TestCombatHeroConfig testCombatHeroConfig = GameObject.FindObjectOfType<TestCombatHeroConfig>();
+            if (testCombatHeroConfig != null)
+            {
+                TestCombatHeroConfig.TestHeroInfoConfig testHeroInfoConfig = testCombatHeroConfig.myHeroInfo[0];
+                PlayerManager.Instance.AddTestHeroInfo(testHeroInfoConfig.heroID, testHeroInfoConfig.level,
+                    testHeroInfoConfig.skill, testHeroInfoConfig.magicWeaponId);
+
+
+                CombatHeroEntity heroEntity = new CombatHeroEntity();
+                CombatController.currActiveCombat.CombatHeroController.playerHeroEntity = heroEntity;
+                heroEntity.IsEnemy = false;
+                heroEntity.number = 0;
+
+                Vector3 pos = heroPoint;
+                cTaskAwaitBuffer.AddTask(heroEntity.Init(new CombatHeroAi(), PlayerManager.Instance.myHero, pos,
+                    delegate(CombatHeroEntity entity)
+                    {
+                        entity.CurrCombatHeroInfo.hp = (EncryptionLong)(20000);
+                        entity.MaxCombatHeroInfo.hp = (EncryptionLong)(20000);
+                        combatController.CombatHeroController.AddHero(entity);
+                    }, isPlayer: true));
+            }
+        }
     }
 }

+ 21 - 1
Assets/Scripts/GameLogic/Combat/CombatType/TestCombatType.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using Common.Utility.CombatEvent;
 using Core.Utility;
+using Excel2Json;
 using Fort23.Core;
 using Fort23.UTool;
 using GameLogic.Combat.CombatTool;
@@ -69,6 +70,25 @@ namespace GameLogic.Combat.CombatType
             currEnemyIndex++;
         }
 
+        public async CTask LoadCombat(int levelBattleId)
+        {
+            LevelbattleConfig levelbattleConfig = ConfigComponent.Instance.Get<LevelbattleConfig>(levelBattleId);
+            CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
+            for (int i = 0; i < levelbattleConfig.Group.Length; i++)
+            {
+                int group = levelbattleConfig.Group[i];
+                GroupConfig groupConfig = ConfigComponent.Instance.Get<GroupConfig>(group);
+                int[] monster = groupConfig.GroupMonster;
+                for (int j = 0; j < monster.Length; j++)
+                {
+                    
+                }
+            }
+
+            await cTaskAwaitBuffer.WaitAll();
+            cTaskAwaitBuffer.Dispose();
+        }
+
         public void CreateEnemy(CTaskAwaitBuffer cTaskAwaitBuffer)
         {
             // return;
@@ -77,7 +97,7 @@ namespace GameLogic.Combat.CombatType
             Vector3 startPos =
                 CombatController.currActiveCombat.CombatSenceController.GetTarget(d) + new Vector3(0, 1, 0);
             Vector3 startPos2 =
-                CombatController.currActiveCombat.CombatSenceController.GetTarget(d+0.01f) + new Vector3(0, 1, 0);
+                CombatController.currActiveCombat.CombatSenceController.GetTarget(d + 0.01f) + new Vector3(0, 1, 0);
             Vector3 dir = startPos2 - startPos;
             Quaternion quaternion = Quaternion.LookRotation(dir);
             for (int i = 0; i < enemyHeroInfo.Count; i++)

+ 1 - 1
Assets/Scripts/GameLogic/Combat/Skill/S1201.cs

@@ -28,7 +28,7 @@ namespace GameLogic.Combat.Skill
 
         protected void FaShe()
         {
-            if (currCount > 3||CombatHeroEntity==null||CombatHeroEntity.CombatAIBasic==null)
+            if (currCount > 3||CombatHeroEntity==null||CombatHeroEntity.CombatAIBasic==null||CombatHeroEntity.CombatAIBasic.currFocusTarget==null)
             {
                 return;
             }

+ 7 - 1
Assets/Scripts/GameLogic/EventManager/DialogueManager.cs

@@ -56,7 +56,8 @@ public class DialogueManager : Singleton<DialogueManager>
         //挂机事件 弹出简单气泡对话
         if (eventConfig.EventTriggerType != 2)
         {
-            dialogue.OpenDialoguePanel(dialogueConfig.ID, null, ShowDialogueEventData.MessageShowType.Verbatim, FishDialogue);
+            dialogue.OpenDialoguePanel(dialogueConfig.ID, null, ShowDialogueEventData.MessageShowType.Verbatim,
+                FishDialogue);
         }
         else
         {
@@ -102,6 +103,11 @@ public class DialogueManager : Singleton<DialogueManager>
             //进入战斗
             case 2:
                 LogTool.Log("对话结束,进入战斗");
+                dialogue.StartCombat(dialogueConfig.optionPara1[0],
+                    delegate(bool isWin)
+                    {
+                        LogTool.Log("战斗完成" + isWin);
+                    });
                 break;
             //获得奖励
             case 3:

+ 1 - 0
Assets/Scripts/GameLogic/EventManager/DialogueMono.cs

@@ -12,4 +12,5 @@ public interface IDialogueMono
     CTask OpenRewardsPanel(List<ItemInfo> rewardsDic, Action onClose = null, int titleId = 0);
 
     CTask OpenDialoguePanel(int id, Action<int?> finish);
+    void StartCombat(int levelBattle,System.Action<bool> finishCombat);
 }

+ 31 - 2
Assets/Scripts/GameUI/Combat/CombatDrive.cs

@@ -17,6 +17,8 @@ namespace GameLogic.Combat
 
         private CombatMonoBaisc combatMonoBaisc;
 
+        private System.Action<bool> caombatFinish;
+
         public async CTask Init()
         {
             string name = "CombatRoot.prefab";
@@ -37,19 +39,46 @@ namespace GameLogic.Combat
             CombatEquipFallManager.Instance.Dispose();
             CombatEquipFallManager.Instance.Init();
             CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
-            CombatPanel.OpenCombatPanel(cTaskAwaitBuffer);
+            // CombatPanel.OpenCombatPanel(cTaskAwaitBuffer);
             CombatShowTextPanel.OpenCombatShowTextPanel(cTaskAwaitBuffer);
 
             cTaskAwaitBuffer.AddTask(combatMonoBaisc.Init(CombatController));
             await cTaskAwaitBuffer.WaitAll();
             await CombatHPPanel.OpenCombatHPPanel();
-         
+
 
             LogTool.Log("战斗逻辑自己写");
             await CombatController.InitCombat(startCombatInfo);
             StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
         }
 
+        public async CTask LoadLevelBattleCombat(int levelBattleId, System.Action<bool> caombatFinish)
+        {
+            this.caombatFinish = caombatFinish;
+            CombatController.ChangeState(CombatController.idle);
+            LevelBattleCombatType levelBattleCombatType = CombatController.CombatTypeBasic as LevelBattleCombatType;
+            if (levelBattleCombatType != null)
+            {
+                CombatController.combatFinish = CombatFinish;
+                await levelBattleCombatType.LoadCombat(levelBattleId, caombatFinish);
+            }
+
+            await CombatPanel.OpenCombatPanel();
+            ///播放动画
+            MainPanel mainPanel = UIManager.Instance.GetComponent<MainPanel>();
+            mainPanel.transform.gameObject.SetActive(false);
+            CombatController.ChangeState(CombatController.update);
+        }
+
+        protected void CombatFinish(bool isWin)
+        {
+            caombatFinish?.Invoke(isWin);
+            ///播放动画
+            MainPanel mainPanel = UIManager.Instance.GetComponent<MainPanel>();
+            mainPanel.transform.gameObject.SetActive(true);
+            UIManager.Instance.HideUIUIPanel<CombatPanel>();
+        }
+
         public void Update()
         {
             float t = Time.deltaTime;

+ 11 - 6
Assets/Scripts/GameUI/DialogueMono.cs

@@ -4,29 +4,34 @@ using Common.Utility.CombatEvent;
 using Fort23.Core;
 using Fort23.Mono;
 using GameLogic.Bag;
+using GameLogic.Combat;
 
 namespace GameUI
 {
     public class DialogueMono : IDialogueMono
     {
-        public void OpenDialoguePanel(int id, string[] icon, ShowDialogueEventData.MessageShowType messageShowType, Action<int?> finish)
+        public void OpenDialoguePanel(int id, string[] icon, ShowDialogueEventData.MessageShowType messageShowType,
+            Action<int?> finish)
         {
-            DialoguePanel.OpenDialoguePanel(id, icon,messageShowType,finish);
+            DialoguePanel.OpenDialoguePanel(id, icon, messageShowType, finish);
         }
 
         public async CTask OpenRewardsPanel(List<ItemInfo> rewardsDic, Action onClose = null, int titleId = 0)
         {
             CTask cTask = CTask.Create();
-            RewardsPanel rewardsPanel = await RewardsPanel.OpenPanel(rewardsDic,onClose,titleId);
+            RewardsPanel rewardsPanel = await RewardsPanel.OpenPanel(rewardsDic, onClose, titleId);
             await rewardsPanel.UIClosed();
             cTask.SetResult();
         }
 
-        public async CTask OpenDialoguePanel(int id,  Action<int?> finish)
+        public async CTask OpenDialoguePanel(int id, Action<int?> finish)
         {
-           await DialogueBubblePanel.OpenDialoguePanel(id, finish);
+            await DialogueBubblePanel.OpenDialoguePanel(id, finish);
         }
 
-     
+        public void StartCombat(int levelBattle, Action<bool> finishCombat)
+        {
+            CombatDrive.Instance.LoadLevelBattleCombat(levelBattle, finishCombat);
+        }
     }
 }

+ 1 - 1
Assets/Scripts/GameUI/GameApplction.cs

@@ -124,7 +124,7 @@ public class GameApplction : IGameStart
         TestCombatHeroConfig testCombatHeroConfig = GameObject.FindObjectOfType<TestCombatHeroConfig>();
         if (testCombatHeroConfig != null)
         {
-            startCombatInfo.CombatType = CombatType.TestCombat;
+            startCombatInfo.CombatType = CombatType.LevelBattle;
         }
 #endif
 

+ 5 - 1
Assets/Scripts/GameUI/UI/CombatPanel/BossHpWidget.cs

@@ -17,6 +17,7 @@ namespace Fort23.Mono
 
         protected BetterList<gf_widget> currShowGfWidget = new BetterList<gf_widget>();
 
+        private HeroHpWidget heroHpWidget;
         private void Init()
         {
         }
@@ -29,6 +30,9 @@ namespace Fort23.Mono
         public override void DelEvent()
         {
             CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill);
+            UIManager.Instance.DormancyGComponent(heroHpWidget);
+            heroHpWidget = null;
+            UIManager.Instance.DormancyAllGComponent<gf_widget>("bossWidget");
         }
 
         public override void AddButtonEvent()
@@ -112,7 +116,7 @@ namespace Fort23.Mono
             this.combatHeroEntity = combatHeroEntity;
             combatHeroSkillControl =
                 combatHeroEntity.CombatHeroSkillControl as CombatHeroSkillControl;
-            HeroHpWidget heroHpWidget =
+             heroHpWidget =
                 await UIManager.Instance.CreateGComponentForObject<HeroHpWidget>(HeroHpWidget, null);
             heroHpWidget.size = 250;
             heroHpWidget.shieldSize = 100;

+ 62 - 21
Assets/Scripts/GameUI/UI/CombatPanel/CombatPanel.cs

@@ -14,10 +14,12 @@ namespace Fort23.Mono
     public partial class CombatPanel : UIPanel
     {
         private ZhuanPanPanel zhuanPanLogic;
+        private HeroHpWidget playerHeroHpWidget;
 
-        public static void OpenCombatPanel(CTaskAwaitBuffer cTaskAwaitBuffer)
+        public static async CTask OpenCombatPanel()
         {
-            cTaskAwaitBuffer.AddTask(UIManager.Instance.LoadAndOpenPanel<CombatPanel>(null, UILayer.Middle));
+            CombatPanel combatPanel = await UIManager.Instance.LoadAndOpenPanel<CombatPanel>(null, UILayer.Middle);
+            await combatPanel.ShowPanel();
         }
 
         protected override async CTask ProOpen()
@@ -31,10 +33,19 @@ namespace Fort23.Mono
         {
         }
 
+        public override void Hide()
+        {
+            base.Hide();
+            UIManager.Instance.DormancyGComponent(zhuanPanLogic);
+            zhuanPanLogic = null;
+            UIManager.Instance.DormancyAllGComponent<BossHpWidget>();
+            UIManager.Instance.DormancyGComponent(playerHeroHpWidget);
+            playerHeroHpWidget = null;
+        }
+
         protected override void AddEvent()
         {
-          
-            CombatEventManager.Instance.AddEventListener(CombatEventType.GameStart, GameStart);
+            CombatEventManager.Instance.AddEventListener(CombatEventType.AddRandomEvent, AddRandomEventEventData);
             CombatEventManager.Instance.AddEventListener(CombatEventType.AddMagicWeaponHeroEntity,
                 AddMagicWeaponHeroEntity);
             CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
@@ -43,6 +54,16 @@ namespace Fort23.Mono
             CameraSelect.value = 0.7f;
         }
 
+        protected override void DelEvent()
+        {
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddRandomEvent, AddRandomEventEventData);
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddMagicWeaponHeroEntity,
+                AddMagicWeaponHeroEntity);
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
+
+            StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
+        }
+
         private async void AddUseGongFa(IEventData ieveData)
         {
             AddUseGongFaEventData eventData = ieveData as AddUseGongFaEventData;
@@ -71,16 +92,25 @@ namespace Fort23.Mono
             // shengShiEventWidget.InitShengShiEventWidget(configId);
         }
 
-  
+        private async void AddRandomEventEventData(IEventData ieveData)
+        {
+            AddRandomEventEventData eventData = ieveData as AddRandomEventEventData;
+            int configId = eventData.randomEventID;
+            ShengShiEventWidget shengShiEventWidget =
+                await UIManager.Instance.CreateGComponentForObject<ShengShiEventWidget>(ShengShiEventWidget, null,
+                    DynamicEvent,
+                    isInstance: true);
+            shengShiEventWidget.InitShengShiEventWidget(configId);
+        }
 
-        private async void GameStart(IEventData ieveData)
+        public async CTask ShowPanel()
         {
-            HeroHpWidget heroHpWidget =
+            playerHeroHpWidget =
                 await UIManager.Instance.CreateGComponentForObject<HeroHpWidget>(PlayerHpWidget, null);
-            heroHpWidget.size = 250;
-            heroHpWidget.shieldSize = 100;
-            heroHpWidget.isFollowTarget = false;
-            heroHpWidget.Init(CombatController.currActiveCombat.CombatHeroController.playerHeroEntity);
+            playerHeroHpWidget.size = 250;
+            playerHeroHpWidget.shieldSize = 100;
+            playerHeroHpWidget.isFollowTarget = false;
+            playerHeroHpWidget.Init(CombatController.currActiveCombat.CombatHeroController.playerHeroEntity);
 
             CombatHeroEntity[] allEnemy = CombatController.currActiveCombat.CombatHeroController.GetHero(true);
             for (int i = 0; i < allEnemy.Length; i++)
@@ -93,18 +123,10 @@ namespace Fort23.Mono
             }
         }
 
-        protected override void DelEvent()
-        {
-          
-            CombatEventManager.Instance.RemoveEventListener(CombatEventType.GameStart, GameStart);
-            CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddMagicWeaponHeroEntity,
-                AddMagicWeaponHeroEntity);
-            StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
-        }
 
         public override void AddButtonEvent()
         {
-        
+            bnt_shengShi.onClick.AddListener(Bnt_shengShi_onClick);
             CameraSelect.onValueChanged.AddListener(CameraSelect_onValueChanged);
             AutoUse.onValueChanged.AddListener((x) =>
             {
@@ -114,7 +136,26 @@ namespace Fort23.Mono
         }
 
 
-
+        private async void Bnt_shengShi_onClick()
+        {
+            UIManager.Instance.DormancyAllGComponent<ShengShiEventWidget>();
+            CombatController.currActiveCombat.CombatSenceController.StartPayShengShi(CombatController.currActiveCombat
+                .CombatHeroController.playerHeroEntity.GameObject.transform);
+            List<EventConfig> eventConfigs = EventSystemManager.Instance.UseDivinesense(1);
+            if (eventConfigs == null || eventConfigs.Count == 0)
+                return;
+            for (var i = 0; i < eventConfigs.Count; i++)
+            {
+                ShengShiEventWidget shengShiEventWidget =
+                    await UIManager.Instance.CreateGComponentForObject<ShengShiEventWidget>(ShengShiEventWidget, null,
+                        DynamicEvent,
+                        isInstance: true);
+                shengShiEventWidget.InitShengShiEventWidget(eventConfigs[i].ID);
+            }
+            //
+            // CombatController.currActiveCombat.RandomEventController.StartRandomEvent(CombatController.currActiveCombat
+            //     .CombatHeroController.playerHeroEntity.GameObject.transform);
+        }
 
         private void CameraSelect_onValueChanged(float value)
         {

+ 9 - 0
Assets/Scripts/GameUI/UI/CombatPanel/HeroHpWidget.cs

@@ -90,6 +90,11 @@ namespace Fort23.Mono
             HeroHpUpdateEventData heroHpUpdateEventData = iEventData as HeroHpUpdateEventData;
             if (heroHpUpdateEventData.combatHeroEntity == combatHeroEntity)
             {
+                if (string.IsNullOrEmpty(poolObjName))
+                {
+                    return;
+                }
+
                 GObjectPool.Instance.Recycle(this);
             }
         }
@@ -99,6 +104,10 @@ namespace Fort23.Mono
             HeroDieEventData heroHpUpdateEventData = iEventData as HeroDieEventData;
             if (heroHpUpdateEventData.combatHeroEntity == combatHeroEntity && combatHeroEntity.IsEnemy)
             {
+                if (string.IsNullOrEmpty(poolObjName))
+                {
+                    return;
+                }
                 GObjectPool.Instance.Recycle(this);
             }
         }

+ 1 - 0
Assets/Scripts/GameUI/UI/CombatPanel/ZhuanPanPanel.cs

@@ -37,6 +37,7 @@ namespace Fort23.Mono
                 widget.transform.anchoredPosition = new Vector2((float)x, (float)y);
                 widget.ShowWidget(index);
             }
+            ExercisesAlter(null);
         }
 
         private void Init()

+ 7 - 1
Assets/Scripts/GameUI/UI/MainPanel/MainPanel.cs

@@ -1,6 +1,8 @@
 using System.Collections.Generic;
 using Excel2Json;
 using Fort23.Core;
+using Fort23.UTool;
+using GameLogic.Combat;
 using GameLogic.Combat.CombatTool;
 using UnityEngine;
 
@@ -87,7 +89,11 @@ namespace Fort23.Mono
         {
             if (Input.GetKeyDown(KeyCode.Y))
             {
-                EventSystemManager.Instance.DetectRandomEvents();
+                // EventSystemManager.Instance.DetectRandomEvents();
+                CombatDrive.Instance.LoadLevelBattleCombat(100001, delegate(bool isWin)
+                {
+                    LogTool.Log("战斗完成"+isWin);
+                });
             }
         }
 

BIN
Excel2Json/Excel/AttributeConfig.xlsx


BIN
Excel2Json/Excel/ChouKa.xlsx


BIN
Excel2Json/Excel/EventConfig.xlsx


BIN
Excel2Json/Excel/Language.xlsx


Diferenças do arquivo suprimidas por serem muito extensas
+ 446 - 166
UserSettings/Layouts/default-2022.dwlt


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff