package com.weem.epicinventor.hud;
import com.weem.epicinventor.*;
import com.weem.epicinventor.actor.*;
import com.weem.epicinventor.inventory.*;
import com.weem.epicinventor.placeable.*;
import com.weem.epicinventor.utility.*;
import java.awt.*;
public class HUDQuickBar extends HUD {
private final static int HP_BG_X = 19;
private final static int HP_BG_Y = 70;
private final static int HP_BG_WIDTH = 126;
private final static int HP_BG_HEIGHT = 17;
private final static int BUTTON_WIDTH = 32;
private final static int BUTTON_HEIGHT = 21;
private final static int BUTTON_REPORT_BUGS_X = 522;
private final static int BUTTON_REPORT_BUGS_WIDTH = 106;
private final static int BUTTON_INVENTORY_X = 686;
private final static int BUTTON_PAUSE_X = 652;
private final static int BUTTON_HELP_X = 720;
private final static int BUTTON_EXIT_X = 754;
private final static int BUTTON_Y = 19;
private final static int HP_BAR_X = 21;
private final static int HP_BAR_Y = 72;
private final static int HP_BAR_HEIGHT = 13;
private final static int HP_TEXT_X = 48;
private final static int HP_TEXT_Y = 32;
private final static int XP_BG_X = 19;
private final static int XP_BG_Y = 103;
private final static int XP_BG_WIDTH = 604;
private final static int XP_BG_HEIGHT = 17;
private final static int XP_BAR_X = 21;
private final static int XP_BAR_Y = 105;
private final static int XP_BAR_HEIGHT = 13;
private final static int XP_TEXT_X = 48;
private final static int XP_TEXT_Y = 50;
private final static int LOCK_BG_X = 176;
private final static int LOCK_BG_Y = 59;
private final static int LOCK_BG_WIDTH = 19;
private final static int LOCK_BG_HEIGHT = 20;
private final static int LOCK_X = 181;
private final static int LOCK_Y = 62;
private final static int LOCK_WIDTH = 9;
private final static int LOCK_HEIGHT = 15;
private final static int STATUS_X = 30;
private final static int STATUS_Y = 126;
private final static int STATUS_WIDTH = 732;
private final static int STATUS_HEIGHT = 23;
private final static int STATUS_TEXT_X = 8;
private final static int STATUS_TEXT_Y = 15;
private final static int VERSION_WIDTH = 120;
private final static int VERSION_HEIGHT = 23;
private final static int VERSION_X = 640;
private final static int VERSION_Y = 125;
private final static int SLOT_START_X = 200;
private final static int SLOT_START_Y = 49;
private final static int SLOT_WIDTH = 40;
private final static int SLOT_HEIGHT = 40;
private final static int SLOT_SPACING = 3;
private final static int SLOTS = 10;
private final static int SLOT_TEXT_OFFSET_0 = 32;
private final static int SLOT_TEXT_OFFSET_10 = 25;
private final static int SLOT_TEXT_OFFSET_100 = 18;
private final static int SLOT_TEXT_Y = 37;
private final static int POWER_TEXT_X = 355;
private final static int POWER_TEXT_Y = 38;
private final static int LEVEL_TEXT_X = 355;
private final static int LEVEL_TEXT_Y = 58;
private final static int ROBOT_POWER_X = 48;
private final static int ROBOT_POWER_Y = 8;
private final static int ROBOT_POWER_WIDTH = 26;
private final static int ROBOT_POWER_HEIGHT = 26;
private final static int ROBOT_BUTTON_PASSIVE_X = 81;
private final static int ROBOT_BUTTON_DEFENSIVE_X = 110;
private final static int ROBOT_BUTTON_AGGRESSIVE_X = 139;
private final static int ROBOT_BUTTON_FOLLOW_X = 168;
private final static int ROBOT_BUTTON_Y = 8;
private final static int ROBOT_BUTTON_WIDTH = 26;
private final static int ROBOT_BUTTON_HEIGHT = 28;
private final static int ROBOT_SLOT_START_X = 201;
private final static int ROBOT_SLOT_START_Y = 6;
private final static int ROBOT_SLOT_WIDTH = 30;
private final static int ROBOT_SLOT_HEIGHT = 30;
private final static int ROBOT_SLOT_SPACING = 2;
private final static int ROBOT_SLOTS = 4;
private final static int ROBOT_BATTERY_Y = 9;
private final static int ROBOT_BATTERY_WIDTH = 27;
private final static int ROBOT_BATTERY_HEIGHT = 11;
private final static int ROBOT_BATTERY_BAR_Y = 11;
private final static int ROBOT_BATTERY_BAR_HEIGHT = 7;
private final static int ROBOT_BATTERY_BAR_TEXT_Y = 20;
private final static int ROBOT_BATTERY_X = 84;
private final static int ROBOT_BATTERY_BAR_X = 86;
private final static int ROBOT_BATTERY_BAR_MAX_WIDTH = 21;
private final static int ROBOT_BATTERY_BAR_TEXT_X = 85;
private final static int ROBOT_BATTERY_ON_X = 338;
private final static int ROBOT_BATTERY_BAR_ON_X = 340;
private final static int ROBOT_BATTERY_BAR_ON_TEXT_X = 340;
private final static int DIVIDER_X1 = 77;
private final static int DIVIDER_X2 = 331;
private final static int DIVIDER_Y = 6;
private final static int DIVIDER_WIDTH = 1;
private final static int DIVIDER_HEIGHT = 30;
private final static int RECAST_FRAMES = 20;
private int powerUsed;
private int powerTotal;
private final static float TOWN_UPDATE_CHECK_INTERVAL = 0.50f;
private long townUpdateCheckTime;
private boolean shiftKeyPressed = false;
public HUDQuickBar(HUDManager hm, Registry rg, int x, int y, int w, int h) {
super(hm, rg, x, y, w, h);
setImage("HUD/QuickBar/BG");
HUDArea hudArea = null;
//slots
int slotX = 0;
for (int i = 0; i < SLOTS; i++) {
slotX = SLOT_START_X + (i * SLOT_WIDTH) + (i * SLOT_SPACING);
hudArea = addArea(slotX, SLOT_START_Y, SLOT_WIDTH, SLOT_HEIGHT, "slot");
hudArea.setFont("SansSerif", Font.BOLD, 12);
hudArea.setImage("HUD/QuickBar/Slot");
}
//buttons
hudArea = addArea(BUTTON_INVENTORY_X, BUTTON_Y, BUTTON_WIDTH, BUTTON_HEIGHT, "button_inventory");
hudArea.setImage("HUD/QuickBar/ButtonInventory");
/*hudArea = addArea(BUTTON_REPORT_BUGS_X, BUTTON_Y, BUTTON_REPORT_BUGS_WIDTH, BUTTON_HEIGHT, "button_report_bugs");
hudArea.setImage("HUD/QuickBar/ButtonReportBugs");*/
hudArea = addArea(BUTTON_PAUSE_X, BUTTON_Y, BUTTON_WIDTH, BUTTON_HEIGHT, "button_pause");
hudArea.setImage("HUD/QuickBar/ButtonPause");
hudArea = addArea(BUTTON_HELP_X, BUTTON_Y, BUTTON_WIDTH, BUTTON_HEIGHT, "button_help");
hudArea.setImage("HUD/QuickBar/ButtonHelp");
hudArea = addArea(BUTTON_EXIT_X, BUTTON_Y, BUTTON_WIDTH, BUTTON_HEIGHT, "button_exit");
hudArea.setImage("HUD/QuickBar/ButtonExit");
//hp
hudArea = addArea(HP_BG_X, HP_BG_Y, HP_BG_WIDTH, HP_BG_HEIGHT, "hp_bg");
hudArea.setImage("HUD/QuickBar/HPBG");
hudArea = addArea(HP_BAR_X, HP_BAR_Y, 1, HP_BAR_HEIGHT, "hp_bar");
hudArea.setImage("HUD/QuickBar/HPBar");
hudArea = addArea(HP_TEXT_X, HP_TEXT_Y, 1, 1, "hp");
hudArea.setFont("SansSerif", Font.PLAIN, 11);
//xp
hudArea = addArea(XP_BG_X, XP_BG_Y, XP_BG_WIDTH, XP_BG_HEIGHT, "xp_bg");
hudArea.setImage("HUD/QuickBar/XPBG");
hudArea = addArea(XP_BAR_X, XP_BAR_Y, 1, XP_BAR_HEIGHT, "xp_bar");
hudArea.setImage("HUD/QuickBar/XPBar");
hudArea = addArea(XP_BG_X, XP_BG_Y, XP_BG_WIDTH, XP_BG_HEIGHT, "xp_overlay");
hudArea.setImage("HUD/QuickBar/XPOverlay");
hudArea = addArea(XP_TEXT_X, XP_TEXT_Y, 1, 1, "xp");
hudArea.setFont("SansSerif", Font.PLAIN, 11);
//lock
hudArea = addArea(LOCK_BG_X, LOCK_BG_Y, LOCK_BG_WIDTH, LOCK_BG_HEIGHT, "lock_bg");
hudArea.setImage("HUD/QuickBar/LockBG");
hudArea = addArea(LOCK_X, LOCK_Y, LOCK_WIDTH, LOCK_HEIGHT, "lock");
hudArea.setImage("HUD/QuickBar/Lock");
//status
hudArea = addArea(STATUS_X, STATUS_Y, STATUS_WIDTH, STATUS_HEIGHT, "status");
hudArea.setFont("SansSerif", Font.PLAIN, 11);
hudArea.setTextXY(STATUS_TEXT_X, STATUS_TEXT_Y);
hudArea.setImage("HUD/QuickBar/StatusBG");
//version
hudArea = addArea(VERSION_X, VERSION_Y, VERSION_WIDTH, VERSION_HEIGHT, "version");
hudArea.setFont("SansSerif", Font.BOLD, 12);
hudArea.setTextXY(STATUS_TEXT_X, STATUS_TEXT_Y);
hudArea.setText("Version: " + Game.VERSION);
//power
hudArea = addArea(POWER_TEXT_X, POWER_TEXT_Y, 1, 1, "power");
hudArea.setFont("SansSerif", Font.BOLD, 13);
hudArea.setTextColor(new Color(112, 223, 255));
//level
hudArea = addArea(LEVEL_TEXT_X, LEVEL_TEXT_Y, 1, 1, "level");
hudArea.setFont("SansSerif", Font.BOLD, 13);
hudArea.setTextColor(new Color(243, 238, 102));
//robot stuff
hudArea = addArea(ROBOT_POWER_X, ROBOT_POWER_Y, ROBOT_POWER_WIDTH, ROBOT_POWER_HEIGHT, "robot_power");
hudArea.setImage("HUD/QuickBar/RobotPower");
hudArea = addArea(DIVIDER_X1, DIVIDER_Y, DIVIDER_WIDTH, DIVIDER_HEIGHT, "divider1");
hudArea.setImage("HUD/QuickBar/Divider");
hudArea = addArea(DIVIDER_X2, DIVIDER_Y, DIVIDER_WIDTH, DIVIDER_HEIGHT, "divider2");
hudArea.setImage("HUD/QuickBar/Divider");
hudArea.setIsActive(false);
//robot buttons
hudArea = addArea(ROBOT_BUTTON_PASSIVE_X, ROBOT_BUTTON_Y, ROBOT_BUTTON_WIDTH, ROBOT_BUTTON_HEIGHT, "robot_button_passive");
hudArea.setImage("HUD/QuickBar/RobotPassive");
hudArea.setIsActive(false);
hudArea = addArea(ROBOT_BUTTON_DEFENSIVE_X, ROBOT_BUTTON_Y, ROBOT_BUTTON_WIDTH, ROBOT_BUTTON_HEIGHT, "robot_button_defensive");
hudArea.setImage("HUD/QuickBar/RobotDefensive");
hudArea.setIsActive(false);
hudArea = addArea(ROBOT_BUTTON_AGGRESSIVE_X, ROBOT_BUTTON_Y, ROBOT_BUTTON_WIDTH, ROBOT_BUTTON_HEIGHT, "robot_button_aggressive");
hudArea.setImage("HUD/QuickBar/RobotAggressive");
hudArea.setIsActive(false);
hudArea = addArea(ROBOT_BUTTON_FOLLOW_X, ROBOT_BUTTON_Y, ROBOT_BUTTON_WIDTH, ROBOT_BUTTON_HEIGHT, "robot_button_follow");
hudArea.setImage("HUD/QuickBar/RobotFollow");
hudArea.setIsActive(false);
//robot slots
slotX = 0;
for (int i = 0; i < ROBOT_SLOTS; i++) {
slotX = ROBOT_SLOT_START_X + (i * ROBOT_SLOT_WIDTH) + (i * ROBOT_SLOT_SPACING);
hudArea = addArea(slotX, ROBOT_SLOT_START_Y, ROBOT_SLOT_WIDTH, ROBOT_SLOT_HEIGHT, "robot_slot" + (i + 1));
hudArea.setImage("HUD/QuickBar/RobotSlot");
hudArea.setIsActive(false);
}
//robot battery
hudArea = addArea(ROBOT_BATTERY_X, ROBOT_BATTERY_Y, ROBOT_BATTERY_WIDTH, ROBOT_BATTERY_HEIGHT, "robot_battery_bg");
hudArea.setImage("HUD/QuickBar/RobotBattery");
hudArea = addArea(ROBOT_BATTERY_BAR_X, ROBOT_BATTERY_BAR_Y, 1, ROBOT_BATTERY_BAR_HEIGHT, "robot_battery_bar");
hudArea.setImage("HUD/QuickBar/RobotBatteryMeter");
hudArea = addArea(ROBOT_BATTERY_BAR_TEXT_X, ROBOT_BATTERY_BAR_TEXT_Y, 1, 1, "robot_battery_level");
hudArea.setFont("SansSerif", Font.PLAIN, 11);
hudArea.setText("100%");
}
@Override
public void update() {
if (shouldRender) {
int invSlot;
int playerInventorySlot;
HUDArea hudArea;
Player p = null;
PlayerManager pm = registry.getPlayerManager();
if (pm != null) {
p = pm.getCurrentPlayer();
}
if (p != null) {
townUpdateCheckTime += registry.getImageLoader().getPeriod();
if ((townUpdateCheckTime / 1000) >= TOWN_UPDATE_CHECK_INTERVAL) {
townUpdateCheckTime = 0;
int[] powerVals = hudManager.getCurrentPower();
powerUsed = powerVals[0];
powerTotal = powerVals[1];
}
if (registry.getRobotActivated(p)) {
setImage("HUD/QuickBar/BGRobotOn");
} else {
setImage("HUD/QuickBar/BG");
}
Inventory robotInventory = registry.getRobotInventory();
//update slots
for (int i = 0; i < hudAreas.size(); i++) {
hudArea = hudAreas.get(i);
if (hudArea.getType().equals("slot")) {
playerInventorySlot = i + registry.getPlayerInventorySize(registry.getPlayerManager().getCurrentPlayer()) - SLOTS;
String hudAreaImage = registry.getPlaverInventorySlotImage(playerInventorySlot);
if (hudAreaImage != null) {
hudArea.setFGImage(hudAreaImage);
if (hudArea.isInside(registry.getMousePosition())) {
registry.setStatusText(registry.getPlaverInventorySlotDescription(playerInventorySlot));
if (registry.getPlaverInventorySlotType(playerInventorySlot).equals("Weapon")) {
registry.setWeaponType(registry.getPlaverInventorySlotName(playerInventorySlot));
registry.setWeaponLevel(registry.getPlaverInventorySlotLevel(playerInventorySlot));
hudManager.showArmorHUD(false);
hudManager.showWeaponHUD(true);
} else if (registry.getPlaverInventorySlotType(playerInventorySlot).equals("Armor")) {
registry.setArmorType(registry.getPlaverInventorySlotName(playerInventorySlot));
registry.setArmorLevel(registry.getPlaverInventorySlotLevel(playerInventorySlot));
hudManager.showArmorHUD(true);
hudManager.showWeaponHUD(false);
}
}
}
int hudAreaQty = registry.getPlaverInventorySlotQty(playerInventorySlot);
if (hudAreaQty > 1) {
hudArea.setText(String.valueOf(hudAreaQty));
if (hudAreaQty < 10) {
hudArea.setTextXY(SLOT_TEXT_OFFSET_0, SLOT_TEXT_Y);
} else if (hudAreaQty < 100) {
hudArea.setTextXY(SLOT_TEXT_OFFSET_10, SLOT_TEXT_Y);
} else {
hudArea.setTextXY(SLOT_TEXT_OFFSET_100, SLOT_TEXT_Y);
}
} else {
hudArea.setText("");
hudArea.setTextXY(SLOT_TEXT_OFFSET_0, SLOT_TEXT_Y);
}
if (registry.getPlayerSelectedItem(registry.getPlayerManager().getCurrentPlayer()) == i) {
hudArea.setImage("HUD/QuickBar/SlotOn");
} else {
hudArea.setImage("HUD/QuickBar/Slot");
}
//add recast animation for melee weaspons
String hudAreaType = registry.getPlaverInventorySlotType(playerInventorySlot);
if (hudAreaType != null) {
if (hudAreaType.equals("Weapon")) {
int recastPercentage = registry.getPlayerManager().getCurrentPlayer().getMeleeRecastPercentage();
if (recastPercentage > 0) {
int frame = (recastPercentage * RECAST_FRAMES) / 100;
if (frame > RECAST_FRAMES) {
frame = RECAST_FRAMES;
}
if (registry.getPlayerSelectedItem(registry.getPlayerManager().getCurrentPlayer()) == i) {
hudArea.setImage("HUD/QuickBar/SlotRecastOn", frame);
} else {
hudArea.setImage("HUD/QuickBar/SlotRecast", frame);
}
}
}
}
} else if (hudArea.getType().equals("hp_bg")) {
hudAreaText(hudArea, "Your current Hit Points. When you run out, you're dead.");
} else if (hudArea.getType().equals("hp_bar")) {
hudArea.setWidth(((HP_BG_WIDTH - 4) * registry.getPlaverHitPoints(registry.getPlayerManager().getCurrentPlayer())) / registry.getPlaverTotalHitPoints(registry.getPlayerManager().getCurrentPlayer()));
hudAreaText(hudArea, "Your current Hit Points. When you run out, you're dead.");
} else if (hudArea.getType().equals("hp")) {
hudArea.setText(registry.getPlaverHitPoints(registry.getPlayerManager().getCurrentPlayer()) + " / " + registry.getPlaverTotalHitPoints(registry.getPlayerManager().getCurrentPlayer()));
hudArea.setTextXY(HP_TEXT_X, HP_TEXT_Y);
hudAreaText(hudArea, "Your current Hit Points. When you run out, you're dead.");
} else if (hudArea.getType().equals("xp_bg")) {
hudAreaText(hudArea, "Your current XP. Kill things, level up, get stronger.");
} else if (hudArea.getType().equals("xp_overlay")) {
hudAreaText(hudArea, "Your current XP. Kill things, level up, get stronger.");
} else if (hudArea.getType().equals("xp_bar")) {
int current = registry.getPlayerManager().getCurrentPlayer().getXP() - registry.getXPNeededForLevel(registry.getPlayerManager().getCurrentPlayer().getLevel());
int needed = registry.getXPNeededForLevel(registry.getPlayerManager().getCurrentPlayer().getLevel() + 1) - registry.getXPNeededForLevel(registry.getPlayerManager().getCurrentPlayer().getLevel());
if (needed == 0) {
needed = 1;
}
hudArea.setWidth(((XP_BG_WIDTH - 4) * current / needed));
hudAreaText(hudArea, "Your current XP. Kill things, level up, get stronger.");
} else if (hudArea.getType().equals("xp")) {
hudArea.setText(registry.getPlayerManager().getCurrentPlayer().getXP() + " / " + registry.getXPNeededForLevel(registry.getPlayerManager().getCurrentPlayer().getLevel() + 1));
hudArea.setTextXY(XP_TEXT_X, XP_TEXT_Y);
hudAreaText(hudArea, "Your current XP. Kill things, level up, get stronger.");
} else if (hudArea.getType().equals("status")) {
hudArea.setText(registry.getStatusText());
} else if (hudArea.getType().equals("power")) {
hudArea.setText(powerUsed + " / " + powerTotal);
hudArea.setTextXY(POWER_TEXT_X, POWER_TEXT_Y);
} else if (hudArea.getType().equals("level")) {
hudArea.setText(Integer.toString(registry.getPlayerManager().getCurrentPlayer().getLevel()));
hudArea.setTextXY(LEVEL_TEXT_X, LEVEL_TEXT_Y);
} else if (hudArea.getType().equals("power_label")) {
hudAreaText(hudArea, "Your current Power Used / Available. Some placeables require power to operate.");
} else if (hudArea.getType().equals("lock")) {
if (registry.getIsQuickBarLocked()) {
hudArea.setImage("HUD/QuickBar/LockOn");
} else {
hudArea.setImage("HUD/QuickBar/Lock");
}
hudAreaText(hudArea, "When activated, you can't accidentally (or otherwise) drag items off your Quick Bar");
} else if (hudArea.getType().equals("robot_power")) {
if (registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer())) {
hudArea.setImage("HUD/QuickBar/RobotPowerOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotPower");
}
hudAreaText(hudArea, "Toggles your robot on and off");
} else if (hudArea.getType().equals("robot_battery_level")) {
if (registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer())) {
hudArea.setXY(ROBOT_BATTERY_BAR_ON_TEXT_X, ROBOT_BATTERY_BAR_TEXT_Y);
} else {
hudArea.setXY(ROBOT_BATTERY_BAR_TEXT_X, ROBOT_BATTERY_BAR_TEXT_Y);
}
hudArea.setText(Integer.toString(registry.getRobotBatteryPercentage(registry.getPlayerManager().getCurrentPlayer())) + "%");
hudAreaText(hudArea, "Your robot's current battery level. When he runs out, he goes away.");
} else if (hudArea.getType().equals("robot_battery_bar")) {
if (registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer())) {
hudArea.setXY(ROBOT_BATTERY_BAR_ON_X, ROBOT_BATTERY_BAR_Y);
} else {
hudArea.setXY(ROBOT_BATTERY_BAR_X, ROBOT_BATTERY_BAR_Y);
}
hudArea.setWidth((ROBOT_BATTERY_BAR_MAX_WIDTH * registry.getRobotBatteryPercentage(registry.getPlayerManager().getCurrentPlayer())) / 100);
hudAreaText(hudArea, "Your robot's current battery level. When he runs out, he goes away.");
} else if (hudArea.getType().equals("divider2")) {
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
} else if (hudArea.getType().equals("robot_button_passive")) {
if (registry.getRobotMode(registry.getPlayerManager().getCurrentPlayer()).equals("Passive")) {
hudArea.setImage("HUD/QuickBar/RobotPassiveOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotPassive");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
hudAreaText(hudArea, "Passive Mode: Your robot will just sit there and take it");
} else if (hudArea.getType().equals("robot_button_defensive")) {
if (registry.getRobotMode(registry.getPlayerManager().getCurrentPlayer()).equals("Defensive")) {
hudArea.setImage("HUD/QuickBar/RobotDefensiveOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotDefensive");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
hudAreaText(hudArea, "Defensive Mode: Your robot will only attack if you're being attacked");
} else if (hudArea.getType().equals("robot_button_aggressive")) {
if (registry.getRobotMode(registry.getPlayerManager().getCurrentPlayer()).equals("Aggressive")) {
hudArea.setImage("HUD/QuickBar/RobotAggressiveOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotAggressive");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
hudAreaText(hudArea, "Aggressive Mode: Your robot will attack anything in site");
} else if (hudArea.getType().equals("robot_button_follow")) {
if (registry.getRobotFollowing(registry.getPlayerManager().getCurrentPlayer())) {
hudArea.setImage("HUD/QuickBar/RobotFollowOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotFollow");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
hudAreaText(hudArea, "Auto Follow: When activated, your robot will follow you around");
} else if (hudArea.getType().equals("robot_slot1")) {
invSlot = 0;
String hudAreaImage = robotInventory.getImageFromSlot(invSlot);
if (hudAreaImage != null) {
hudArea.setFGImage(hudAreaImage);
if (hudArea.isInside(registry.getMousePosition())) {
registry.setStatusText(robotInventory.getDescriptionFromSlot(invSlot));
}
}
if (registry.getRobotInventorySize() >= (invSlot + 1)) {
hudArea.setImage("HUD/QuickBar/RobotSlotOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotSlot");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
} else if (hudArea.getType().equals("robot_slot2")) {
invSlot = 1;
String hudAreaImage = robotInventory.getImageFromSlot(invSlot);
if (hudAreaImage != null) {
hudArea.setFGImage(hudAreaImage);
if (hudArea.isInside(registry.getMousePosition())) {
registry.setStatusText(robotInventory.getDescriptionFromSlot(invSlot));
}
}
if (registry.getRobotInventorySize() >= (invSlot + 1)) {
hudArea.setImage("HUD/QuickBar/RobotSlotOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotSlot");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
} else if (hudArea.getType().equals("robot_slot3")) {
invSlot = 2;
String hudAreaImage = robotInventory.getImageFromSlot(invSlot);
if (hudAreaImage != null) {
hudArea.setFGImage(hudAreaImage);
if (hudArea.isInside(registry.getMousePosition())) {
registry.setStatusText(robotInventory.getDescriptionFromSlot(invSlot));
}
}
if (registry.getRobotInventorySize() >= (invSlot + 1)) {
hudArea.setImage("HUD/QuickBar/RobotSlotOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotSlot");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
} else if (hudArea.getType().equals("robot_slot4")) {
invSlot = 3;
String hudAreaImage = robotInventory.getImageFromSlot(invSlot);
if (hudAreaImage != null) {
hudArea.setFGImage(hudAreaImage);
if (hudArea.isInside(registry.getMousePosition())) {
registry.setStatusText(robotInventory.getDescriptionFromSlot(invSlot));
}
}
if (registry.getRobotInventorySize() >= (invSlot + 1)) {
hudArea.setImage("HUD/QuickBar/RobotSlotOn");
} else {
hudArea.setImage("HUD/QuickBar/RobotSlot");
}
hudArea.setIsActive(registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer()));
} else if (hudArea.getType().equals("robot_battery_bg")) {
if (registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer())) {
hudArea.setXY(ROBOT_BATTERY_ON_X, ROBOT_BATTERY_Y);
} else {
hudArea.setXY(ROBOT_BATTERY_X, ROBOT_BATTERY_Y);
}
hudAreaText(hudArea, "Your robot's current battery level. When he runs out, he goes away.");
} else if (hudArea.getType().equals("robot_battery_bar")) {
if (registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer())) {
hudArea.setXY(ROBOT_BATTERY_BAR_ON_X, ROBOT_BATTERY_BAR_Y);
} else {
hudArea.setXY(ROBOT_BATTERY_BAR_X, ROBOT_BATTERY_BAR_Y);
}
hudAreaText(hudArea, "Your robot's current battery level. When he runs out, he goes away.");
} else if (hudArea.getType().equals("robot_battery_level")) {
if (registry.getRobotActivated(registry.getPlayerManager().getCurrentPlayer())) {
hudArea.setXY(ROBOT_BATTERY_BAR_ON_TEXT_X, ROBOT_BATTERY_BAR_TEXT_Y);
} else {
hudArea.setXY(ROBOT_BATTERY_BAR_TEXT_X, ROBOT_BATTERY_BAR_TEXT_Y);
}
hudArea.setText("100%");
hudAreaText(hudArea, "Your robot's current battery level. When he runs out, he goes away.");
} else if (hudArea.getType().equals("button_inventory")) {
hudAreaText(hudArea, "Opens your inventory and crafting window");
} else if (hudArea.getType().equals("button_report_bugs")) {
hudAreaText(hudArea, "Let us know about any problems so we can fix them!");
} else if (hudArea.getType().equals("button_pause")) {
hudAreaText(hudArea, "Pauses and UnPaused the game");
if (hudManager.getIsPaused()) {
hudArea.setImage("HUD/QuickBar/ButtonPlay");
} else {
hudArea.setImage("HUD/QuickBar/ButtonPause");
}
} else if (hudArea.getType().equals("button_help")) {
hudAreaText(hudArea, "For Noobs' eyes only");
} else if (hudArea.getType().equals("button_exit")) {
hudAreaText(hudArea, "Pauses the game and brings up some options (including save)");
}
}
}
}
super.update();
}
@Override
public void HUDAreaClicked(HUDArea ha) {
HUDArea hudArea = null;
int playerInventorySlot = 0;
int selectedStart = registry.getInvSlotFrom();
String hudFrom = "QuickBar";
for (int i = 0; i < hudAreas.size(); i++) {
hudArea = hudAreas.get(i);
playerInventorySlot = i + registry.getPlayerInventorySize(registry.getPlayerManager().getCurrentPlayer()) - SLOTS;
if (hudArea == ha) {
if (selectedStart != playerInventorySlot && registry.getSplitCount() > 0) {
if (i >= 0 && selectedStart >= 0 && registry.getPlaverInventorySlotQty(playerInventorySlot) == 0) {
if (hudAreas.get(i).getType().equals("slot") && hudAreas.get(selectedStart - registry.getPlayerInventorySize(registry.getPlayerManager().getCurrentPlayer()) + SLOTS).getType().equals("slot")) {
String in = registry.getItemNameBySlot(selectedStart);
hudManager.setPlayerSlotQuantity(selectedStart, registry.getPlaverInventorySlotQty(selectedStart) - registry.getSplitCount());
hudManager.playerAddItem(playerInventorySlot, in, registry.getSplitCount());
}
}
registry.setInvSlotFrom("QuickBar", selectedStart);
} else {
if (hudArea.getType().equals("slot")) {
selectedStart = playerInventorySlot;
hudManager.setCursorImageAndText(hudArea.getFGImage(), hudArea.getText());
} else if (hudArea.getType().equals("robot_slot1") && registry.getRobotInventorySize() >= 1) {
selectedStart = 0;
hudFrom = "QuickBarRobot";
hudManager.setCursorImageAndText(hudArea.getFGImage(), hudArea.getText());
} else if (hudArea.getType().equals("robot_slot2") && registry.getRobotInventorySize() >= 2) {
selectedStart = 1;
hudFrom = "QuickBarRobot";
hudManager.setCursorImageAndText(hudArea.getFGImage(), hudArea.getText());
} else if (hudArea.getType().equals("robot_slot3") && registry.getRobotInventorySize() >= 3) {
selectedStart = 2;
hudFrom = "QuickBarRobot";
hudManager.setCursorImageAndText(hudArea.getFGImage(), hudArea.getText());
} else if (hudArea.getType().equals("robot_slot4") && registry.getRobotInventorySize() >= 4) {
selectedStart = 3;
hudFrom = "QuickBarRobot";
hudManager.setCursorImageAndText(hudArea.getFGImage(), hudArea.getText());
} else if (hudArea.getType().equals("lock")) {
SoundClip cl = new SoundClip("Misc/Click");
registry.setIsQuickBarLocked(!registry.getIsQuickBarLocked());
} else if (hudArea.getType().equals("button_inventory")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.toggleMasterHUD();
/*} else if (hudArea.getType().equals("button_report_bugs")) {
SoundClip cl = new SoundClip("Misc/Click");
String url = "http://bugs.epicinventor.com";
try {
Desktop.getDesktop().browse(java.net.URI.create(url));
} catch (Exception e) {
}*/
} else if (hudArea.getType().equals("button_help")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.pauseMasterGame();
hudManager.loadHUD(HUDManager.HUDType.Tutorial);
} else if (hudArea.getType().equals("button_pause")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.togglePaused();
} else if (hudArea.getType().equals("button_exit")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.togglePauseHUD();
hudManager.pauseMasterGame();
} else if (hudArea.getType().equals("robot_power")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.robotToggleActivated();
} else if (hudArea.getType().equals("robot_button_passive")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.robotSetMode("Passive");
} else if (hudArea.getType().equals("robot_button_defensive")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.robotSetMode("Defensive");
} else if (hudArea.getType().equals("robot_button_aggressive")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.robotSetMode("Aggressive");
} else if (hudArea.getType().equals("robot_button_follow")) {
SoundClip cl = new SoundClip("Misc/Click");
hudManager.robotToggleFollow();
}
}
}
}
registry.setInvSlotFrom(hudFrom, selectedStart);
}
@Override
public void HUDAreaRightClicked(HUDArea ha) {
HUDArea hudArea = null;
int playerInventorySlot = 0;
int selectedStart = registry.getInvSlotFrom();
for (int i = 0; i < hudAreas.size(); i++) {
playerInventorySlot = i + registry.getPlayerInventorySize(registry.getPlayerManager().getCurrentPlayer()) - SLOTS;
hudArea = hudAreas.get(i);
if (hudArea == ha) {
int maxQty = registry.getPlaverInventorySlotQty(playerInventorySlot);
if (selectedStart == playerInventorySlot && 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 = playerInventorySlot;
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("QuickBar", selectedStart);
}
@Override
public void shiftPressed() {
shiftKeyPressed = true;
}
@Override
public void shiftRelease() {
shiftKeyPressed = false;
}
@Override
public void HUDAreaReleased(HUDArea ha) {
int playerInventorySlot = 0;
int selectedStart = registry.getInvSlotFrom();
Inventory robotInventory = registry.getRobotInventory();
if (selectedStart > -1) {
HUDArea hudAreaTo = null;
if (registry.getSplitCount() < 1) {
for (int i = 0; i < hudAreas.size(); i++) {
hudAreaTo = hudAreas.get(i);
playerInventorySlot = i + registry.getPlayerInventorySize(registry.getPlayerManager().getCurrentPlayer()) - SLOTS;
if (hudAreaTo == ha) {
if (hudAreaTo.getType().equals("slot") && selectedStart >= 0) {
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) {
int oldQty = qty;
if (hudManager.playerAddItem(playerInventorySlot, itemName, qty, level) < oldQty) {
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) {
int oldQty = qty;
if (hudManager.playerAddItem(playerInventorySlot, itemName, qty, level) < oldQty) {
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);
int level = farm.getInventory().getLevelFromSlot(selectedStart);
if (!itemName.isEmpty() && qty > 0) {
int oldQty = qty;
if (hudManager.playerAddItem(playerInventorySlot, itemName, qty, level) < oldQty) {
farm.deleteInventory(selectedStart, 0);
}
}
}
} else if (registry.getInvHUDFrom().equals("MasterHead")) {
hudManager.playerUnEquipToInventory("head", playerInventorySlot);
} else if (registry.getInvHUDFrom().equals("MasterChest")) {
hudManager.playerUnEquipToInventory("chest", playerInventorySlot);
} else if (registry.getInvHUDFrom().equals("MasterLegs")) {
hudManager.playerUnEquipToInventory("legs", playerInventorySlot);
} else if (registry.getInvHUDFrom().equals("MasterFeet")) {
hudManager.playerUnEquipToInventory("feet", playerInventorySlot);
} else if (registry.getInvHUDFrom().equals("QuickBarRobot")) {
if (robotInventory != null) {
String itemName = robotInventory.getNameFromSlot(selectedStart);
int qty = robotInventory.getQtyFromSlot(selectedStart);
if (!itemName.isEmpty() && qty > 0) {
int oldQty = qty;
if (hudManager.playerAddItem(playerInventorySlot, itemName, qty) < oldQty) {
robotInventory.deleteInventory(selectedStart, 0);
}
}
}
} else {
if (selectedStart == playerInventorySlot) {
hudManager.setPlayerSelectedItem(i);
} else {
hudManager.playerSwapInventory(selectedStart, playerInventorySlot);
}
}
} else if (hudAreaTo.getType().length() == 11 && selectedStart >= 0) {
if (hudAreaTo.getType().substring(0, 10).equals("robot_slot")) {
int slotNumber = Integer.parseInt(hudAreaTo.getType().substring(10, 11)) - 1;
String itemName = hudManager.playerGetInventoryItemName(selectedStart);
String itemType = hudManager.playerGetInventoryItemCategory(selectedStart);
int qty = hudManager.playerGetInventoryQty(selectedStart);
int level = hudManager.playerGetInventoryLevel(selectedStart);
if (itemType.equals("Attachment") && registry.getRobotInventorySize() >= (slotNumber + 1)) {
if (registry.getInvHUDFrom().equals("Container")) {
ItemContainer itemContainer = registry.getInvItemContainerFrom();
if (itemContainer != null) {
if (robotInventory.getQtyFromSlot(slotNumber) > 0) {
String oldItemName = robotInventory.getNameFromSlot(slotNumber);
int oldQty = robotInventory.getQtyFromSlot(slotNumber);
int oldLevel = robotInventory.getLevelFromSlot(slotNumber);
if (!oldItemName.isEmpty() && oldQty > 0) {
robotInventory.deleteInventory(slotNumber, 0);
robotInventory.addToInventory(slotNumber, itemName, qty, level);
itemContainer.deleteInventory(selectedStart, 0);
itemContainer.addItem(selectedStart, oldItemName, oldQty, oldLevel);
}
} else {
itemContainer.deleteInventory(selectedStart, 0);
robotInventory.addToInventory(slotNumber, itemName, qty);
}
}
} else if (registry.getInvHUDFrom().equals("PlayerContainer")) {
PlayerContainer playerContainer = registry.getInvPlayerContainerFrom();
if (playerContainer != null) {
if (robotInventory.getQtyFromSlot(slotNumber) > 0) {
String oldItemName = robotInventory.getNameFromSlot(slotNumber);
int oldQty = robotInventory.getQtyFromSlot(slotNumber);
int oldLevel = robotInventory.getLevelFromSlot(slotNumber);
if (!oldItemName.isEmpty() && oldQty > 0) {
robotInventory.deleteInventory(slotNumber, 0);
robotInventory.addToInventory(slotNumber, itemName, qty, level);
playerContainer.deleteInventory(selectedStart, 0);
playerContainer.addItem(selectedStart, oldItemName, oldQty, oldLevel);
}
} else {
playerContainer.deleteInventory(selectedStart, 0);
robotInventory.addToInventory(slotNumber, itemName, qty);
}
}
} else if (registry.getInvHUDFrom().equals("QuickBar")) {
if (!registry.getIsQuickBarLocked()) {
if (!itemName.isEmpty() && qty > 0 && robotInventory != null) {
if (robotInventory.getQtyFromSlot(slotNumber) > 0) {
String oldItemName = robotInventory.getNameFromSlot(slotNumber);
int oldQty = robotInventory.getQtyFromSlot(slotNumber);
if (!oldItemName.isEmpty() && oldQty > 0) {
robotInventory.deleteInventory(slotNumber, 0);
robotInventory.addToInventory(slotNumber, itemName, qty);
hudManager.playerDeleteInventory(selectedStart, 0);
hudManager.playerAddItem(selectedStart, oldItemName, oldQty);
}
} else {
hudManager.playerDeleteInventory(selectedStart, 0);
robotInventory.addToInventory(slotNumber, itemName, qty);
}
}
}
} else if (registry.getInvHUDFrom().equals("QuickBarRobot")) {
if (selectedStart != playerInventorySlot) {
robotInventory.swapInventoryLocations(selectedStart, slotNumber);
}
} else if (registry.getInvHUDFrom().equals("MasterHead")) {
if (robotInventory != null) {
if (robotInventory.addToInventory(slotNumber, registry.getPlaverHeadSlotName(registry.getPlayerManager().getCurrentPlayer()), qty) == 0) {
hudManager.playerEquipHead("", 1);
}
}
} else if (registry.getInvHUDFrom().equals("MasterChest")) {
if (robotInventory != null) {
if (robotInventory.addToInventory(slotNumber, registry.getPlaverChestSlotName(registry.getPlayerManager().getCurrentPlayer()), qty) == 0) {
hudManager.playerEquipChest("", 1);
}
}
} else if (registry.getInvHUDFrom().equals("MasterLegs")) {
if (robotInventory != null) {
if (robotInventory.addToInventory(slotNumber, registry.getPlaverLegsSlotName(registry.getPlayerManager().getCurrentPlayer()), qty) == 0) {
hudManager.playerEquipLegs("", 1);
}
}
} else if (registry.getInvHUDFrom().equals("MasterFeet")) {
if (robotInventory != null) {
if (robotInventory.addToInventory(slotNumber, registry.getPlaverFeetSlotName(registry.getPlayerManager().getCurrentPlayer()), qty) == 0) {
hudManager.playerEquipFeet("", 1);
}
}
} else {
if (!itemName.isEmpty() && qty > 0 && robotInventory != null) {
if (robotInventory.getQtyFromSlot(slotNumber) > 0) {
String oldItemName = robotInventory.getNameFromSlot(slotNumber);
int oldQty = robotInventory.getQtyFromSlot(slotNumber);
if (!oldItemName.isEmpty() && oldQty > 0) {
robotInventory.deleteInventory(slotNumber, 0);
robotInventory.addToInventory(slotNumber, itemName, qty);
hudManager.playerDeleteInventory(selectedStart, 0);
hudManager.playerAddItem(selectedStart, oldItemName, oldQty);
}
} else {
hudManager.playerDeleteInventory(selectedStart, 0);
robotInventory.addToInventory(slotNumber, itemName, qty);
}
}
}
}
PlayerManager pm = registry.getPlayerManager();
if(pm != null) {
Player p = pm.getCurrentPlayer();
if(p != null) {
p.getRobot().updateArmorPoints();
}
}
}
}
}
}
}
registry.setSplitCount(0);
}
registry.setInvSlotFrom("", selectedStart);
}
}