Server
Packet Handler
📄 PacketHandler.cs
using Google.Protobuf;
using Google.Protobuf.Protocol;
using Server;
using Server.Game;
using ServerCore;
using System;
using System.Collections.Generic;
using System.Text;
class PacketHandler
{
public static void C_MoveHandler(PacketSession session, IMessage packet)
{
C_Move movePacket = packet as C_Move;
ClientSession clientSession = session as ClientSession;
Console.WriteLine($"C_Move ({movePacket.PosInfo.PosX}, {movePacket.PosInfo.PosY})");
Player player = clientSession.MyPlayer;
if (player == null)
return;
GameRoom room = player.Room;
if (room == null)
return;
room.Push(room.HandleMove, player, movePacket);
}
public static void C_SkillHandler(PacketSession session, IMessage packet)
{
C_Skill skillPacket = packet as C_Skill;
ClientSession clientSession = session as ClientSession;
Player player = clientSession.MyPlayer;
if (player == null)
return;
GameRoom room = player.Room;
if (room == null)
return;
room.Push(room.HandleSkill, player, skillPacket);
}
}
Client
Packet Handler
📄 PacketHandler.cs
using Google.Protobuf;
using Google.Protobuf.Protocol;
using ServerCore;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class PacketHandler
{
public static void S_EnterGameHandler(PacketSession session, IMessage packet)
{
S_EnterGame enterGamePacket = packet as S_EnterGame;
Managers.Object.Add(enterGamePacket.Player, myPlayer: true);
}
public static void S_LeaveGameHandler(PacketSession session, IMessage packet)
{
S_LeaveGame leaveGameHandler = packet as S_LeaveGame;
Managers.Object.Clear();
}
public static void S_SpawnHandler(PacketSession session, IMessage packet)
{
S_Spawn spawnPacket = packet as S_Spawn;
foreach (ObjectInfo obj in spawnPacket.Objects)
{
Managers.Object.Add(obj, myPlayer: false);
}
}
public static void S_DespawnHandler(PacketSession session, IMessage packet)
{
S_Despawn despawnPacket = packet as S_Despawn;
foreach (int id in despawnPacket.ObjectIds)
{
Managers.Object.Remove(id);
}
}
public static void S_MoveHandler(PacketSession session, IMessage packet)
{
S_Move movePacket = packet as S_Move;
GameObject go = Managers.Object.FindById(movePacket.ObjectId);
if (go == null)
return;
if (Managers.Object.MyPlayer.Id == movePacket.ObjectId)
return;
BaseController bc = go.GetComponent<BaseController>();
if (bc == null)
return;
bc.PosInfo = movePacket.PosInfo;
}
public static void S_SkillHandler(PacketSession session, IMessage packet)
{
S_Skill skillPacket = packet as S_Skill;
GameObject go = Managers.Object.FindById(skillPacket.ObjectId);
if (go == null)
return;
CreatureController cc = go.GetComponent<CreatureController>();
if (cc != null)
{
cc.UseSkill(skillPacket.Info.SkillId);
}
}
public static void S_ChangeHpHandler(PacketSession session, IMessage packet)
{
S_ChangeHp changePacket = packet as S_ChangeHp;
GameObject go = Managers.Object.FindById(changePacket.ObjectId);
if (go == null)
return;
CreatureController cc = go.GetComponent<CreatureController>();
if (cc != null)
{
cc.Hp = changePacket.Hp;
}
}
public static void S_DieHandler(PacketSession session, IMessage packet)
{
S_Die diePacket = packet as S_Die;
GameObject go = Managers.Object.FindById(diePacket.ObjectId);
if (go == null)
return;
CreatureController cc = go.GetComponent<CreatureController>();
if (cc != null)
{
cc.Hp = 0;
cc.OnDead();
}
}
}