package com.weem.epicinventor.hud;
import com.weem.epicinventor.*;
import com.weem.epicinventor.inventory.*;
import com.weem.epicinventor.placeable.*;
import com.weem.epicinventor.utility.*;
import java.awt.*;
public class HUDPlayerContainer extends HUD {
private PlayerContainer playerContainer;
private final static int INVENTORY_ROWS = 3;
private final static int INVENTORY_COLS = 5;
private final static int INV_SLOT_START_X = 10;
private final static int INV_SLOT_START_Y = 46;
private final static int INV_SLOT_WIDTH = 40;
private final static int INV_SLOT_HEIGHT = 40;
private final static int INV_SLOT_SPACING_X = 3;
private final static int INV_SLOT_SPACING_Y = 3;
private final static int INV_SLOT_TEXT_OFFSET_0 = 32;
private final static int INV_SLOT_TEXT_OFFSET_10 = 25;
private final static int INV_SLOT_TEXT_OFFSET_100 = 18;
private final static int INV_SLOT_TEXT_Y = 37;
private final static int QUICK_LOOT_WIDTH = 31;
private final static int QUICK_LOOT_HEIGHT = 32;
private final static int QUICK_LOOT_X = 154;
private final static int QUICK_LOOT_Y = 9;
private final static int BUTTON_CLOSE_WIDTH = 42;
private final static int BUTTON_CLOSE_HEIGHT = 42;
private final static int BUTTON_CLOSE_X = 185;
private final static int BUTTON_CLOSE_Y = 0;
public HUDPlayerContainer(HUDManager hm, PlayerContainer pc, Registry rg, int x, int y, int w, int h) {
super(hm, rg, x, y, w, h);
playerContainer = pc;
int totalRows = (int) Math.ceil((float) playerContainer.getInventorySize() / (float) INVENTORY_COLS);
if (totalRows >= 1 && totalRows <= 3) {
setImage("HUD/PlayerContainer/BG" + totalRows);
} else {
setImage("HUD/PlayerContainer/BG");
}
//inventory slots
int slotCount = 0;
int slotX, slotY = 0;
HUDArea hudArea = null;
for (int row = 0; row < totalRows; row++) {
for (int col = 0; col < INVENTORY_COLS; col++) {
slotX = INV_SLOT_START_X + (col * INV_SLOT_WIDTH) + (col * INV_SLOT_SPACING_X);
slotY = INV_SLOT_START_Y + (row * INV_SLOT_HEIGHT) + (row * INV_SLOT_SPACING_Y);
hudArea = addArea(slotX, slotY, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "slot");
hudArea.setFont("SansSerif", Font.BOLD, 12);
hudArea.setImage("HUD/PlayerContainer/Slot");
slotCount++;
if (slotCount >= playerContainer.getInventorySize()) {
break;
}
}
}
//quickloot
hudArea = addArea(QUICK_LOOT_X, QUICK_LOOT_Y, QUICK_LOOT_WIDTH, QUICK_LOOT_HEIGHT, "quickloot");
hudArea.setImage("HUD/Common/QuickLoot");
//close
hudArea = addArea(BUTTON_CLOSE_X, BUTTON_CLOSE_Y, BUTTON_CLOSE_WIDTH, BUTTON_CLOSE_HEIGHT, "close");
hudArea.setImage("HUD/PlayerContainer/ButtonClose");
shouldRender = false;
isContainer = true;
}
@Override
public void update() {
if (shouldRender) {
HUDArea hudArea;
//update slots
for (int i = 0; i < hudAreas.size(); i++) {
hudArea = hudAreas.get(i);
if (hudArea.getType().equals("slot")) {
String hudAreaImage = registry.getPlayerContainerInventorySlotImage(playerContainer, i);
if (hudAreaImage != null) {
hudArea.setFGImage(hudAreaImage);
if (hudArea.isInside(registry.getMousePosition())) {
registry.setStatusText(registry.getPlayerContainerInventorySlotDescription(playerContainer, i));
}
}
int hudAreaQty = registry.getPlayerContainerInventorySlotQty(playerContainer, i);
if (hudAreaQty > 1) {
hudArea.setText(String.valueOf(hudAreaQty));
if (hudAreaQty < 10) {
hudArea.setTextXY(INV_SLOT_TEXT_OFFSET_0, INV_SLOT_TEXT_Y);
} else if (hudAreaQty < 100) {
hudArea.setTextXY(INV_SLOT_TEXT_OFFSET_10, INV_SLOT_TEXT_Y);
} else {
hudArea.setTextXY(INV_SLOT_TEXT_OFFSET_100, INV_SLOT_TEXT_Y);
}
} else {
hudArea.setText("");
hudArea.setTextXY(INV_SLOT_TEXT_OFFSET_0, INV_SLOT_TEXT_Y);
}
}
}
//check to see if player is too far away
if (registry.getPlayerManager().getCurrentPlayer().getCenterPoint().distance(playerContainer.getCenterPoint()) > registry.getMaxContainerDistance()) {
shouldRender = false;
}
}
if (playerContainer == null) {
isDirty = true;
} else {
if (playerContainer.getIsDirty()) {
isDirty = true;
}
}
super.update();
}
@Override
public void HUDAreaClicked(HUDArea ha) {
HUDArea hudArea = null;
int selectedStart = registry.getInvSlotFrom();
for (int i = 0; i < hudAreas.size(); i++) {
hudArea = hudAreas.get(i);
if (hudArea == ha) {
selectedStart = i;
hudManager.setCursorImageAndText(hudArea.getFGImage(), hudArea.getText());
if (hudArea.getType().equals("close")) {
shouldRender = false;
} else if (hudArea.getType().equals("quickloot")) {
SoundClip cl = new SoundClip("Misc/Click");
playerContainer.quickLoot();
}
}
}
registry.setInvSlotFrom("PlayerContainer", playerContainer, selectedStart);
}
@Override
public void HUDAreaReleased(HUDArea ha) {
if (shouldRender) {
int selectedStart = registry.getInvSlotFrom();
if (selectedStart > -1) {
HUDArea hudAreaTo = null;
for (int i = 0; i < hudAreas.size(); i++) {
hudAreaTo = hudAreas.get(i);
if (hudAreaTo == ha) {
if (hudAreaTo.getType().equals("slot") && selectedStart >= 0) {
String itemName = hudManager.playerGetInventoryItemName(selectedStart);
int qty = hudManager.playerGetInventoryQty(selectedStart);
int level = hudManager.playerGetInventoryLevel(selectedStart);
if (registry.getInvHUDFrom().equals("PlayerContainer")) {
if (playerContainer != null) {
playerContainer.swapInventory(selectedStart, i);
}
} else if (registry.getInvHUDFrom().equals("QuickBarRobot")) {
Inventory robotInventory = registry.getRobotInventory();
itemName = robotInventory.getNameFromSlot(selectedStart);
qty = robotInventory.getQtyFromSlot(selectedStart);
if (!itemName.isEmpty() && qty > 0 && robotInventory != null) {
if (playerContainer.addItem(i, itemName, qty, level)) {
robotInventory.deleteInventory(selectedStart, 0);
}
}
} else if (registry.getInvHUDFrom().equals("QuickBar")) {
if (!registry.getIsQuickBarLocked()) {
if (!itemName.isEmpty() && qty > 0 && playerContainer != null) {
if(playerContainer.addItem(i, itemName, qty, level)) {
hudManager.playerDeleteInventory(selectedStart, 0);
}
}
}
} else if (registry.getInvHUDFrom().equals("MasterHead")) {
if (playerContainer != null) {
if (playerContainer.addItem(i, registry.getPlaverHeadSlotName(registry.getPlayerManager().getCurrentPlayer()), 1, registry.getPlaverHeadSlotLevel(registry.getPlayerManager().getCurrentPlayer()))) {
hudManager.playerEquipHead("", 1);
}
}
} else if (registry.getInvHUDFrom().equals("MasterChest")) {
if (playerContainer != null) {
if (playerContainer.addItem(i, registry.getPlaverChestSlotName(registry.getPlayerManager().getCurrentPlayer()), 1, registry.getPlaverChestSlotLevel(registry.getPlayerManager().getCurrentPlayer()))) {
hudManager.playerEquipChest("", 1);
}
}
} else if (registry.getInvHUDFrom().equals("MasterLegs")) {
if (playerContainer != null) {
if (playerContainer.addItem(i, registry.getPlaverLegsSlotName(registry.getPlayerManager().getCurrentPlayer()), 1, registry.getPlaverLegsSlotLevel(registry.getPlayerManager().getCurrentPlayer()))) {
hudManager.playerEquipLegs("", 1);
}
}
} else if (registry.getInvHUDFrom().equals("MasterFeet")) {
if (playerContainer != null) {
if (playerContainer.addItem(i, registry.getPlaverFeetSlotName(registry.getPlayerManager().getCurrentPlayer()), 1, registry.getPlaverFeetSlotLevel(registry.getPlayerManager().getCurrentPlayer()))) {
hudManager.playerEquipFeet("", 1);
}
}
} else {
if (!itemName.isEmpty() && qty > 0 && playerContainer != null) {
if (playerContainer.addItem(i, itemName, qty, level)) {
hudManager.playerDeleteInventory(selectedStart, 0);
}
}
}
}
}
}
}
registry.setInvSlotFrom("", selectedStart);
}
}
}