少年修仙传客户端代码仓库
client_Hale
2019-01-28 3de2405c503ae8bf7ca3ff87ad92f1e3c0217d81
382 守护加载相关逻辑保护
1个文件已修改
129 ■■■■■ 已修改文件
Fight/GameActor/GA_Guard.cs 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Guard.cs
@@ -1,5 +1,5 @@

using System;
using System;
using System.Collections;
using Snxxz.UI;
using TableConfig;
@@ -130,8 +130,8 @@
    {
        deadModel.AllPlayerDieEvent -= AllPlayerDieEvent;
        deadModel.AllPlayerRebornEvent -= AllPlayerRebornEvent;
        DTC0429_tagObjResetPos.ResetPlayerPosEvent -= ResetPlayerPosEvent;
        DTC0102_tagCDBPlayer.afterPlayerDataInitializeEvent -= AfterPlayerDataInitializeEvent;
        DTC0429_tagObjResetPos.ResetPlayerPosEvent -= ResetPlayerPosEvent;
        DTC0102_tagCDBPlayer.afterPlayerDataInitializeEvent -= AfterPlayerDataInitializeEvent;
        DTCA112_tagMCDBPlayer.playerInitEvent -= PlayerInitEvent;
        if (IsHeroControl)
        {
@@ -153,45 +153,45 @@
        pickUpBehaviour = null;
        base.OnUnit();
    }
    private void AfterPlayerDataInitializeEvent()
    {
        SnxxzGame.Instance.StartCoroutine(Co_RecheckPlayLifeState());
    }
    public void PlayerInitEvent()
    {
        CheckResetGuardState();
    }
    IEnumerator Co_RecheckPlayLifeState()
    {
        yield return null;
        CheckResetGuardState();
    }
    void CheckResetGuardState()
    {
        if (guardState == GuardState.Inter)
        {
            var hero = PlayerDatas.Instance.hero;
            if (hero != null)
            {
                if (hero.ActorInfo != null && !hero.ActorInfo.serverDie)
                {
                    IsPlayerDie = false;
                    IsStateActive = true;
                    if (m_Animator)
                    {
                        m_Animator.enabled = true;
                    }
                    SetPosition(hero.Pos.x / 2, hero.Pos.y / 2);
                }
            }
        }
    }
    }
    private void AfterPlayerDataInitializeEvent()
    {
        SnxxzGame.Instance.StartCoroutine(Co_RecheckPlayLifeState());
    }
    public void PlayerInitEvent()
    {
        CheckResetGuardState();
    }
    IEnumerator Co_RecheckPlayLifeState()
    {
        yield return null;
        CheckResetGuardState();
    }
    void CheckResetGuardState()
    {
        if (guardState == GuardState.Inter)
        {
            var hero = PlayerDatas.Instance.hero;
            if (hero != null)
            {
                if (hero.ActorInfo != null && !hero.ActorInfo.serverDie)
                {
                    IsPlayerDie = false;
                    IsStateActive = true;
                    if (m_Animator)
                    {
                        m_Animator.enabled = true;
                    }
                    SetPosition(hero.Pos.x / 2, hero.Pos.y / 2);
                }
            }
        }
    }
    private void ReleasePickUpBehaviour()
    {
        if (pickUpBehaviour != null)
@@ -244,7 +244,7 @@
                    m_SFXController.transform.SetParent(mountPoint);
                    m_SFXController.transform.localPosition = Vector3.zero;
                    m_SFXController.transform.localPosition = Vector3.zero;
                    m_SFXController.transform.localEulerAngles = Vector3.zero;
                }
@@ -296,6 +296,25 @@
        if (!result || prefab == null)
        {
            return;
        }
        if (m_Model)
        {
            if (NpcConfig != null)
            {
                GameObject _toDestroy = InstanceResourcesLoader.LoadNpc(NpcConfig.NPCID);
                if (_toDestroy)
                {
                    GameObjectPoolManager.Instance.ReleaseGameObject(_toDestroy, m_Model);
                }
            }
            else
            {
                UnityEngine.Object.Destroy(m_Model);
            }
            m_Model = null;
            m_Animator = null;
        }
        GAMgr.Instance.RemoveNeedDestroyPrefab(prefab as GameObject);
@@ -514,18 +533,18 @@
        if (DropItemManager.CheckCanGuardPickUp(Root.position))
        {
            var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
            if (dataMapId != 0)
            {
                var dungeonConfig = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId);
                if (dungeonConfig != null)
                {
                    if (dungeonConfig.GuardPick == 0)
                    {
                        return false;
                    }
                }
            }
            var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
            if (dataMapId != 0)
            {
                var dungeonConfig = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId);
                if (dungeonConfig != null)
                {
                    if (dungeonConfig.GuardPick == 0)
                    {
                        return false;
                    }
                }
            }
            if (guardState != GuardState.PickUp)
            {