少年修仙传客户端代码仓库
client_linchunjie
2019-04-23 013ec84286f4b2ccd20d73bffbe1bac271fa1a89
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
2个文件已添加
3个文件已修改
544 ■■■■■ 已修改文件
Fight/ClientCollectUtility.cs 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/ClientCollectUtility.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcClientCollect.cs 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/Dungeon/DungeonStage.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/MainButtonMisc.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/ClientCollectUtility.cs
New file
@@ -0,0 +1,275 @@
using System;
using System.Collections.Generic;
using Snxxz.UI;
using UnityEngine;
using UnityEngine.Events;
public class ClientCollectUtility
{
    public static List<GA_NpcClientCollect> m_ArriveList = new List<GA_NpcClientCollect>();
    public static UnityAction<uint, int> OnShowCollectIcon;
    public static UnityAction<uint, int> OnHideCollectIcon;
    public static UnityAction<uint> OnCollectFinished;
    private static bool m_StartCollect;
    private static float m_CollectTime;
    private static uint m_CurrentSID;
    public static void StartCollect(GA_NpcClientCollect npc)
    {
        if (m_StartCollect)
        {
            StopCollect();
            return;
        }
        m_CollectTime = 0;
        m_CurrentSID = npc.ServerInstID;
        NormalCollectWin.s_CollectInfo = new PrepareHandler.ClientH0812()
        {
            PlayerID = PlayerDatas.Instance.PlayerId,
            PrepareState = (byte)PrepareHandler.E_PrepareType.pstMissionCollecting,
            MaxTime = 2000,
            PrepareID = npc.NpcConfig.NPCID,
        };
        PrepareHandler.Instance.isPreparing = true;
        WindowCenter.Instance.Open<NormalCollectWin>();
        m_StartCollect = true;
        var _hero = PlayerDatas.Instance.hero;
        if (_hero != null && !_hero.ActorInfo.serverDie)
        {
            _hero.Collect();
        }
    }
    public static void StopCollect()
    {
        PrepareHandler.Instance.isPreparing = false;
        WindowCenter.Instance.Close<NormalCollectWin>();
        m_StartCollect = false;
        var _hero = PlayerDatas.Instance.hero;
        if (_hero != null && !_hero.ActorInfo.serverDie)
        {
            if (_hero.IsCollect())
            {
                _hero.IdleImmediate();
            }
        }
    }
    public static void Arrive(GA_NpcClientCollect npc)
    {
        if (!m_ArriveList.Contains(npc))
        {
            if (m_ArriveList.Count == 0)
            {
                if (OnShowCollectIcon != null)
                {
                    OnShowCollectIcon(npc.ServerInstID, npc.NpcConfig.NPCID);
                }
            }
            m_ArriveList.Add(npc);
        }
    }
    public static void Leave(GA_NpcClientCollect npc)
    {
        if (m_ArriveList.Contains(npc))
        {
            m_ArriveList.Remove(npc);
            if (m_ArriveList.Count == 0)
            {
                if (OnHideCollectIcon != null)
                {
                    OnHideCollectIcon(npc.ServerInstID, npc.NpcConfig.NPCID);
                }
            }
        }
    }
    public static void Init()
    {
        NPCInteractProcessor.s_NpcInteractEvent += HandleCallback;
        WindowCenter.Instance.windowAfterOpenEvent += CheckOpenCollectIcon;
        WindowCenter.Instance.windowAfterCloseEvent += CheckCloseCollectIcon;
    }
    private static void HandleCallback(E_NpcType type, int npcID, uint sid)
    {
        var _hero = PlayerDatas.Instance.hero;
        if (_hero != null)
        {
            var _npc = _hero.SelectTarget as GA_NpcClientCollect;
            var _checkDis = 0f;
            if (_npc == null)
            {
                var _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcCollect);
                if (_list != null)
                {
                    _list.Sort((a1, a2) =>
                                    {
                                        var _d1 = MathUtility.DistanceSqrtXZ(a1.Pos, _hero.Pos);
                                        var _d2 = MathUtility.DistanceSqrtXZ(a2.Pos, _hero.Pos);
                                        return _d2 < _d1 ? -1 : 1;
                                    });
                    foreach (var _a in _list)
                    {
                        if (!(_a is GA_NpcClientCollect))
                        {
                            continue;
                        }
                        _npc = _a as GA_NpcClientCollect;
                        break;
                    }
                }
            }
            if (_npc != null)
            {
                if (_hero.SelectTarget == null)
                {
                    _hero.SelectTarget = _npc;
                }
                _checkDis = MathUtility.DistanceSqrtXZ(_hero.Pos, _npc.Pos);
                if (_checkDis < 4f)
                {
                    if (OnShowCollectIcon != null)
                    {
                        OnShowCollectIcon(_npc.ServerInstID, _npc.NpcConfig.NPCID);
                    }
                    var _model = ModelCenter.Instance.GetModel<HazyGrassModel>();
                    if (_model.CanCollectClientNpc(_npc.NpcConfig.NPCID))
                    {
                        StartCollect(_npc);
                    }
                    else
                    {
                        _model.DisplayCollectErrorTip();
                    }
                }
                else
                {
                    _hero.MoveToPosition(_npc.Pos, 1.5f);
                }
            }
        }
    }
    public static void UnInit()
    {
        NPCInteractProcessor.s_NpcInteractEvent -= HandleCallback;
        WindowCenter.Instance.windowAfterOpenEvent -= CheckOpenCollectIcon;
        WindowCenter.Instance.windowAfterCloseEvent -= CheckCloseCollectIcon;
    }
    private static void CheckOpenCollectIcon(Window win)
    {
        GA_Hero _hero = PlayerDatas.Instance.hero;
        if (_hero == null)
        {
            return;
        }
        if (win is MainInterfaceWin)
        {
            if (m_ArriveList.Count > 0)
            {
                if (OnShowCollectIcon != null)
                {
                    var _collect = _hero.SelectTarget as GA_NpcClientCollect;
                    if (_collect == null)
                    {
                        _collect = m_ArriveList[0];
                    }
                    OnShowCollectIcon(_collect.ServerInstID, _collect.NpcConfig.NPCID);
                }
            }
        }
    }
    private static void CheckCloseCollectIcon(Window win)
    {
        if (win is MainInterfaceWin)
        {
            if (OnHideCollectIcon != null)
            {
                OnHideCollectIcon(0, 0);
            }
        }
    }
    public static void Update()
    {
        if (m_StartCollect)
        {
            GA_Hero _hero = PlayerDatas.Instance.hero;
            m_CollectTime += Time.deltaTime;
            if (m_CollectTime > 2f)
            {
                StopCollect();
                GA_NpcClientCollect _npc = null;
                if (m_CurrentSID > 0)
                {
                    _npc = GAMgr.Instance.GetBySID(m_CurrentSID) as GA_NpcClientCollect;
                    if (_npc != null)
                    {
                        if (_npc.belongEventID != -1)
                        {
                            ClientSceneManager.Instance.NpcDead(_npc.belongEventID, _npc, _npc.NpcConfig.NPCID);
                        }
                        if (_hero != null)
                        {
                            if (_hero.LockTarget == _npc)
                            {
                                _hero.LockTarget = null;
                            }
                            if (_hero.SelectTarget == _npc)
                            {
                                _hero.SelectTarget = null;
                            }
                        }
                        GAMgr.Instance.Release(_npc);
                    }
                    else
                    {
                        if (OnCollectFinished != null)
                        {
                            OnCollectFinished(m_CurrentSID);
                        }
                    }
                }
            }
            if (!_hero.IsIdle() && !_hero.IsCollect())
            {
                StopCollect();
            }
            if (_hero.SelectTarget != null)
            {
                if (_hero.SelectTarget.ServerInstID != m_CurrentSID)
                {
                    StopCollect();
                }
            }
        }
    }
}
Fight/ClientCollectUtility.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5351cf7dac863e848ae45c4af5e90e51
timeCreated: 1555916749
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Fight/GameActor/GA_NpcClientCollect.cs
@@ -8,122 +8,19 @@
{
    public static UnityAction<uint> OnCollectFinished;
    private static List<uint> m_ArrivedList = new List<uint>();
    public static event UnityAction<uint, int> OnArrive;
    public static event UnityAction<uint, int> OnLeave;
    private bool m_IsMainWinOpen = false;
    protected override void OnInit(GameNetPackBasic package)
    {
        base.OnInit(package);
        WindowCenter.Instance.windowAfterOpenEvent += CheckOpenCollectIcon;
        WindowCenter.Instance.windowAfterCloseEvent += AfterCloseMainWin;
        NPCInteractProcessor.s_NpcInteractEvent += HandleCallback;
    }
    private void HandleCallback(E_NpcType type, int npcID, uint sid)
    {
        var _hero = PlayerDatas.Instance.hero;
        if (_hero != null)
        {
            if (_hero.SelectTarget == null)
            {
                if (sid == ServerInstID)
                {
                    OnClick();
                }
            }
            else
            {
                var _collect = _hero.SelectTarget as GA_NpcClientCollect;
                if (_collect != null)
                {
                    float _chkDistSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, _collect.Pos);
                    // 这里判断是否要走向此对象
                    if (_chkDistSqrt < 4)
                    {
                        if (OnArrive != null)
                        {
                            OnArrive(_collect.ServerInstID, _collect.NpcConfig.NPCID);
                        }
                        var _model = ModelCenter.Instance.GetModel<HazyGrassModel>();
                        if (_model.CanCollectClientNpc(_collect.NpcConfig.NPCID))
                        {
                            _collect.StartCollect();
                        }
                        else
                        {
                            _model.DisplayCollectErrorTip();
                        }
                    }
                    else
                    {
                        _hero.MoveToPosition(_collect.Pos, 1.5f);
                    }
                }
                else
                {
                    if (sid == ServerInstID)
                    {
                        OnClick();
                    }
                }
            }
        }
    }
    protected override void OnUnit()
    {
        base.OnUnit();
        if (m_ArrivedList.Contains(ServerInstID))
        {
            m_ArrivedList.Remove(ServerInstID);
        }
        if (OnLeave != null)
        {
            OnLeave(ServerInstID, NpcConfig.NPCID);
        }
        WindowCenter.Instance.windowAfterOpenEvent -= CheckOpenCollectIcon;
        WindowCenter.Instance.windowAfterCloseEvent -= AfterCloseMainWin;
    }
    private void CheckOpenCollectIcon(Window obj)
    {
        if (obj is MainInterfaceWin)
        {
            m_IsMainWinOpen = true;
            if (NpcConfig.NPCID != GeneralDefine.GatherSoulDZ)
            {
                GA_Hero _hero = PlayerDatas.Instance.hero;
                if (_hero != null)
                {
                    float _distSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, Pos);
                    if (_distSqrt < Mathf.Pow(NpcConfig.ModelRadius + 0.4f + GeneralDefine.CloseNpcDist, 2))
                    {
                        Arrive();
                    }
                }
            }
        }
    }
    private void AfterCloseMainWin(Window obj)
    {
        if (obj is MainInterfaceWin)
        {
            m_IsMainWinOpen = false;
            Leave();
        }
        ClientCollectUtility.Leave(this);
    }
    public override void OnClick()
@@ -146,114 +43,9 @@
        float _chkDistSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, Pos);
        // 这里判断是否要走向此对象
        if (_chkDistSqrt < 4)
        {
            if (OnArrive != null)
            {
                OnArrive(ServerInstID, NpcConfig.NPCID);
            }
            var _model = ModelCenter.Instance.GetModel<HazyGrassModel>();
            if (_model.CanCollectClientNpc(NpcConfig.NPCID))
            {
                StartCollect();
            }
            else
            {
                _model.DisplayCollectErrorTip();
            }
        }
        else
        if (_chkDistSqrt > 4)
        {
            _hero.MoveToPosition(Pos, 1.5f);
        }
    }
    private bool m_StartCollect;
    private float m_CollectTime;
    public void StartCollect()
    {
        if (m_StartCollect)
        {
            return;
        }
        m_CollectTime = 0;
        NormalCollectWin.s_CollectInfo = new PrepareHandler.ClientH0812()
        {
            PlayerID = PlayerDatas.Instance.PlayerId,
            PrepareState = (byte)PrepareHandler.E_PrepareType.pstMissionCollecting,
            MaxTime = 2000,
            PrepareID = NpcConfig.NPCID,
        };
        PrepareHandler.Instance.isPreparing = true;
        WindowCenter.Instance.Open<NormalCollectWin>();
        m_StartCollect = true;
        var _hero = PlayerDatas.Instance.hero;
        if (_hero != null && !_hero.ActorInfo.serverDie)
        {
            _hero.Collect();
        }
    }
    public void StopCollect()
    {
        PrepareHandler.Instance.isPreparing = false;
        WindowCenter.Instance.Close<NormalCollectWin>();
        m_StartCollect = false;
        var _hero = PlayerDatas.Instance.hero;
        if (_hero != null && !_hero.ActorInfo.serverDie)
        {
            if (_hero.IsCollect())
            {
                _hero.IdleImmediate();
            }
        }
    }
    protected override void OnUpdate()
    {
        if (m_StartCollect)
        {
            GA_Hero m_Hero = PlayerDatas.Instance.hero;
            m_CollectTime += Time.deltaTime;
            if (m_CollectTime > 2f)
            {
                StopCollect();
                if (m_Hero != null)
                {
                    if (m_Hero.LockTarget == this)
                    {
                        m_Hero.LockTarget = null;
                    }
                    if (m_Hero.SelectTarget == this)
                    {
                        m_Hero.SelectTarget = null;
                    }
                }
                if (belongEventID != -1)
                {
                    ClientSceneManager.Instance.NpcDead(belongEventID, this, NpcConfig.NPCID);
                }
                else
                {
                    if (OnCollectFinished != null)
                    {
                        OnCollectFinished(ServerInstID);
                    }
                }
                GAMgr.Instance.Release(this);
            }
            if (!m_Hero.IsIdle() && !m_Hero.IsCollect())
            {
                StopCollect();
            }
        }
    }
@@ -278,10 +70,8 @@
    public override void OnUnSelect()
    {
        base.OnUnSelect();
        if (OnLeave != null)
        {
            OnLeave(ServerInstID, NpcConfig.NPCID);
        }
        ClientCollectUtility.Leave(this);
    }
    protected override void OnFixedUpdate()
@@ -302,37 +92,12 @@
            if (_distSqrt < Mathf.Pow(NpcConfig.ModelRadius + 0.4f + GeneralDefine.CloseNpcDist, 2))
            {
                Arrive();
                ClientCollectUtility.Arrive(this);
            }
            else
            {
                Leave();
                ClientCollectUtility.Leave(this);
            }
        }
    }
    public void Arrive()
    {
        if (OnArrive != null)
        {
            OnArrive(ServerInstID, NpcConfig.NPCID);
        }
        if (!m_ArrivedList.Contains(ServerInstID))
        {
            m_ArrivedList.Add(ServerInstID);
        }
    }
    public void Leave()
    {
        if (m_ArrivedList.Contains(ServerInstID))
        {
            if (OnLeave != null)
            {
                OnLeave(ServerInstID, NpcConfig.NPCID);
            }
            m_ArrivedList.Remove(ServerInstID);
        }
    }
}
Fight/Stage/Dungeon/DungeonStage.cs
@@ -109,6 +109,7 @@
        }
        ClientSceneManager.Instance.Init();
        ClientCollectUtility.Init();
        GA_Hero.s_MapSwitching = false;
    }
@@ -150,6 +151,7 @@
        }
        ClientSceneManager.Instance.UnInit();
        ClientCollectUtility.UnInit();
        GAMgr.Instance.UnInit();
        DropItemManager.ReleaseAll();
        ClientDropItemUtility.Instance.ReleaseAll();
@@ -170,7 +172,7 @@
        ClientDropItemUtility.Instance.Update();
        ClientSceneManager.Instance.Update();
        ClientCollectUtility.Update();
        // if (PreFightMission.Instance.IsFinished() == false)
        // {
        //     PreFightMission.Instance.Update();
System/MainInterfacePanel/MainButtonMisc.cs
@@ -61,8 +61,8 @@
            PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;
            GA_NpcCollect.OnArrive += OnArriveCollectNPC;
            GA_NpcCollect.OnLeave += OnLeaveCollectNpc;
            GA_NpcClientCollect.OnArrive += OnArriveCollectNPC;
            GA_NpcClientCollect.OnLeave += OnLeaveCollectNpc;
            ClientCollectUtility.OnShowCollectIcon += OnArriveCollectNPC;
            ClientCollectUtility.OnHideCollectIcon += OnLeaveCollectNpc;
            wishModel.UpdateWishAwardEvent += UpdateWishAwardImag;
            purchaseModel.UpdateNewMysticalEvent += UpdateMysticalPurchaseImag;
            assistModel.UpdateRedpointEvent += UpdateDungeonAssistImag;
@@ -87,6 +87,8 @@
            PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;
            GA_NpcCollect.OnArrive -= OnArriveCollectNPC;
            GA_NpcCollect.OnLeave -= OnLeaveCollectNpc;
            ClientCollectUtility.OnShowCollectIcon -= OnArriveCollectNPC;
            ClientCollectUtility.OnHideCollectIcon -= OnLeaveCollectNpc;
            wishModel.UpdateWishAwardEvent -= UpdateWishAwardImag;
            purchaseModel.UpdateNewMysticalEvent -= UpdateMysticalPurchaseImag;
            assistModel.UpdateRedpointEvent -= UpdateDungeonAssistImag;