少年修仙传客户端代码仓库
client_Wu Xijin
2018-12-04 31efa47c430874f95f4ff5503372f0cf6ecb53ae
Fight/GameActor/GActorPlayerBase.cs
@@ -9,12 +9,14 @@
{
    public static UnityAction<bool> onShowEffect;
    private bool m_LoadDefaultHorse;
    protected struct EquipInfo
    public struct EquipInfo
    {
        public int place;
        public uint itemID;
        public int suitID;
        public int suitLevel;
        public int suitLV_1;
        public int suitLV_2;
    }
    protected int m_SuitCount;
    protected Material m_WingMaterial;
    protected Material m_HorseMaterial;
@@ -214,7 +216,6 @@
        WeaponItemID = uint.MaxValue;
        SecondaryID = uint.MaxValue;
        WingItemID = uint.MaxValue;
        m_SuitLevel = 0;
        MovingState = E_MovingState.Normal;
        SystemSetting.Instance.qualityLevelChangeEvent += OnGameQualityChange;
@@ -327,13 +328,19 @@
            }
        }
        if (m_SMRenderer)
        {
            MaterialLoader.Release(m_SMRenderer.material);
            m_SMRenderer.material = null;
        }
        m_Material = null;
        foreach (var _effect in m_GodWeaponEffectDict.Values)
        {
            SFXPlayUtility.Instance.Release(_effect);
        }
        m_GodWeaponEffectDict.Clear();
        UnloadSuitSFX();
        ReleaseLifeBar();
        ReleaseName();
        ReleaseShadow();
@@ -382,8 +389,6 @@
    private GameObject m_HorseModel;
    private GA_Guard m_Guard;
    private List<SFXController> m_SuitEffect = new List<SFXController>();
    private Transform m_HorseBindNode;
    protected uint ClothesItemID { get; private set; }
@@ -392,8 +397,6 @@
    protected uint SecondaryID { get; private set; }
    protected uint WingItemID { get; private set; }
    protected uint GuardID { get; private set; }
    protected byte m_SuitLevel;// 套装等级
    private Animator m_ClothesAnimator;
    private Animator m_WingAnimator;
@@ -901,7 +904,8 @@
        m_SMRenderer = m_ClothesModel.GetComponentInChildren<SkinnedMeshRenderer>();
        if (m_SMRenderer)
        {
            m_Material = m_SMRenderer.material;
            MaterialLoader.Release(m_SMRenderer.material);
            m_Material = m_SMRenderer.material = MaterialLoader.LoadClothesMaterial(_resID, false, false);
        }
        m_ClothesAnimator = m_ClothesModel.GetComponent<Animator>();
@@ -1373,151 +1377,7 @@
        HorseID = _newHorseID;
    }
    private void SyncSuitSFX(int suitEffectID)
    {
        if (!m_ClothesModel)
        {
            return;
        }
        UnloadSuitSFX();
        if (suitEffectID <= 0)
        {
            return;
        }
        SuitEffectConfig _suitEffect = Config.Instance.Get<SuitEffectConfig>(suitEffectID);
        // 上特效
        if (_suitEffect != null)
        {
            Transform _parent = null;
            SFXController _sfx = null;
            for (int i = 0; _suitEffect.bindbones != null && i < _suitEffect.bindbones.Length; ++i)
            {
                if (string.IsNullOrEmpty(_suitEffect.bindbones[i])
                    || _suitEffect.effectIds[i] == 0)
                {
                    continue;
                }
                _parent = m_ClothesModel.transform.GetChildTransformDeeply(_suitEffect.bindbones[i]);
                if (_parent == null)
                {
                    Debug.LogErrorFormat("套装: {0} 配置的骨骼节点: {1} 不存在", suitEffectID, _suitEffect.bindbones[i]);
                    continue;
                }
                _sfx = SFXPlayUtility.Instance.PlayBattleEffect(_suitEffect.effectIds[i], _parent);
                m_SuitEffect.Add(_sfx);
            }
        }
    }
    private PlayerSuitModel _suitModel;
    private PlayerSuitModel SuitModel
    {
        get { return _suitModel ?? (_suitModel = ModelCenter.Instance.GetModel<PlayerSuitModel>()); }
    }
    private PlayerPackModel m_PlayerBackModel;
    private PlayerPackModel PlayerBackModel
    {
        get
        {
            return m_PlayerBackModel ?? (m_PlayerBackModel = ModelCenter.Instance.GetModel<PlayerPackModel>());
        }
    }
    public void ChangeEquip(int place, uint itemID, int suitLevel)
    {
        if (PlayerDatas.Instance.PlayerId != ServerInstID)
        {
            return;
        }
        var _equipModel = PlayerBackModel.GetSinglePackModel(PackType.rptEquip);
        int _suitCount = 0;
        int _start = (int)RoleEquipType.retHat;
        int _end = (int)RoleEquipType.retShoes;
        int _rank = 0;
        ItemModel _itemModel = null;
        // 先取得衣服的阶数
        _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retClothes);
        if (_itemModel == null)
        {
            return;
        }
        _rank = _itemModel.chinItemModel.LV;
        for (int i = _start; i <= _end; ++i)
        {
            _itemModel = _equipModel.GetItemModelByIndex(i);
            if (_itemModel == null)
            {
                continue;
            }
            if (_itemModel.chinItemModel.SuiteiD <= 0)
            {
                continue;
            }
            if (SuitModel.suitModelDict.ContainsKey(i))
            {
                if (SuitModel.suitModelDict[i].ContainsKey(1)
                 || SuitModel.suitModelDict[i].ContainsKey(2))
                {
                    if (_itemModel.chinItemModel.LV >= _rank)
                    {
                        _suitCount += 1;
                    }
                }
            }
        }
        if (_suitCount == 5)
        {
            var _itemConfig = Config.Instance.Get<ItemConfig>((int)ClothesItemID);
            if (_itemConfig != null)
            {
                var _newMat = MaterialLoader.LoadClothesMaterial(_itemConfig.ChangeOrd, false, true);
                if (_newMat)
                {
                    m_SMRenderer.material = m_Material = _newMat;
                }
            }
        }
        else
        {
            var _itemConfig = Config.Instance.Get<ItemConfig>((int)ClothesItemID);
            if (_itemConfig != null)
            {
                var _newMat = MaterialLoader.LoadClothesMaterial(_itemConfig.ChangeOrd, false, false);
                if (_newMat)
                {
                    m_SMRenderer.material = m_Material = _newMat;
                }
            }
        }
    }
    public void UnloadSuitSFX()
    {
        for (int i = 0; i < m_SuitEffect.Count; ++i)
        {
            SFXPlayUtility.Instance.Release(m_SuitEffect[i]);
        }
        m_SuitEffect.Clear();
    }
    public abstract void ChangeEquip(EquipInfo equipInfo);
    private bool TryRequest(uint itemID, ref GameObject model)
    {
@@ -1690,18 +1550,6 @@
        AnimatorStateInfo _stateInfo = m_ClothesAnimator.GetCurrentAnimatorStateInfo(0);
        return _stateInfo.shortNameHash == GAStaticDefine.State_StunHash;
    }
    public bool IsCollecting()
    {
        if (!m_ClothesAnimator)
        {
            return false;
        }
        AnimatorStateInfo _stateInfo = m_ClothesAnimator.GetCurrentAnimatorStateInfo(0);
        return _stateInfo.shortNameHash == GAStaticDefine.State_CollectHash;
    }
    public sealed override void Hurt()