TrueCraft/TrueCraft.Client/Handlers/InventoryHandlers.cs
2015-10-09 08:33:04 -04:00

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