TrueCraft/TrueCraft.Client/Handlers/PacketHandlers.cs
Drew DeVault 5086565c41 Flesh out launcher some more
The client now uses the username you provide during login in the
launcher. Of note is that the actual login flow is not implemented -
there is no authentication.
2015-05-30 16:45:43 -06:00

57 lines
2.3 KiB
C#

using System;
using TrueCraft.API.Networking;
using TrueCraft.Core.Networking.Packets;
using TrueCraft.Core.Networking;
using TrueCraft.Client.Events;
using TrueCraft.API;
using System.Diagnostics;
namespace TrueCraft.Client.Handlers
{
internal static class PacketHandlers
{
public static void RegisterHandlers(MultiplayerClient client)
{
client.RegisterPacketHandler(new HandshakeResponsePacket().ID, HandleHandshake);
client.RegisterPacketHandler(new ChatMessagePacket().ID, HandleChatMessage);
client.RegisterPacketHandler(new SetPlayerPositionPacket().ID, HandlePositionAndLook);
client.RegisterPacketHandler(new LoginResponsePacket().ID, HandleLoginResponse);
client.RegisterPacketHandler(new ChunkPreamblePacket().ID, ChunkHandler.HandleChunkPreamble);
client.RegisterPacketHandler(new ChunkDataPacket().ID, ChunkHandler.HandleChunkData);
client.RegisterPacketHandler(new BlockChangePacket().ID, ChunkHandler.HandleBlockChange);
}
public static void HandleChatMessage(IPacket _packet, MultiplayerClient client)
{
var packet = (ChatMessagePacket)_packet;
client.OnChatMessage(new ChatMessageEventArgs(packet.Message));
}
public static void HandleHandshake(IPacket _packet, MultiplayerClient client)
{
var packet = (HandshakeResponsePacket)_packet;
if (packet.ConnectionHash != "-")
{
Console.WriteLine("Online mode is not supported");
Process.GetCurrentProcess().Kill();
}
// TODO: Authentication
client.QueuePacket(new LoginRequestPacket(PacketReader.Version, client.User.Username));
}
public static void HandleLoginResponse(IPacket _packet, MultiplayerClient client)
{
client.QueuePacket(new PlayerGroundedPacket());
}
public static void HandlePositionAndLook(IPacket _packet, MultiplayerClient client)
{
var packet = (SetPlayerPositionPacket)_packet;
client._Position = new Vector3(packet.X, packet.Y, packet.Z);
client.QueuePacket(packet);
client.LoggedIn = true;
// TODO: Pitch and yaw
}
}
}