//This code create by CodeEngine using System; using Module.Log; using Google.ProtocolBuffers; using System.Collections; using Games.GlobeDefine; using Games.LogicObj; using UnityEngine; using Games.Scene; namespace SPacket.SocketInstance { public class GC_MOVEHandler : Ipacket { public uint Execute(PacketDistributed ipacket) { GC_MOVE packet = (GC_MOVE)ipacket; if (null == packet) return (uint)PACKET_EXE.PACKET_EXE_ERROR; //临时代码,先返回,调试的时候打开 //return (uint)PACKET_EXE.PACKET_EXE_CONTINUE; if(packet.posxList.Count<=0 && packet.poszList.Count<=0) return (uint)PACKET_EXE.PACKET_EXE_CONTINUE; //判断ServerID if (packet.Serverid == GlobeVar.INVALID_ID) { return (uint)PACKET_EXE.PACKET_EXE_CONTINUE; } //查找该NPC Obj_Character obj = Singleton<ObjManager>.GetInstance().FindObjCharacterInScene(packet.Serverid); if (null == obj) { //if (packet.posxList.Count > 0 && packet.poszList.Count > 0) // ObjManager.Instance.MoveHidePlayer(packet.Serverid, packet.posxList[0].ToClientPos(), packet.poszList[0].ToClientPos()); return (uint) PACKET_EXE.PACKET_EXE_CONTINUE; } //主玩家仅在跟随队伍时响应Move协议 if (obj.ObjType == GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER && GameManager.gameManager.PlayerDataPool.TeamInfo.GetFollowState() != TeamFollowState.followMove) { return (uint)PACKET_EXE.PACKET_EXE_CONTINUE; } var destPos = Vector2.zero; if (packet.posxList.Count > 0) destPos.x = packet.posxList[0]; if (packet.poszList.Count > 0) destPos.y = packet.poszList[0]; destPos = destPos.ToClientPos(); Vector2? startPos = null; if (packet.HasSposx && packet.HasSposz) { startPos = new Vector2(packet.Sposx, packet.Sposz); startPos = startPos.Value.ToClientPos(); } obj.SyncMove(startPos, destPos, MoveState.Move); return (uint)PACKET_EXE.PACKET_EXE_CONTINUE; } } }