package com.weem.epicinventor.hud; import com.weem.epicinventor.*; import com.weem.epicinventor.actor.*; import com.weem.epicinventor.inventory.*; import com.weem.epicinventor.item.*; import com.weem.epicinventor.placeable.*; import java.awt.*; import java.util.*; public class HUDMaster extends HUD { private final static int INVENTORY_ROWS = 8; private final static int INVENTORY_COLS = 5; private final static int INV_SLOT_START_X = 11; private final static int INV_SLOT_START_Y = 37; 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 INV_TRASH_START_X = 11; private final static int INV_TRASH_START_Y = 388; private final static int INV_TRASH_WIDTH = 212; private final static int INV_TRASH_HEIGHT = 25; private final static int PAPERDOLL_X = 328; private final static int PAPERDOLL_Y = 65; private final static int PAPERDOLL_HEAD_X = 270; private final static int PAPERDOLL_HEAD_Y = 54; private final static int PAPERDOLL_CHEST_X = 401; private final static int PAPERDOLL_CHEST_Y = 54; private final static int PAPERDOLL_LEGS_X = 270; private final static int PAPERDOLL_LEGS_Y = 117; private final static int PAPERDOLL_FEET_X = 401; private final static int PAPERDOLL_FEET_Y = 117; private final static int VALUE_WIDTH = 81; private final static int VALUE_HEIGHT = 28; private final static int HP_X = 272; private final static int HP_Y = 194; private final static int HP_TEXT_OFFSET_X = 5; private final static int HP_TEXT_OFFSET_Y = 20; private final static int AP_X = 363; private final static int AP_Y = 194; private final static int AP_TEXT_OFFSET_X = 5; private final static int AP_TEXT_OFFSET_Y = 20; private final static int ARROW_LEFT_X = 502; private final static int ARROW_LEFT_Y = 57; private final static int ARROW_RIGHT_X = 723; private final static int ARROW_RIGHT_Y = 57; private final static int ARROW_WIDTH = 7; private final static int ARROW_HEIGHT = 15; private final static int CRAFT_LEFT1_X = 519; private final static int CRAFT_LEFT1_Y = 50; private final static int CRAFT_LEFT1_SIZE = 30; private final static int CRAFT_LEFT2_X = 553; private final static int CRAFT_LEFT2_Y = 52; private final static int CRAFT_LEFT2_SIZE = 36; private final static int CRAFT_MAIN_X = 596; private final static int CRAFT_MAIN_Y = 56; private final static int CRAFT_RIGHT1_X = 643; private final static int CRAFT_RIGHT1_Y = 52; private final static int CRAFT_RIGHT1_SIZE = 36; private final static int CRAFT_RIGHT2_X = 683; private final static int CRAFT_RIGHT2_Y = 50; private final static int CRAFT_RIGHT2_SIZE = 30; private final static int REQUIRE1_X = 521; private final static int REQUIRE1_Y = 127; private final static int REQUIRE2_X = 571; private final static int REQUIRE2_Y = 127; private final static int REQUIRE3_X = 621; private final static int REQUIRE3_Y = 127; private final static int REQUIRE4_X = 671; private final static int REQUIRE4_Y = 127; private final static int CREATE_X = 562; private final static int CREATE_Y = 180; private final static int CREATE_WIDTH = 108; private final static int CREATE_HEIGHT = 41; private final static int CAT_PLACEABLES_X = 489; private final static int CAT_PLACEABLES_Y = 260; private final static int CAT_PLACEABLES_WIDTH = 87; private final static int CAT_ITEMS_X = 580; private final static int CAT_ITEMS_Y = 260; private final static int CAT_ITEMS_WIDTH = 67; private final static int CAT_TECH_X = 650; private final static int CAT_TECH_Y = 260; private final static int CAT_TECH_WIDTH = 92; private final static int CAT_HEIGHT = 31; private final static int TYPE_WEAPONS_X = 489; private final static int TYPE_WEAPONS_Y = 318; private final static int TYPE_WEAPONS_WIDTH = 80; private final static int TYPE_ARMOR_X = 576; private final static int TYPE_ARMOR_Y = 318; private final static int TYPE_ARMOR_WIDTH = 80; private final static int TYPE_OTHER_X = 662; private final static int TYPE_OTHER_Y = 318; private final static int TYPE_OTHER_WIDTH = 80; private final static int TYPE_HEIGHT = 31; private final static int HAVE_MATERIALS_X = 540; private final static int HAVE_MATERIALS_Y = 379; private final static int HAVE_MATERIALS_WIDTH = 152; private final static int HAVE_MATERIALS_HEIGHT = 31; private boolean isButtonCreateEnabled = false; private boolean isButtonPlaceablesEnabled = false; private boolean isButtonItemsEnabled = true; private boolean isButtonAttachmentsEnabled = false; private boolean isButtonPDevelopmentEnabled = true; private boolean isButtonPCombatEnabled = true; private boolean isButtonPOtherEnabled = true; private boolean isButtonIWeaponsEnabled = true; private boolean isButtonIArmorEnabled = true; private boolean isButtonIOtherEnabled = true; private boolean isButtonTDevelopmentEnabled = true; private boolean isButtonHaveMaterialsEnabled = false; private ArrayList<String> matchingItems; private ArrayList<String> requirements; private int currentItem = 0; private boolean shiftKeyPressed = false; private String[] craftDescriptions; private String[] requirementsDescriptions; public HUDMaster(HUDManager hm, Registry rg, int x, int y, int w, int h) { super(hm, rg, x, y, w, h); setImage("HUD/Master/BG"); //inventory slots int slotX, slotY = 0; HUDArea hudArea = null; for (int row = 0; row < INVENTORY_ROWS; 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, "inventory"); hudArea.setFont("SansSerif", Font.BOLD, 12); hudArea.setImage("HUD/Master/Slot"); } } //trash hudArea = addArea(INV_TRASH_START_X, INV_TRASH_START_Y, INV_TRASH_WIDTH, INV_TRASH_HEIGHT, "trash"); hudArea.setImage("HUD/Master/Trash"); //paperdoll hudArea = addArea(PAPERDOLL_HEAD_X, PAPERDOLL_HEAD_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "head"); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(PAPERDOLL_CHEST_X, PAPERDOLL_CHEST_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "chest"); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(PAPERDOLL_LEGS_X, PAPERDOLL_LEGS_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "legs"); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(PAPERDOLL_FEET_X, PAPERDOLL_FEET_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "feet"); hudArea.setImage("HUD/Master/Slot"); //hp hudArea = addArea(HP_X, HP_Y, VALUE_WIDTH, VALUE_HEIGHT, "hp"); hudArea.setFont("SansSerif", Font.BOLD, 16); hudArea.setImage("HUD/Master/Value"); //armor hudArea = addArea(AP_X, AP_Y, VALUE_WIDTH, VALUE_HEIGHT, "ap"); hudArea.setFont("SansSerif", Font.BOLD, 16); hudArea.setImage("HUD/Master/Value"); //arrows hudArea = addArea(ARROW_LEFT_X, ARROW_LEFT_Y, ARROW_WIDTH, ARROW_HEIGHT, "arrow_left"); hudArea.setImage("HUD/Master/ArrowLeft"); hudArea = addArea(ARROW_RIGHT_X, ARROW_RIGHT_Y, ARROW_WIDTH, ARROW_HEIGHT, "arrow_right"); hudArea.setImage("HUD/Master/ArrowRight"); //crafting items hudArea = addArea(CRAFT_LEFT1_X, CRAFT_LEFT1_Y, CRAFT_LEFT1_SIZE, CRAFT_LEFT1_SIZE, "craft1"); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(CRAFT_LEFT2_X, CRAFT_LEFT2_Y, CRAFT_LEFT2_SIZE, CRAFT_LEFT2_SIZE, "craft2"); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(CRAFT_MAIN_X, CRAFT_MAIN_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "craft3"); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(CRAFT_RIGHT1_X, CRAFT_RIGHT1_Y, CRAFT_RIGHT1_SIZE, CRAFT_RIGHT1_SIZE, "craft4"); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(CRAFT_RIGHT2_X, CRAFT_RIGHT2_Y, CRAFT_RIGHT2_SIZE, CRAFT_RIGHT2_SIZE, "craft5"); hudArea.setImage("HUD/Master/Slot"); //crafting requirements hudArea = addArea(REQUIRE1_X, REQUIRE1_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "requirement1"); hudArea.setFont("SansSerif", Font.BOLD, 12); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(REQUIRE2_X, REQUIRE2_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "requirement2"); hudArea.setFont("SansSerif", Font.BOLD, 12); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(REQUIRE3_X, REQUIRE3_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "requirement3"); hudArea.setFont("SansSerif", Font.BOLD, 12); hudArea.setImage("HUD/Master/Slot"); hudArea = addArea(REQUIRE4_X, REQUIRE4_Y, INV_SLOT_WIDTH, INV_SLOT_HEIGHT, "requirement4"); hudArea.setFont("SansSerif", Font.BOLD, 12); hudArea.setImage("HUD/Master/Slot"); //create hudArea = addArea(CREATE_X, CREATE_Y, CREATE_WIDTH, CREATE_HEIGHT, "create"); hudArea.setImage("HUD/Master/Create"); //crafting categories hudArea = addArea(CAT_PLACEABLES_X, CAT_PLACEABLES_Y, CAT_PLACEABLES_WIDTH, CAT_HEIGHT, "placeables"); hudArea.setImage("HUD/Master/Placeables"); hudArea = addArea(CAT_ITEMS_X, CAT_ITEMS_Y, CAT_ITEMS_WIDTH, CAT_HEIGHT, "items"); hudArea.setImage("HUD/Master/ItemsOn"); hudArea = addArea(CAT_TECH_X, CAT_TECH_Y, CAT_TECH_WIDTH, CAT_HEIGHT, "attachments"); hudArea.setImage("HUD/Master/Attachments"); //crafting type - placeables hudArea = addArea(TYPE_WEAPONS_X, TYPE_WEAPONS_Y, TYPE_WEAPONS_WIDTH, TYPE_HEIGHT, "p_development"); hudArea.setImage("HUD/Master/DevelopmentOn"); hudArea.setIsActive(false); hudArea = addArea(TYPE_ARMOR_X, TYPE_ARMOR_Y, TYPE_ARMOR_WIDTH, TYPE_HEIGHT, "p_combat"); hudArea.setImage("HUD/Master/CombatOn"); hudArea.setIsActive(false); hudArea = addArea(TYPE_OTHER_X, TYPE_OTHER_Y, TYPE_OTHER_WIDTH, TYPE_HEIGHT, "p_other"); hudArea.setImage("HUD/Master/OtherOn"); hudArea.setIsActive(false); //crafting type - items hudArea = addArea(TYPE_WEAPONS_X, TYPE_WEAPONS_Y, TYPE_WEAPONS_WIDTH, TYPE_HEIGHT, "i_weapons"); hudArea.setImage("HUD/Master/WeaponsOn"); hudArea = addArea(TYPE_ARMOR_X, TYPE_ARMOR_Y, TYPE_ARMOR_WIDTH, TYPE_HEIGHT, "i_armor"); hudArea.setImage("HUD/Master/ArmorOn"); hudArea = addArea(TYPE_OTHER_X, TYPE_OTHER_Y, TYPE_OTHER_WIDTH, TYPE_HEIGHT, "i_other"); hudArea.setImage("HUD/Master/OtherOn"); //crafting type - dev hudArea = addArea(TYPE_ARMOR_X, TYPE_ARMOR_Y, TYPE_ARMOR_WIDTH, TYPE_HEIGHT, "t_development"); hudArea.setImage("HUD/Master/DevelopmentOn"); hudArea.setIsActive(false); //crafting - craftable hudArea = addArea(HAVE_MATERIALS_X, HAVE_MATERIALS_Y, HAVE_MATERIALS_WIDTH, HAVE_MATERIALS_HEIGHT, "have_materials"); hudArea.setImage("HUD/Master/HaveMaterials"); hudArea.setIsActive(true); craftDescriptions = new String[5]; craftDescriptions[0] = ""; craftDescriptions[1] = ""; craftDescriptions[2] = ""; craftDescriptions[3] = ""; craftDescriptions[4] = ""; requirementsDescriptions = new String[5]; requirementsDescriptions[0] = ""; requirementsDescriptions[1] = ""; requirementsDescriptions[2] = ""; requirementsDescriptions[3] = ""; update(); LoadMatchingItems(); shouldRender = false; } @Override public void LoadMatchingItems() { synchronized (this) { //update matching items in crafting window String category = ""; if (isButtonPlaceablesEnabled) { category = "Placeable"; } else if (isButtonItemsEnabled) { category = "Item"; } else if (isButtonAttachmentsEnabled) { category = "Attachment"; } String types = ""; if (isButtonPDevelopmentEnabled && isButtonPlaceablesEnabled) { types += "|Development|"; } if (isButtonPCombatEnabled && isButtonPlaceablesEnabled) { types += "|Combat|"; } if (isButtonPOtherEnabled && isButtonPlaceablesEnabled) { types += "|Other|"; } if (isButtonIWeaponsEnabled && isButtonItemsEnabled) { types += "|Weapon|"; } if (isButtonIArmorEnabled && isButtonItemsEnabled) { types += "|Armor|"; } if (isButtonIOtherEnabled && isButtonItemsEnabled) { types += "|Other|"; types += "|Usable|"; } if (isButtonTDevelopmentEnabled && isButtonAttachmentsEnabled) { types += "|Development|"; } matchingItems = new ArrayList<String>(hudManager.getItemTypeList(category, types)); if (matchingItems != null) { if (isButtonHaveMaterialsEnabled) { ArrayList<String> tmp = new ArrayList<String>(); for (int i = 0; i < matchingItems.size(); i++) { if (canCreate(matchingItems.get(i))) { tmp.add(matchingItems.get(i)); } } matchingItems = tmp; } currentItem = 0; showMatchingItems(); } } } private boolean canCreate(String itemName) { boolean canCreate = false; synchronized (this) { requirements = new ArrayList<String>(hudManager.getItemTypeRequirements(itemName)); if (requirements != null) { canCreate = true; for (int i = 0; i < requirements.size(); i++) { String[] parts = requirements.get(i).toString().split(":"); if (parts.length == 2) { HUDArea hudArea; int qtyOnHand = 0; int qtyNeeded = Integer.parseInt(parts[1]); boolean isPlaceable = false; ItemType it = registry.getItemType(parts[0]); if (it != null) { if (it.getCategory().equals("Placeable")) { isPlaceable = true; } } if (isPlaceable) { if (registry.getPlaceableManager().getActivatedCount(parts[0]) <= 0) { canCreate = false; } } else { for (int x = 0; x < hudAreas.size(); x++) { hudArea = hudAreas.get(x); //if (hudArea.getType().equals("inventory")) { if (registry.getPlaverInventorySlotImage(x) != null) { if (registry.getPlaverInventorySlotImage(x).equals("Items/" + parts[0])) { qtyOnHand += registry.getPlaverInventorySlotQty(x); } } //} } if (qtyOnHand < qtyNeeded) { canCreate = false; } } } } } } return canCreate; } private void checkIfCanCreate() { boolean canCreate = false; synchronized (this) { if (matchingItems != null) { if (matchingItems.size() > 0) { String item = matchingItems.get(currentItem); if (canCreate(item)) { canCreate = true; } } } if (canCreate) { getHUDAreaByType("create").setImage("HUD/Master/CreateOn"); } else { getHUDAreaByType("create").setImage("HUD/Master/Create"); } } } private void LoadRequirements() { requirements = null; synchronized (this) { if (matchingItems != null) { if (matchingItems.size() > 0) { requirements = hudManager.getItemTypeRequirements(matchingItems.get(currentItem)); } for (int i = 1; i <= 4; i++) { getHUDAreaByType("requirement" + i).setImage(""); getHUDAreaByType("requirement" + i).setFGImage(""); getHUDAreaByType("requirement" + i).setText(""); requirementsDescriptions[i - 1] = ""; } if (requirements != null) { setImage("HUD/Master/BG" + requirements.size()); for (int i = 0; i < requirements.size(); i++) { String[] parts = requirements.get(i).toString().split(":"); if (parts.length == 2) { //add the requirement slot HUDArea hudArea = getHUDAreaByType("requirement" + (i + 1)); hudArea.setImage("HUD/Master/Slot"); hudArea.setFGImage("Items/" + parts[0]); ItemType it = registry.getItemType(parts[0]); if (it != null) { requirementsDescriptions[i] = it.getDescription(); } int qty = Integer.parseInt(parts[1]); if (qty > 0) { hudArea.setText(String.valueOf(qty)); if (qty < 10) { hudArea.setTextXY(INV_SLOT_TEXT_OFFSET_0, INV_SLOT_TEXT_Y); } else if (qty < 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); } } } } else { setImage("HUD/Master/BG"); } checkIfCanCreate(); } } } private void showMatchingItems() { int position = currentItem; ArrayList itemsShown = new ArrayList(); synchronized (this) { if (matchingItems != null) { if ((matchingItems.size() - 1) >= position) { itemsShown.add(position); getHUDAreaByType("craft3").setImage("Items/" + matchingItems.get(position)); ItemType it = registry.getItemType(matchingItems.get(position)); if (it != null) { craftDescriptions[2] = it.getDescription(); } } else { getHUDAreaByType("craft3").setImage(""); craftDescriptions[2] = ""; } position++; if (position > (matchingItems.size() - 1)) { position = 0; } if ((matchingItems.size() - 1) >= position && !itemsShown.contains(position)) { itemsShown.add(position); getHUDAreaByType("craft4").setImage("Items/" + matchingItems.get(position)); ItemType it = registry.getItemType(matchingItems.get(position)); if (it != null) { craftDescriptions[3] = it.getDescription(); } } else { getHUDAreaByType("craft4").setImage(""); craftDescriptions[3] = ""; } position++; if (position > (matchingItems.size() - 1)) { position = 0; } if ((matchingItems.size() - 1) >= position && !itemsShown.contains(position)) { itemsShown.add(position); getHUDAreaByType("craft5").setImage("Items/" + matchingItems.get(position)); ItemType it = registry.getItemType(matchingItems.get(position)); if (it != null) { craftDescriptions[4] = it.getDescription(); } } else { getHUDAreaByType("craft5").setImage(""); craftDescriptions[4] = ""; } position = (currentItem - 1); if (position < 0) { position += matchingItems.size(); } if (position >= 0 && position < matchingItems.size() && !itemsShown.contains(position)) { itemsShown.add(position); getHUDAreaByType("craft2").setImage("Items/" + matchingItems.get(position)); ItemType it = registry.getItemType(matchingItems.get(position)); if (it != null) { craftDescriptions[1] = it.getDescription(); } } else { getHUDAreaByType("craft2").setImage(""); craftDescriptions[1] = ""; } position = (currentItem - 2); if (position < 0) { position += matchingItems.size(); } if (position >= 0 && position < matchingItems.size() && !itemsShown.contains(position)) { itemsShown.add(position); getHUDAreaByType("craft1").setImage("Items/" + matchingItems.get(position)); ItemType it = registry.getItemType(matchingItems.get(position)); if (it != null) { craftDescriptions[0] = it.getDescription(); } } else { getHUDAreaByType("craft1").setImage(""); craftDescriptions[0] = ""; } } LoadRequirements(); } } private void UpdateButtons() { if (isButtonPlaceablesEnabled) { getHUDAreaByType("placeables").setImage("HUD/Master/PlaceablesOn"); getHUDAreaByType("items").setImage("HUD/Master/Items"); getHUDAreaByType("attachments").setImage("HUD/Master/Attachments"); getHUDAreaByType("p_development").setIsActive(true); getHUDAreaByType("p_combat").setIsActive(true); getHUDAreaByType("p_other").setIsActive(true); getHUDAreaByType("i_weapons").setIsActive(false); getHUDAreaByType("i_armor").setIsActive(false); getHUDAreaByType("i_other").setIsActive(false); getHUDAreaByType("t_development").setIsActive(false); getHUDAreaByType("create").setIsActive(true); } else if (isButtonItemsEnabled) { getHUDAreaByType("placeables").setImage("HUD/Master/Placeables"); getHUDAreaByType("items").setImage("HUD/Master/ItemsOn"); getHUDAreaByType("attachments").setImage("HUD/Master/Attachments"); getHUDAreaByType("p_development").setIsActive(false); getHUDAreaByType("p_combat").setIsActive(false); getHUDAreaByType("p_other").setIsActive(false); getHUDAreaByType("i_weapons").setIsActive(true); getHUDAreaByType("i_armor").setIsActive(true); getHUDAreaByType("i_other").setIsActive(true); getHUDAreaByType("t_development").setIsActive(false); getHUDAreaByType("create").setIsActive(true); } else if (isButtonAttachmentsEnabled) { getHUDAreaByType("placeables").setImage("HUD/Master/Placeables"); getHUDAreaByType("items").setImage("HUD/Master/Items"); getHUDAreaByType("attachments").setImage("HUD/Master/AttachmentsOn"); getHUDAreaByType("p_development").setIsActive(false); getHUDAreaByType("p_combat").setIsActive(false); getHUDAreaByType("p_other").setIsActive(false); getHUDAreaByType("i_weapons").setIsActive(false); getHUDAreaByType("i_armor").setIsActive(false); getHUDAreaByType("i_other").setIsActive(false); getHUDAreaByType("t_development").setIsActive(true); getHUDAreaByType("create").setIsActive(true); } if (isButtonPDevelopmentEnabled) { getHUDAreaByType("p_development").setImage("HUD/Master/DevelopmentOn"); } else { getHUDAreaByType("p_development").setImage("HUD/Master/Development"); } if (isButtonPCombatEnabled) { getHUDAreaByType("p_combat").setImage("HUD/Master/CombatOn"); } else { getHUDAreaByType("p_combat").setImage("HUD/Master/Combat"); } if (isButtonPOtherEnabled) { getHUDAreaByType("p_other").setImage("HUD/Master/OtherOn"); } else { getHUDAreaByType("p_other").setImage("HUD/Master/Other"); } if (isButtonIWeaponsEnabled) { getHUDAreaByType("i_weapons").setImage("HUD/Master/WeaponsOn"); } else { getHUDAreaByType("i_weapons").setImage("HUD/Master/Weapons"); } if (isButtonIArmorEnabled) { getHUDAreaByType("i_armor").setImage("HUD/Master/ArmorOn"); } else { getHUDAreaByType("i_armor").setImage("HUD/Master/Armor"); } if (isButtonIOtherEnabled) { getHUDAreaByType("i_other").setImage("HUD/Master/OtherOn"); } else { getHUDAreaByType("i_other").setImage("HUD/Master/Other"); } if (isButtonTDevelopmentEnabled) { getHUDAreaByType("t_development").setImage("HUD/Master/DevelopmentOn"); } else { getHUDAreaByType("t_development").setImage("HUD/Master/Development"); } if (isButtonHaveMaterialsEnabled) { getHUDAreaByType("have_materials").setImage("HUD/Master/HaveMaterialsOn"); } else { getHUDAreaByType("have_materials").setImage("HUD/Master/HaveMaterials"); } LoadMatchingItems(); } @Override public void HUDAreaClicked(HUDArea ha) { HUDArea hudArea = null; synchronized (this) { int selectedStart = registry.getInvSlotFrom(); for (int i = 0; i < hudAreas.size(); i++) { hudArea = hudAreas.get(i); if (hudArea == ha) { if (hudArea.getType().equals("requirement1") || hudArea.getType().equals("requirement2") || hudArea.getType().equals("requirement3") || hudArea.getType().equals("requirement4")) { int id = Integer.parseInt(hudArea.getType().substring(11, 12)); id--; if (id >= 0 && id < requirements.size()) { String[] parts = requirements.get(id).toString().split(":"); ItemType it = registry.getItemType(parts[0]); if (it != null) { boolean doLoad = false; if (it.getCategory().equals("Placeable")) { isButtonPlaceablesEnabled = true; isButtonItemsEnabled = false; isButtonAttachmentsEnabled = false; isButtonPDevelopmentEnabled = true; isButtonPCombatEnabled = true; isButtonPOtherEnabled = true; doLoad = true; } else if (it.getCategory().equals("Item")) { isButtonPlaceablesEnabled = false; isButtonItemsEnabled = true; isButtonAttachmentsEnabled = false; isButtonIWeaponsEnabled = true; isButtonIArmorEnabled = true; isButtonIOtherEnabled = true; doLoad = true; } else if (it.getCategory().equals("Attachment")) { isButtonPlaceablesEnabled = false; isButtonItemsEnabled = false; isButtonAttachmentsEnabled = true; isButtonTDevelopmentEnabled = true; doLoad = true; } UpdateButtons(); if (doLoad) { LoadMatchingItems(); for (int x = 0; x < matchingItems.size(); x++) { String itemName = matchingItems.get(x); if (itemName != null) { if (itemName.equals(it.getName())) { currentItem = x; break; } } } showMatchingItems(); } } } } else { if (selectedStart != i && registry.getSplitCount() > 0) { if (i >= 0 && selectedStart >= 0 && registry.getPlaverInventorySlotQty(i) == 0) { if (hudAreas.get(i).getType().equals("inventory") && hudAreas.get(selectedStart).getType().equals("inventory")) { String in = registry.getItemNameBySlot(selectedStart); hudManager.setPlayerSlotQuantity(selectedStart, registry.getPlaverInventorySlotQty(selectedStart) - registry.getSplitCount()); hudManager.playerAddItem(i, in, registry.getSplitCount()); } } registry.setInvSlotFrom("Master", selectedStart); } else { selectedStart = i; hudManager.setCursorImageAndText(hudArea.getFGImage(), hudArea.getText()); if (hudArea.getType().equals("head")) { registry.setInvSlotFrom("MasterHead", selectedStart); } else if (hudArea.getType().equals("chest")) { registry.setInvSlotFrom("MasterChest", selectedStart); } else if (hudArea.getType().equals("legs")) { registry.setInvSlotFrom("MasterLegs", selectedStart); } else if (hudArea.getType().equals("feet")) { registry.setInvSlotFrom("MasterFeet", selectedStart); } else { registry.setInvSlotFrom("Master", selectedStart); } } } if (hudArea.getType().equals("placeables")) { isButtonPlaceablesEnabled = true; isButtonItemsEnabled = false; isButtonAttachmentsEnabled = false; UpdateButtons(); } if (hudArea.getType().equals("items")) { isButtonPlaceablesEnabled = false; isButtonItemsEnabled = true; isButtonAttachmentsEnabled = false; UpdateButtons(); } if (hudArea.getType().equals("attachments")) { isButtonPlaceablesEnabled = false; isButtonItemsEnabled = false; isButtonAttachmentsEnabled = true; UpdateButtons(); } if (hudArea.getType().equals("p_development")) { isButtonPDevelopmentEnabled = !isButtonPDevelopmentEnabled; UpdateButtons(); } if (hudArea.getType().equals("p_combat")) { isButtonPCombatEnabled = !isButtonPCombatEnabled; UpdateButtons(); } if (hudArea.getType().equals("p_other")) { isButtonPOtherEnabled = !isButtonPOtherEnabled; UpdateButtons(); } if (hudArea.getType().equals("i_weapons")) { isButtonIWeaponsEnabled = !isButtonIWeaponsEnabled; UpdateButtons(); } if (hudArea.getType().equals("i_armor")) { isButtonIArmorEnabled = !isButtonIArmorEnabled; UpdateButtons(); } if (hudArea.getType().equals("i_other")) { isButtonIOtherEnabled = !isButtonIOtherEnabled; UpdateButtons(); } if (hudArea.getType().equals("t_development")) { isButtonTDevelopmentEnabled = !isButtonTDevelopmentEnabled; UpdateButtons(); } if (hudArea.getType().equals("have_materials")) { isButtonHaveMaterialsEnabled = !isButtonHaveMaterialsEnabled; UpdateButtons(); } if (hudArea.getType().equals("arrow_left")) { currentItem--; if (currentItem < 0) { currentItem = matchingItems.size() - 1; } showMatchingItems(); } if (hudArea.getType().equals("arrow_right")) { currentItem++; if (currentItem > (matchingItems.size() - 1)) { currentItem = 0; } showMatchingItems(); } if (hudArea.getType().equals("create")) { if (matchingItems != null && matchingItems.size() > 0) { hudManager.playerCraftItem(matchingItems.get(currentItem)); if (isButtonHaveMaterialsEnabled) { ArrayList<String> tmp = new ArrayList<String>(); for (int j = 0; j < matchingItems.size(); j++) { if (canCreate(matchingItems.get(j))) { tmp.add(matchingItems.get(j)); } } if (matchingItems.size() != tmp.size()) { UpdateButtons(); } } } } } } } } @Override public void HUDAreaRightClicked(HUDArea ha) { HUDArea hudArea = null; int selectedStart = registry.getInvSlotFrom(); synchronized (this) { for (int i = 0; i < hudAreas.size(); i++) { hudArea = hudAreas.get(i); if (hudArea == ha) { int maxQty = registry.getPlaverInventorySlotQty(i); if (maxQty > 1) { if (selectedStart == i && registry.getSplitCount() > 0) { if (maxQty > registry.getSplitCount()) { if (shiftKeyPressed) { registry.setSplitCount(registry.getSplitCount() + 10); } else { registry.setSplitCount(registry.getSplitCount() + 1); } if (registry.getSplitCount() > maxQty) { registry.setSplitCount(maxQty); } hudManager.setCursorImageAndText(hudArea.getFGImage(), Integer.toString(registry.getSplitCount())); } } else { selectedStart = i; if (shiftKeyPressed) { registry.setSplitCount(10); } else { registry.setSplitCount(1); } if (registry.getSplitCount() > maxQty) { registry.setSplitCount(maxQty); } hudManager.setCursorImageAndText(hudArea.getFGImage(), Integer.toString(registry.getSplitCount())); } } } } } registry.setInvSlotFrom("Master", selectedStart); } @Override public void HUDAreaReleased(HUDArea ha) { int selectedStart = registry.getInvSlotFrom(); synchronized (this) { if (selectedStart > -1) { HUDArea hudAreaTo = null; HUDArea hudAreaFrom = hudAreas.get(selectedStart); if (registry.getSplitCount() < 1) { for (int i = 0; i < hudAreas.size(); i++) { hudAreaTo = hudAreas.get(i); if (hudAreaTo == ha) { if (registry.getInvHUDFrom().equals("Container")) { ItemContainer itemContainer = registry.getInvItemContainerFrom(); if (itemContainer != null) { String itemName = itemContainer.getInventory().getNameFromSlot(selectedStart); int qty = itemContainer.getInventory().getQtyFromSlot(selectedStart); int level = itemContainer.getInventory().getLevelFromSlot(selectedStart); if (!itemName.isEmpty() && qty > 0) { if (hudAreaTo.getType().equals("head")) { hudManager.playerEquipHead(itemName, level); itemContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("chest")) { hudManager.playerEquipChest(itemName, level); itemContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("legs")) { hudManager.playerEquipLegs(itemName, level); itemContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("feet")) { hudManager.playerEquipFeet(itemName, level); itemContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("inventory")) { int oldQty = qty; if (hudManager.playerAddItem(i, itemName, qty, level) < oldQty) { itemContainer.deleteInventory(selectedStart, 0); } } else if (hudAreaTo.getType().equals("trash")) { Player p = null; PlayerManager pm = registry.getPlayerManager(); if (pm != null) { p = pm.getCurrentPlayer(); if (p != null) { p.playerGiveItemXP(itemName, qty); } } itemContainer.deleteInventory(selectedStart, 0); } } } } else if (registry.getInvHUDFrom().equals("PlayerContainer")) { PlayerContainer playerContainer = registry.getInvPlayerContainerFrom(); if (playerContainer != null) { String itemName = playerContainer.getInventory().getNameFromSlot(selectedStart); int qty = playerContainer.getInventory().getQtyFromSlot(selectedStart); int level = playerContainer.getInventory().getLevelFromSlot(selectedStart); if (!itemName.isEmpty() && qty > 0) { if (hudAreaTo.getType().equals("head")) { hudManager.playerEquipHead(itemName, level); playerContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("chest")) { hudManager.playerEquipChest(itemName, level); playerContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("legs")) { hudManager.playerEquipLegs(itemName, level); playerContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("feet")) { hudManager.playerEquipFeet(itemName, level); playerContainer.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("inventory")) { int oldQty = qty; if (hudManager.playerAddItem(i, itemName, qty, level) < oldQty) { playerContainer.deleteInventory(selectedStart, 0); } } else if (hudAreaTo.getType().equals("trash")) { Player p = null; PlayerManager pm = registry.getPlayerManager(); if (pm != null) { p = pm.getCurrentPlayer(); if (p != null) { p.playerGiveItemXP(itemName, qty); } } playerContainer.deleteInventory(selectedStart, 0); } } } } else if (registry.getInvHUDFrom().equals("Farm")) { Farm farm = registry.getInvFarmFrom(); if (farm != null) { String itemName = farm.getInventory().getNameFromSlot(selectedStart); int qty = farm.getInventory().getQtyFromSlot(selectedStart); if (!itemName.isEmpty() && qty > 0) { if (hudAreaTo.getType().equals("inventory")) { int oldQty = qty; if (hudManager.playerAddItem(i, itemName, qty) < oldQty) { farm.deleteInventory(selectedStart, 0); } } else if (hudAreaTo.getType().equals("trash")) { Player p = null; PlayerManager pm = registry.getPlayerManager(); if (pm != null) { p = pm.getCurrentPlayer(); if (p != null) { p.playerGiveItemXP(itemName, qty); } } farm.deleteInventory(selectedStart, 0); } } } } else if (registry.getInvHUDFrom().equals("QuickBarRobot")) { Inventory robotInventory = registry.getRobotInventory(); if (robotInventory != null) { String itemName = robotInventory.getNameFromSlot(selectedStart); int qty = robotInventory.getQtyFromSlot(selectedStart); int level = robotInventory.getLevelFromSlot(selectedStart); if (!itemName.isEmpty() && qty > 0) { if (hudAreaTo.getType().equals("head")) { hudManager.playerEquipHead(itemName, level); robotInventory.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("chest")) { hudManager.playerEquipChest(itemName, level); robotInventory.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("legs")) { hudManager.playerEquipLegs(itemName, level); robotInventory.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("feet")) { hudManager.playerEquipFeet(itemName, level); robotInventory.deleteInventory(selectedStart, 0); } else if (hudAreaTo.getType().equals("inventory")) { int oldQty = qty; if (hudManager.playerAddItem(i, itemName, qty) < oldQty) { robotInventory.deleteInventory(selectedStart, 0); } } else if (hudAreaTo.getType().equals("trash")) { Player p = null; PlayerManager pm = registry.getPlayerManager(); if (pm != null) { p = pm.getCurrentPlayer(); if (p != null) { p.playerGiveItemXP(itemName, qty); } } robotInventory.deleteInventory(selectedStart, 0); } } } } else if (registry.getInvHUDFrom().equals("QuickBar")) { if (!registry.getIsQuickBarLocked()) { if (hudAreaTo.getType().equals("head") || hudAreaTo.getType().equals("chest") || hudAreaTo.getType().equals("legs") || hudAreaTo.getType().equals("feet")) { hudManager.playerEquipFromInventory(selectedStart); } else if (hudAreaTo.getType().equals("inventory")) { hudManager.playerSwapInventory(selectedStart, i); } else if (hudAreaTo.getType().equals("trash")) { hudManager.playerDeleteInventory(selectedStart, 0, true); } } } else if (hudAreaFrom.getType().equals("inventory")) { if (hudAreaTo.getType().equals("head") || hudAreaTo.getType().equals("chest") || hudAreaTo.getType().equals("legs") || hudAreaTo.getType().equals("feet")) { hudManager.playerEquipFromInventory(selectedStart); } else if (hudAreaTo.getType().equals("inventory")) { hudManager.playerSwapInventory(selectedStart, i); } else if (hudAreaTo.getType().equals("trash")) { hudManager.playerDeleteInventory(selectedStart, 0, true); } } else if (hudAreaFrom.getType().equals("head")) { if (hudAreaTo.getType().equals("inventory")) { hudManager.playerUnEquipToInventory("head", i); } else if (hudAreaTo.getType().equals("trash")) { hudManager.playerUnEquipToDelete("head"); } } else if (hudAreaFrom.getType().equals("chest")) { if (hudAreaTo.getType().equals("inventory")) { hudManager.playerUnEquipToInventory("chest", i); } else if (hudAreaTo.getType().equals("trash")) { hudManager.playerUnEquipToDelete("chest"); } } else if (hudAreaFrom.getType().equals("legs")) { if (hudAreaTo.getType().equals("inventory")) { hudManager.playerUnEquipToInventory("legs", i); } else if (hudAreaTo.getType().equals("trash")) { hudManager.playerUnEquipToDelete("legs"); } } else if (hudAreaFrom.getType().equals("feet")) { if (hudAreaTo.getType().equals("inventory")) { hudManager.playerUnEquipToInventory("feet", i); } else if (hudAreaTo.getType().equals("trash")) { hudManager.playerUnEquipToDelete("feet"); } } } } } registry.setSplitCount(0); } } registry.setInvSlotFrom("", selectedStart); } @Override public void shiftPressed() { shiftKeyPressed = true; } @Override public void shiftRelease() { shiftKeyPressed = false; } @Override public void toggleMasterHUD() { shouldRender = !shouldRender; } @Override public void update() { if (shouldRender) { HUDArea hudArea; Player p = null; PlayerManager pm = registry.getPlayerManager(); if (pm != null) { p = pm.getCurrentPlayer(); } if (p != null) { //update slots for (int i = 0; i < hudAreas.size(); i++) { hudArea = hudAreas.get(i); if (hudArea.getType().equals("inventory")) { String hudAreaImage = registry.getPlaverInventorySlotImage(i); if (hudAreaImage != null) { hudArea.setFGImage(hudAreaImage); if (hudArea.isInside(registry.getMousePosition())) { registry.setStatusText(registry.getPlaverInventorySlotDescription(i)); if (registry.getPlaverInventorySlotType(i).equals("Weapon")) { registry.setWeaponType(registry.getPlaverInventorySlotName(i)); registry.setWeaponLevel(registry.getPlaverInventorySlotLevel(i)); hudManager.showArmorHUD(false); hudManager.showWeaponHUD(true); } else if (registry.getPlaverInventorySlotType(i).equals("Armor")) { registry.setArmorType(registry.getPlaverInventorySlotName(i)); registry.setArmorLevel(registry.getPlaverInventorySlotLevel(i)); hudManager.showArmorHUD(true); hudManager.showWeaponHUD(false); } } } int hudAreaQty = registry.getPlaverInventorySlotQty(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); } } else if (hudArea.getType().equals("head")) { String hudAreaImage = registry.getPlaverHeadSlotImage(registry.getPlayerManager().getCurrentPlayer()); if (hudAreaImage != null) { hudArea.setFGImage(hudAreaImage); } else { hudArea.setFGImage(""); } if (p.getArmorTypeHead() != null) { if (hudArea.isInside(registry.getMousePosition())) { registry.setArmorType(p.getArmorTypeHead().getName()); registry.setArmorLevel(p.getArmorTypeHeadLevel()); hudManager.showArmorHUD(true); hudManager.showWeaponHUD(false); } } } else if (hudArea.getType().equals("chest")) { String hudAreaImage = registry.getPlaverChestSlotImage(registry.getPlayerManager().getCurrentPlayer()); if (hudAreaImage != null) { hudArea.setFGImage(hudAreaImage); } else { hudArea.setFGImage(""); } if (p.getArmorTypeChest() != null) { if (hudArea.isInside(registry.getMousePosition())) { registry.setArmorType(p.getArmorTypeChest().getName()); registry.setArmorLevel(p.getArmorTypeChestLevel()); hudManager.showArmorHUD(true); hudManager.showWeaponHUD(false); } } } else if (hudArea.getType().equals("legs")) { String hudAreaImage = registry.getPlaverLegsSlotImage(registry.getPlayerManager().getCurrentPlayer()); if (hudAreaImage != null) { hudArea.setFGImage(hudAreaImage); } else { hudArea.setFGImage(""); } if (p.getArmorTypeLegs() != null) { if (hudArea.isInside(registry.getMousePosition())) { registry.setArmorType(p.getArmorTypeLegs().getName()); registry.setArmorLevel(p.getArmorTypeLegsLevel()); hudManager.showArmorHUD(true); hudManager.showWeaponHUD(false); } } } else if (hudArea.getType().equals("feet")) { String hudAreaImage = registry.getPlaverFeetSlotImage(registry.getPlayerManager().getCurrentPlayer()); if (hudAreaImage != null) { hudArea.setFGImage(hudAreaImage); } else { hudArea.setFGImage(""); } if (p.getArmorTypeFeet() != null) { if (hudArea.isInside(registry.getMousePosition())) { registry.setArmorType(p.getArmorTypeFeet().getName()); registry.setArmorLevel(p.getArmorTypeFeetLevel()); hudManager.showArmorHUD(true); hudManager.showWeaponHUD(false); } } } else if (hudArea.getType().equals("ap")) { hudArea.setText(String.valueOf(registry.getPlaverArmorPoints(registry.getPlayerManager().getCurrentPlayer()))); hudArea.setTextXY(AP_TEXT_OFFSET_X, AP_TEXT_OFFSET_Y); hudAreaText(hudArea, "Your total Armor Points. When you get hit, armor weakens it so you take less damage."); } else if (hudArea.getType().equals("hp")) { hudArea.setText(String.valueOf(registry.getPlaverHitPoints(registry.getPlayerManager().getCurrentPlayer()))); hudArea.setTextXY(HP_TEXT_OFFSET_X, HP_TEXT_OFFSET_Y); hudAreaText(hudArea, requirementsDescriptions[0]); hudAreaText(hudArea, "Your total Hit Points. When you run out, you're dead."); } else if (hudArea.getType().equals("trash")) { hudAreaText(hudArea, "Drag an item here to get rid of it. Be careful, this is permanent!"); } else if (hudArea.getType().equals("craft1")) { hudAreaText(hudArea, craftDescriptions[0]); } else if (hudArea.getType().equals("craft2")) { hudAreaText(hudArea, craftDescriptions[1]); } else if (hudArea.getType().equals("craft3")) { hudAreaText(hudArea, craftDescriptions[2]); } else if (hudArea.getType().equals("craft4")) { hudAreaText(hudArea, craftDescriptions[3]); } else if (hudArea.getType().equals("craft5")) { hudAreaText(hudArea, craftDescriptions[4]); } else if (hudArea.getType().equals("requirement1")) { hudAreaText(hudArea, requirementsDescriptions[0]); } else if (hudArea.getType().equals("requirement2")) { hudAreaText(hudArea, requirementsDescriptions[1]); } else if (hudArea.getType().equals("requirement3")) { hudAreaText(hudArea, requirementsDescriptions[2]); } else if (hudArea.getType().equals("requirement4")) { hudAreaText(hudArea, requirementsDescriptions[3]); } } checkIfCanCreate(); } } super.update(); } @Override public void render(Graphics g) { super.render(g); if (shouldRender) { hudManager.playerRender(g, positionX + PAPERDOLL_X, positionY + PAPERDOLL_Y, true); } } }