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