62 lines
2.3 KiB
C#
62 lines
2.3 KiB
C#
//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;
|
|
}
|
|
}
|
|
} |