package net.scapeemulator.game.model.player.inventory; import net.scapeemulator.game.model.player.Item; import net.scapeemulator.game.model.player.Player; import net.scapeemulator.game.model.player.SlottedItem; import net.scapeemulator.game.msg.impl.inter.InterfaceItemsMessage; import net.scapeemulator.game.msg.impl.inter.InterfaceResetItemsMessage; import net.scapeemulator.game.msg.impl.inter.InterfaceSlottedItemsMessage; public final class InventoryMessageListener implements InventoryListener { private final Player player; private final int id, child, type; public InventoryMessageListener(Player player, int id, int child, int type) { this.player = player; this.id = id; this.child = child; this.type = type; } @Override public void itemChanged(Inventory inventory, int slot, Item item, Item oldItem) { SlottedItem[] items = new SlottedItem[] { new SlottedItem(slot, item) }; player.send(new InterfaceSlottedItemsMessage(id, child, type, items)); } @Override public void itemsChanged(Inventory inventory) { if (inventory.isEmpty() && id >= 0 && child >= 0) { // TODO: consider how this interacts with the 'type'? player.send(new InterfaceResetItemsMessage(id, child)); } else { Item[] items = inventory.toArray(); player.send(new InterfaceItemsMessage(id, child, type, items)); } } @Override public void capacityExceeded(Inventory inventory) { /* empty */ } }