| Fight/ClientCollectUtility.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/ClientCollectUtility.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/GameActor/GA_NpcClientCollect.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/Stage/Dungeon/DungeonStage.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/MainInterfacePanel/MainButtonMisc.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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;