59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using System;
|
|
using TrueCraft.API.Networking;
|
|
using TrueCraft.Core.Networking.Packets;
|
|
using TrueCraft.API.Windows;
|
|
using TrueCraft.API;
|
|
using TrueCraft.Core.Windows;
|
|
using TrueCraft.Core.Logic;
|
|
using TrueCraft.API.Logic;
|
|
|
|
namespace TrueCraft.Client.Handlers
|
|
{
|
|
internal static class InventoryHandlers
|
|
{
|
|
public static void HandleWindowItems(IPacket _packet, MultiplayerClient client)
|
|
{
|
|
var packet = (WindowItemsPacket)_packet;
|
|
if (packet.WindowID == 0)
|
|
client.Inventory.SetSlots(packet.Items);
|
|
else
|
|
client.CurrentWindow.SetSlots(packet.Items);
|
|
}
|
|
|
|
public static void HandleSetSlot(IPacket _packet, MultiplayerClient client)
|
|
{
|
|
var packet = (SetSlotPacket)_packet;
|
|
IWindow window = null;
|
|
if (packet.WindowID == 0)
|
|
window = client.Inventory;
|
|
else
|
|
window = client.CurrentWindow;
|
|
if (window != null)
|
|
{
|
|
if (packet.SlotIndex >= 0 && packet.SlotIndex < window.Length)
|
|
{
|
|
window[packet.SlotIndex] = new ItemStack(packet.ItemID, packet.Count, packet.Metadata);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void HandleOpenWindowPacket(IPacket _packet, MultiplayerClient client)
|
|
{
|
|
var packet = (OpenWindowPacket)_packet;
|
|
IWindow window = null;
|
|
switch (packet.Type)
|
|
{
|
|
case 1: // Crafting bench window
|
|
window = new CraftingBenchWindow(client.CraftingRepository, client.Inventory);
|
|
break;
|
|
}
|
|
window.ID = packet.WindowID;
|
|
client.CurrentWindow = window;
|
|
}
|
|
|
|
public static void HandleCloseWindowPacket(IPacket _packet, MultiplayerClient client)
|
|
{
|
|
client.CurrentWindow = null;
|
|
}
|
|
}
|
|
} |