using vnxbqy.UI; using UnityEngine; using System.Collections.Generic; using System.Collections; public class MapTransfer : MonoBehaviour { public int TransportID; public maptransportConfig transportModel; private List m_InServerPlayerID = new List(); private void FixedUpdate() { List _actorList = GAMgr.Instance.GetGroupList(E_ActorGroup.Player); if (_actorList == null) { return; } GActorFight _fight = null; float _chkDistSqrt; for (int i = 0; i < _actorList.Count; ++i) { _fight = _actorList[i] as GActorFight; if (_fight == null) { continue; } _chkDistSqrt = MathUtility.DistanceSqrtXZ(transform.position, _actorList[i].Pos); if (_chkDistSqrt < 3) { if (m_InServerPlayerID.Contains(_actorList[i].ServerInstID)) { continue; } m_InServerPlayerID.Add(_actorList[i].ServerInstID); _fight.ShowOrHideModel(false); _fight.ReleaseName(); } else { if (m_InServerPlayerID.Contains(_actorList[i].ServerInstID)) { _fight.ShowOrHideModel(true); _fight.RequestName(); m_InServerPlayerID.Remove(_actorList[i].ServerInstID); } } } } private void OnTriggerEnter(Collider other) { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero == null) { return; } // MapTransferUtility.Instance.Clear(); _hero.IdleImmediate(); _hero.Behaviour.StopHandupAI(); _hero.Behaviour.StopKillUntilDieAI(); MapModel _model = ModelCenter.Instance.GetModel(); if (transportModel.TransportType == 1) { if (_model.IsMapUnlocked(transportModel.TargetMapID)) { C0807_tagCChangeMap _proto = new C0807_tagCChangeMap(); _proto.TransportID = TransportID; GameNetSystem.Instance.SendInfo(_proto); } else { SysNotifyMgr.Instance.ShowTip("Map_Delivery"); } } else if (transportModel.TransportType == 2) { if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(); if (_hero.State == E_ActorState.AutoRun) { _hero.StopPathFind(); } _hero.IdleImmediate(); StartCoroutine(_DelayResetPos()); } } } private void OnDisable() { m_InServerPlayerID.Clear(); m_InServerPlayerID = null; transportModel = null; } IEnumerator _DelayResetPos() { yield return WaitingForSecondConst.WaitMS1000; var _hero = PlayerDatas.Instance.hero; if (_hero == null) { yield break; } _hero.InitBornPos((ushort)transportModel.OutPosX, (ushort)transportModel.OutPosY); _hero.StopPathFind(); MapTransferUtility.Instance.Clear(); MapTransferUtility.Send_WorldTransfer(PlayerDatas.Instance.baseData.MapID, new Vector3(transportModel.OutPosX, 0, transportModel.OutPosY), MapTransferType.BigMapTransport); } }