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 HUDFarm extends HUD {
private Farm farm;
private final static int INVENTORY_ROWS = 1;
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 HUDFarm(HUDManager hm, Farm f, Registry rg, int x, int y, int w, int h) {
super(hm, rg, x, y, w, h);
farm = f;
int totalRows = (int) Math.ceil((float) f.getInventorySize() / (float) INVENTORY_COLS);
if (totalRows >= 1 && totalRows <= 3) {
setImage("HUD/Farm/BG" + totalRows);
} else {
setImage("HUD/Farm/BG");
}
//inventory slots
int slotCount = 0;
int slotX, slotY = 0;
HUDArea hudArea = null;
int row = 0;
for (int col = 0; col < f.getInventorySize(); 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/Farm/Slot");
slotCount++;
if (slotCount >= f.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/Farm/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.getFarmInventorySlotImage(farm, i);
if (hudAreaImage != null) {
hudArea.setFGImage(hudAreaImage);
if (hudArea.isInside(registry.getMousePosition())) {
registry.setStatusText(registry.getFarmInventorySlotDescription(farm, i));
}
}
int hudAreaQty = registry.getFarmInventorySlotQty(farm, 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(farm.getCenterPoint()) > registry.getMaxContainerDistance()) {
shouldRender = false;
farm.startTransformation();
}
}
if (farm == null) {
isDirty = true;
} else {
if (farm.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")) {
farm.startTransformation();
shouldRender = false;
} else if (hudArea.getType().equals("quickloot")) {
SoundClip cl = new SoundClip("Misc/Click");
farm.quickLoot();
}
}
}
registry.setInvSlotFrom("Farm", farm, 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) {
if (farm.getInventory().getQtyFromSlot(i) == 0) {
String itemName = hudManager.playerGetInventoryItemName(selectedStart);
int qty = hudManager.playerGetInventoryQty(selectedStart);
int level = hudManager.playerGetInventoryLevel(selectedStart);
if (registry.getInvHUDFrom().equals("Farm")) {
if (farm != null) {
farm.swapInventory(selectedStart, i);
}
} else {
if (itemName.contains("Seed")) {
if (registry.getInvHUDFrom().equals("QuickBar")) {
if (!registry.getIsQuickBarLocked()) {
if (!itemName.isEmpty() && qty > 0 && farm != null) {
if (farm.addItem(i, itemName, 1, level, false)) {
hudManager.playerDeleteInventory(selectedStart, 1);
}
}
}
} else {
if (!itemName.isEmpty() && qty > 0 && farm != null) {
if (farm.addItem(i, itemName, 1, level, false)) {
hudManager.playerDeleteInventory(selectedStart, 1);
}
}
}
}
}
}
}
}
}
}
registry.setInvSlotFrom("", selectedStart);
}
}
@Override
public void setShouldRender(boolean sr) {
shouldRender = sr;
if (!shouldRender) {
farm.startTransformation();
}
}
}