From 252d46b8642ad4ecebe1a8b9d3a0678913413ebf Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期三, 14 十一月 2018 15:30:58 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 Fight/GameActor/GA_Guard.cs |  202 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 148 insertions(+), 54 deletions(-)

diff --git a/Fight/GameActor/GA_Guard.cs b/Fight/GameActor/GA_Guard.cs
index b7a848a..f61a2b2 100644
--- a/Fight/GameActor/GA_Guard.cs
+++ b/Fight/GameActor/GA_Guard.cs
@@ -22,8 +22,10 @@
     public static readonly int GuardAction_Run = 3;
     #endregion
 
-    public bool IsStateActive { get; set; }//鏄惁鐘舵�佹満寮�鍚�
-
+    public bool IsStateActive { get; set; }//鏄惁鐘舵�佹満寮�鍚�
+
+
+
     public bool guardPick { get; private set; }
 
     public float animatorSpeed { get; private set; }
@@ -32,14 +34,21 @@
 
     public GuardState guardState { get; set; }
 
-    public int targetPlayerId { get; private set; }
-
-    public int itemID { get; set; }
-
+    public int targetPlayerId { get; private set; }
+
+
+
+    public int itemID { get; set; }
+
+
+
     public int[] pickEffectIds { get; private set; }
-
-    public bool IsHeroControl { get { return targetPlayerId == PlayerDatas.Instance.PlayerId; } }
-
+
+
+    public bool IsHeroControl { get { return targetPlayerId == PlayerDatas.Instance.PlayerId; } }
+
+
+
     public bool IsPlayerDie { get; private set; }
 
     PlayerDeadModel deadModel { get { return ModelCenter.Instance.GetModel<PlayerDeadModel>(); } }
@@ -66,8 +75,10 @@
         get; private set;
     }
 
-    private DungeonOpenTimeConfig dungeonConfig { get; set; }
-
+    private DungeonOpenTimeConfig dungeonConfig { get; set; }
+
+
+
     private SFXController m_SFXController = null;
 
     public sealed override void Die() { }
@@ -101,13 +112,6 @@
             {
                 Object.DestroyImmediate(pickUpBehaviour);
             }
-        }
-
-        if (m_Model)
-        {
-            m_Model.transform.SetParent(m_Root);
-            m_Model.transform.localPosition = Vector3.zero;
-            m_Model.transform.localRotation = Quaternion.identity;
         }
     }
 
@@ -172,25 +176,44 @@
     IEnumerator Co_StagePrepare()
     {
         yield return null;
-        if (Root != null && targetPlayer != null)
-        {
-            var targetPosition = targetPlayer.Root.position;
-            if (MathUtility.CalDistance(Root.position, targetPosition) >
-                model.resetDistance * model.resetDistance)
-            {
-                SetPosition(targetPosition.x, targetPosition.z);
-            }
-            if (m_SFXController == null || !m_SFXController.gameObject.activeSelf)
-            {
-                m_SFXController = SFXPlayUtility.Instance.PlayBattleEffect(pickEffectIds[0], this, NpcConfig != null ? NpcConfig.ModeProportion : 1);
-                if (m_SFXController != null)
-                {
-                    var mountPoint = Root.GetChildTransformDeeply(GAStaticDefine.MountPointBoneName);
-                    m_SFXController.duration = 0;
-                    m_SFXController.transform.SetParent(mountPoint);
-                    m_SFXController.transform.localPosition = Vector3.zero;
-                }
-            }
+        if (Root != null && targetPlayer != null)
+
+        {
+
+            var targetPosition = targetPlayer.Root.position;
+
+            if (MathUtility.CalDistance(Root.position, targetPosition) >
+
+                model.resetDistance * model.resetDistance)
+
+            {
+
+                SetPosition(targetPosition.x, targetPosition.z);
+
+            }
+
+            if (m_SFXController == null || !m_SFXController.gameObject.activeSelf)
+
+            {
+
+                m_SFXController = SFXPlayUtility.Instance.PlayBattleEffect(pickEffectIds[0], this, NpcConfig != null ? NpcConfig.ModeProportion : 1);
+
+                if (m_SFXController != null)
+
+                {
+
+                    var mountPoint = Root.GetChildTransformDeeply(GAStaticDefine.MountPointBoneName);
+
+                    m_SFXController.duration = 0;
+
+                    m_SFXController.transform.SetParent(mountPoint);
+
+                    m_SFXController.transform.localPosition = Vector3.zero;
+
+                }
+
+            }
+
         }
     }
 
@@ -240,23 +263,70 @@
         }
     }
 
-    private void InitializeModelRes()
+    protected override sealed void OnPrefabLoadFinished(bool result, UnityEngine.Object prefab)
     {
-        IsStateActive = true;
-
-        if (targetPlayer != null)
-        {
-            var bornpos = targetPlayer.Root.position + targetPlayer.Root.right * 0.6f - targetPlayer.Forward * 0.3f;
-            bornpos.y = targetPlayer.Root.position.y + model.height;
-            Pos = bornpos;
+        if (!result || prefab == null)
+        {
+            return;
         }
-        
 
+        GAMgr.Instance.RemoveNeedDestroyPrefab(prefab as GameObject);
+        m_Model = GameObjectPoolManager.Instance.RequestGameObject(prefab as GameObject);
+
+        var _config = Config.Instance.Get<GuardConfig>(itemID);
+        NpcConfig = Config.Instance.Get<NPCConfig>(_config.npcId);
+
+        if (m_Model)
+        {
+            m_Animator = m_Model.GetComponent<Animator>();
+            if (m_Animator)
+            {
+                RuntimeAnimatorController _controller = null;
+                if (m_LoadDefaultRes)
+                {
+                    _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Func();
+                }
+                else
+                {
+                    string _name = NpcConfig.MODE;
+                    if (_name.Contains("A_Zs"))
+                    {
+                        _name = "A_Zs";
+                        GameObjectPoolManager.Instance.AddDontDestroyGoInstID(m_Model.GetInstanceID());
+                    }
+                    else if (_name.Contains("A_Fs"))
+                    {
+                        _name = "A_Fs";
+                        GameObjectPoolManager.Instance.AddDontDestroyGoInstID(m_Model.GetInstanceID());
+                    }
+                    _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, _name);
+                }
+                if (_controller)
+                {
+                    m_Animator.runtimeAnimatorController = _controller;
+                }
+                m_Animator.enabled = true;
+                m_Animator.SetInteger(GAStaticDefine.Param_ActorInstID, (int)ClientInstID);
+            }
+
+            SetupBindNode(m_Model.transform);
+
+            m_Model.transform.SetParent(m_Root);
+            m_Model.transform.localPosition = Vector3.zero;
+            m_Model.transform.localRotation = Quaternion.identity;
+
+            RequestName();
+
+            OnMainModelLoaded();
+        }
+    }
+
+    protected override void OnMainModelLoaded()
+    {
         m_Model.SetLayer(LayerUtility.Monster, true);
 
         var mountPoint = Root.GetChildTransformDeeply(GAStaticDefine.MountPointBoneName);
         m_SFXController = SFXPlayUtility.Instance.PlayBattleEffect(pickEffectIds[0], this, NpcConfig != null ? NpcConfig.ModeProportion : 1);
-
 
         if (m_SFXController != null)
         {
@@ -274,6 +344,23 @@
         {
             GameObjectPoolManager.Instance.AddDontDestroyGoInstID(m_Model.GetInstanceID());
         }
+    }
+
+    private void InitializeModelRes()
+    {
+        IsStateActive = true;
+
+        if (targetPlayer != null)
+        {
+            var bornpos = targetPlayer.Root.position + targetPlayer.Root.right * 0.6f - targetPlayer.Forward * 0.3f;
+
+            bornpos.y = targetPlayer.Root.position.y + model.height;
+
+            Pos = bornpos;
+        }
+
+        var _config = Config.Instance.Get<GuardConfig>(itemID);
+        InstanceResourcesLoader.AsyncLoadNpc(_config.npcId, OnPrefabLoadFinished);
     }
 
     private void SetPosition(float x, float z)
@@ -324,7 +411,8 @@
     {
         var _height = targetPlayer.Root.position.y + model.height;
         var targetPosition = targetPlayer.Root.position;
-        if (MathUtility.CalDistance(Root.position, targetPosition) >
+        if (MathUtility.CalDistance(Root.position, targetPosition) >
+
             model.resetDistance * model.resetDistance)
         {
             SetPosition(targetPosition.x, targetPosition.z);
@@ -360,7 +448,8 @@
 
     private bool CheckTrack()
     {
-        if (MathUtility.CalDistance(Root.position, targetPlayer.Root.position) > model.traceRange * model.traceRange
+        if (MathUtility.CalDistance(Root.position, targetPlayer.Root.position) > model.traceRange * model.traceRange
+
             && guardState != GuardState.Track)
         {
             stopDanceState = true;
@@ -390,15 +479,20 @@
     {
         if (dungeonConfig != null)
         {
-            if (dungeonConfig.GuardPick == 0)
-            {
+            if (dungeonConfig.GuardPick == 0)
+
+            {
+
                 return false;
             }
         }
 
-        if (Root == null)
-        {
-            return false;
+        if (Root == null)
+
+        {
+
+            return false;
+
         }
 
         if (DropItemManager.CheckCanGuardPickUp(Root.position))

--
Gitblit v1.8.0