From 09674e08265da8e4e6154979b698a4754b1e05a3 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期五, 19 四月 2019 21:35:03 +0800
Subject: [PATCH] 382 前端战斗AI流程控制逻辑

---
 Fight/Actor/AI/Process/ProcessManager.cs.cs |   27 ++++++++++++++++++++++-----
 1 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/Fight/Actor/AI/Process/ProcessManager.cs.cs b/Fight/Actor/AI/Process/ProcessManager.cs.cs
index 6c64506..b050199 100644
--- a/Fight/Actor/AI/Process/ProcessManager.cs.cs
+++ b/Fight/Actor/AI/Process/ProcessManager.cs.cs
@@ -5,13 +5,14 @@
 using UnityEditor;
 #endif
 
-public class ProcessManager : Singleton<ProcessManager>
+public class ProcessManager
 {
     private const string SoProcessNode_Suffix = "SoProcessNode_";
 
     private Queue<ProcessNode> m_NodeQueue = new Queue<ProcessNode>();
+    private ProcessNode m_Current;
 
-    public void Load(int npcID)
+    public void Load(GA_NpcClientFightNorm npc)
     {
         m_NodeQueue.Clear();
 
@@ -22,7 +23,7 @@
             string _resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
                                                          "Refdata/ScriptableObject/SoProcessNode/",
                                                          SoProcessNode_Suffix,
-                                                         npcID,
+                                                         npc.NpcConfig.NPCID,
                                                          ".asset");
 
             _config = AssetDatabase.LoadAssetAtPath<SoProcessNode>(_resourcePath);
@@ -30,7 +31,7 @@
         }
         else
         {
-            string _assetName = StringUtility.Contact(SoProcessNode_Suffix, npcID);
+            string _assetName = StringUtility.Contact(SoProcessNode_Suffix, npc.NpcConfig.NPCID);
             AssetInfo _assetInfo = new AssetInfo(ScriptableObjectLoader.bundleName, _assetName);
 
             _config = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as SoProcessNode;
@@ -38,7 +39,6 @@
 
         if (_config == null)
         {
-            Debug.LogErrorFormat("ProcessManager.Load() => 鍔犺浇涓嶅埌璧勬簮: {0}.", npcID);
             return;
         }
 
@@ -47,24 +47,34 @@
             switch (_node.nodeType)
             {
                 case ProcessNode.E_ProcessType.AttackCount:
+                    m_NodeQueue.Enqueue(new PN_AttackCount(npc, _node.param));
                     break;
                 case ProcessNode.E_ProcessType.AutoAI:
+                    m_NodeQueue.Enqueue(new PN_AutoAI());
                     break;
                 case ProcessNode.E_ProcessType.BeAttackCount:
+                    m_NodeQueue.Enqueue(new PN_BeAttackCount(npc, _node.param));
                     break;
                 case ProcessNode.E_ProcessType.CastSkill:
+                    m_NodeQueue.Enqueue(new PN_CastSkill(npc, _node.param));
                     break;
                 case ProcessNode.E_ProcessType.CommonAttack:
+                    m_NodeQueue.Enqueue(new PN_CommonAttack(npc));
                     break;
                 case ProcessNode.E_ProcessType.Die:
+                    m_NodeQueue.Enqueue(new PN_Die(npc));
                     break;
                 case ProcessNode.E_ProcessType.HpPer:
+                    m_NodeQueue.Enqueue(new PN_HpPer(npc, _node.param));
                     break;
                 case ProcessNode.E_ProcessType.LockHp:
+                    m_NodeQueue.Enqueue(new PN_LockHp(npc, _node.param));
                     break;
                 case ProcessNode.E_ProcessType.OpenDialog:
+                    m_NodeQueue.Enqueue(new PN_OpenDialog(npc, _node.param));
                     break;
                 case ProcessNode.E_ProcessType.ShowMotion:
+                    m_NodeQueue.Enqueue(new PN_ShowMotion(npc, _node.param));
                     break;
             }
         }
@@ -78,10 +88,17 @@
         }
 
         var _node = m_NodeQueue.Peek();
+
+        if (m_Current != _node)
+        {
+            _node.Init();
+            m_Current = _node;
+        }
         _node.Update();
 
         if (_node.IsOver())
         {
+            _node.UnInit();
             m_NodeQueue.Dequeue();
         }
     }

--
Gitblit v1.8.0