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_NpcFunc.cs |  207 +++++++++++++++++++++++++++++++++++----------------
 1 files changed, 140 insertions(+), 67 deletions(-)

diff --git a/Fight/GameActor/GA_NpcFunc.cs b/Fight/GameActor/GA_NpcFunc.cs
index dc711be..e6a39e7 100644
--- a/Fight/GameActor/GA_NpcFunc.cs
+++ b/Fight/GameActor/GA_NpcFunc.cs
@@ -24,6 +24,7 @@
 
     protected override void OnInit(GameNetPackBasic package)
     {
+        base.OnInit(package);
         m_H0406 = package as H0406_tagNPCAppear;
 
         if (m_H0406 == null)
@@ -58,8 +59,6 @@
 
         PlayerTaskDatas.Event_TaskResponse += OnTaskRefresh;
 
-        RequestMissionSign();
-
         bool _needHide = (NpcConfig.Show == 0);
 
         PlayerTaskDatas _model = ModelCenter.Instance.GetModel<PlayerTaskDatas>();
@@ -73,6 +72,101 @@
         {
             Pos = Constants.Special_Hide_Position;
         }
+    }
+
+    protected override void OnMainModelLoaded()
+    {
+        if (string.IsNullOrEmpty(NpcConfig.Equips))
+        {
+            return;
+        }
+
+        string[] _ids = NpcConfig.Equips.Split('|');
+        int _weaponId = int.Parse(_ids[0]);
+        int _secondaryId = _ids.Length > 1 ? int.Parse(_ids[1]) : -1;
+        int _horseId = _ids.Length > 2 ? int.Parse(_ids[2]) : -1;
+        int _wingId = _ids.Length > 3 ? int.Parse(_ids[3]) : -1;
+
+        // Debug.LogFormat("weapon: {0}, secondary: {1}, horse: {2}, wing: {3}", _weaponId, _secondaryId, _horseId, _weaponId);
+
+        if (_weaponId > 0)
+        {
+            SetEquipWeapon(_weaponId);
+        }
+
+        if (_secondaryId > 0)
+        {
+            SetEquipSecondary(_secondaryId);
+        }
+
+        if (_wingId > 0)
+        {
+            SetEquipWing(_wingId);
+        }
+
+        if (_horseId > 0)
+        {
+            SetEquipHorse(_horseId);
+        }
+
+        RequestMissionSign();
+    }
+
+    private void SetEquipHorse(int horseID)
+    {
+        if (horseID > 0)
+        {
+            m_HorseID = horseID;
+            var _horseConfig = Config.Instance.Get<HorseConfig>(horseID);
+            InstanceResourcesLoader.AsyncLoadModelRes(_horseConfig.Model, OnHorseLoaded);
+        }
+    }
+
+    private void SetEquipSecondary(int resID)
+    {
+        if (resID > 0)
+        {
+            m_SecondaryID = resID;
+            InstanceResourcesLoader.AsyncLoadModelRes(resID, OnSecondaryLoaded);
+        }
+    }
+
+    private void SetEquipWeapon(int resID)
+    {
+        if (resID > 0)
+        {
+            m_WeaponID = resID;
+            InstanceResourcesLoader.AsyncLoadModelRes(resID, OnWeaponLoaded);
+        }
+    }
+
+    private void SetEquipWing(int resID)
+    {
+        if (resID > 0)
+        {
+            m_WingID = resID;
+            InstanceResourcesLoader.AsyncLoadModelRes(resID, OnWingLoaded);
+        }
+    }
+
+    private void OnHorseLoaded(bool result, UnityEngine.Object prefab)
+    {
+        if (!result || !prefab)
+        {
+            return;
+        }
+
+        var _horseConfig = Config.Instance.Get<HorseConfig>(m_HorseID);
+        var _modelResConfig = Config.Instance.Get<ModelResConfig>(_horseConfig.Model);
+
+        m_HorseModel = GameObjectPoolManager.Instance.RequestGameObject(prefab as GameObject);
+        var _animator = m_HorseModel.GetComponent<Animator>();
+        if (_animator)
+        {
+            _animator.runtimeAnimatorController = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
+                                                                                             _modelResConfig.ResourcesName);
+            _animator.enabled = true;
+        }
 
         if (m_HorseModel)
         {
@@ -80,8 +174,6 @@
             m_HorseModel.transform.localPosition = Vector3.zero;
             m_HorseModel.transform.localRotation = Quaternion.identity;
 
-            var _horseConfig = Config.Instance.Get<HorseConfig>(m_HorseID);
-            var _modelResConfig = Config.Instance.Get<ModelResConfig>(_horseConfig.Model);
             var _horseBindNode = m_HorseModel.transform.GetChildTransformDeeply(_modelResConfig.BindPoint);
 
             if (_horseBindNode)
@@ -89,7 +181,7 @@
                 m_Model.transform.SetParent(_horseBindNode);
                 m_Model.transform.localPosition = Vector3.zero;
                 m_Model.transform.localEulerAngles = new Vector3(90, 0, 0);
-                var _animator = m_Model.GetComponent<Animator>();
+                _animator = m_Model.GetComponent<Animator>();
                 _animator.SetInteger(GAStaticDefine.Param_Action, GAStaticDefine.Act_HorseIdle);
                 switch (_horseConfig.ActionType)
                 {
@@ -111,83 +203,64 @@
                 }
             }
         }
-        else if (m_Model)
-        {
-            m_Model.transform.SetParent(m_Root);
-            m_Model.transform.localPosition = Vector3.zero;
-            m_Model.transform.localRotation = Quaternion.identity;
-        }
     }
 
-    public override void InitPerformance(uint clientInstID, int npcID)
+    private void OnWingLoaded(bool result, UnityEngine.Object prefab)
     {
-        base.InitPerformance(clientInstID, npcID);
-
-        if (string.IsNullOrEmpty(NpcConfig.Equips))
+        if (!result || !prefab)
         {
             return;
         }
 
-        string[] _ids = NpcConfig.Equips.Split('|');
-        int _weaponId = int.Parse(_ids[0]);
-        int _secondaryId = _ids.Length > 1 ? int.Parse(_ids[1]) : -1;
-        int _horseId = _ids.Length > 2 ? int.Parse(_ids[2]) : -1;
-        int _wingId = _ids.Length > 3 ? int.Parse(_ids[3]) : -1;
-
-        // Debug.LogFormat("weapon: {0}, secondary: {1}, horse: {2}, wing: {3}", _weaponId, _secondaryId, _horseId, _weaponId);
-
-        int _job = NpcConfig.MODE.Contains("A_Zs") ? 1 : 2;
-
-        if (_weaponId > 0)
+        m_WingModel = GameObjectPoolManager.Instance.RequestGameObject(prefab as GameObject);
+        var _animator = m_WingModel.GetComponent<Animator>();
+        if (_animator)
         {
-            SetEquip(_weaponId, GAStaticDefine.WeaponBindBoneName, ref m_WeaponModel, ref m_WeaponID);
-        }
-
-        if (_secondaryId > 0)
-        {
-            SetEquip(_secondaryId, GAStaticDefine.SecondaryBindBoneName[_job - 1], ref m_SecondaryModel, ref m_SecondaryID);
-        }
-
-        if (_wingId > 0)
-        {
-            SetEquip(_wingId, GAStaticDefine.WingBindBoneName, ref m_WingModel, ref m_WingID);
-        }
-
-        if (_horseId > 0)
-        {
-            var _horseConfig = Config.Instance.Get<HorseConfig>(_horseId);
-            var _modelResConfig = Config.Instance.Get<ModelResConfig>(_horseConfig.Model);
-            var _prefab = InstanceResourcesLoader.LoadModelRes(_modelResConfig.ID);
-            m_HorseModel = GameObjectPoolManager.Instance.RequestGameObject(_prefab);
-            var _animator = m_HorseModel.GetComponent<Animator>();
-            if (_animator)
-            {
-                _animator.runtimeAnimatorController = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
-                                                                                                 _modelResConfig.ResourcesName);
-
-            }
             _animator.enabled = true;
-            m_HorseID = _horseId;
         }
+        Transform _bindNode = m_Model.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
+        m_WingModel.transform.SetParent(_bindNode);
+        m_WingModel.transform.localPosition = Vector3.zero;
+        m_WingModel.transform.localRotation = Quaternion.identity;
     }
 
-    private void SetEquip(int resID, string bindNodeName, ref GameObject model, ref int id)
+    private void OnSecondaryLoaded(bool result, UnityEngine.Object prefab)
     {
-        if (resID > 0)
+        if (!result || !prefab)
         {
-            GameObject _prefab = InstanceResourcesLoader.LoadModelRes(resID);
-            model = GameObjectPoolManager.Instance.RequestGameObject(_prefab);
-            var _animator = model.GetComponent<Animator>();
-            if (_animator)
-            {
-                _animator.enabled = true;
-            }
-            Transform _weaponNode = m_Model.transform.GetChildTransformDeeply(bindNodeName);
-            model.transform.SetParent(_weaponNode);
-            model.transform.localPosition = Vector3.zero;
-            model.transform.localRotation = Quaternion.identity;
-            id = resID;
+            return;
         }
+
+        m_SecondaryModel = GameObjectPoolManager.Instance.RequestGameObject(prefab as GameObject);
+        var _animator = m_SecondaryModel.GetComponent<Animator>();
+        if (_animator)
+        {
+            _animator.enabled = true;
+        }
+        int _job = NpcConfig.MODE.Contains("A_Zs") ? 1 : 2;
+        Transform _bindNode = m_Model.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[_job - 1]);
+        m_SecondaryModel.transform.SetParent(_bindNode);
+        m_SecondaryModel.transform.localPosition = Vector3.zero;
+        m_SecondaryModel.transform.localRotation = Quaternion.identity;
+    }
+
+    private void OnWeaponLoaded(bool result, UnityEngine.Object prefab)
+    {
+        if (!result || !prefab)
+        {
+            return;
+        }
+
+        m_WeaponModel = GameObjectPoolManager.Instance.RequestGameObject(prefab as GameObject);
+        var _animator = m_WeaponModel.GetComponent<Animator>();
+        if (_animator)
+        {
+            _animator.enabled = true;
+        }
+        Transform _bindNode = m_Model.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
+        m_WeaponModel.transform.SetParent(_bindNode);
+        m_WeaponModel.transform.localPosition = Vector3.zero;
+        m_WeaponModel.transform.localRotation = Quaternion.identity;
     }
 
     protected override void OnUnit()

--
Gitblit v1.8.0