using vnxbqy.UI;
|
|
using UnityEngine;
|
using System.Collections.Generic;
|
using System.Collections;
|
|
public class MapTransfer : MonoBehaviour
|
{
|
public int TransportID;
|
public maptransportConfig transportModel;
|
private List<uint> m_InServerPlayerID = new List<uint>();
|
|
private void FixedUpdate()
|
{
|
List<GActor> _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<MapModel>();
|
|
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<WorldMapWin>())
|
{
|
WindowCenter.Instance.Open<WorldMapWin>();
|
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);
|
}
|
}
|