Files
JJBB/Assets/Project/Script/GameLogic/NetWork/PacketHandler/GC_MOVEHandler.cs
2024-08-23 15:49:34 +08:00

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;
}
}
}