feat : GameServer 패킷 메시지 단위 분할 / 플레이어 정보 변환 기능 변경
This commit is contained in:
42
MMOTestServer/MMOserver/Game/Service/StatePlayerHandler.cs
Normal file
42
MMOTestServer/MMOserver/Game/Service/StatePlayerHandler.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using LiteNetLib;
|
||||
using MMOserver.Game.Channel;
|
||||
using MMOserver.Packet;
|
||||
using ProtoBuf;
|
||||
using ServerLib.Packet;
|
||||
using ServerLib.Service;
|
||||
|
||||
namespace MMOserver.Game.Service;
|
||||
|
||||
/*
|
||||
* 채널 내 플레이어 정보 갱신 메시지 핸들러
|
||||
*/
|
||||
public partial class GameServer : ServerBase
|
||||
{
|
||||
private void OnStatePlayer(NetPeer peer, int hashKey, byte[] payload)
|
||||
{
|
||||
StatePlayerPacket packet = Serializer.Deserialize<StatePlayerPacket>(new ReadOnlyMemory<byte>(payload));
|
||||
|
||||
ChannelManager cm = ChannelManager.Instance;
|
||||
int channelId = cm.HasUser(hashKey);
|
||||
if (channelId < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 채널 내 플레이어 HP/MP 상태 갱신
|
||||
Player? player = cm.GetChannel(channelId).GetPlayer(hashKey);
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.Hp = packet.Hp;
|
||||
player.MaxHp = packet.MaxHp;
|
||||
player.Mp = packet.Mp;
|
||||
player.MaxMp = packet.MaxMp;
|
||||
|
||||
// 같은 맵 유저들에게 스테이트 브로드캐스트 (나 제외)
|
||||
byte[] data = PacketSerializer.Serialize((ushort)PacketCode.STATE_PLAYER, packet);
|
||||
BroadcastToMap(channelId, player.CurrentMapId, data, peer);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user