package com.weem.epicinventor.hud;
import com.weem.epicinventor.*;
import com.weem.epicinventor.actor.*;
import com.weem.epicinventor.weapon.*;
import java.awt.*;
import java.text.*;
import java.util.Locale.*;
public class HUDWeaponInfo extends HUD {
private final static int NAME_X = 10;
private final static int NAME_Y = 5;
private final static int NAME_WIDTH = 210;
private final static int NAME_HEIGHT = 32;
private final static int BASE_X = 36;
private final static int BASE_Y = 78;
private final static int BASE_WIDTH = 35;
private final static int BASE_HEIGHT = 21;
private final static int WEAPON_X = 100;
private final static int WEAPON_Y = 78;
private final static int WEAPON_WIDTH = 35;
private final static int WEAPON_HEIGHT = 21;
private final static int TOTAL_X = 165;
private final static int TOTAL_Y = 78;
private final static int TOTAL_WIDTH = 35;
private final static int TOTAL_HEIGHT = 21;
private final static int SPEED_X = 45;
private final static int SPEED_Y = 135;
private final static int SPEED_WIDTH = 45;
private final static int SPEED_HEIGHT = 35;
private final static int DPS_X = 140;
private final static int DPS_Y = 135;
private final static int DPS_WIDTH = 45;
private final static int DPS_HEIGHT = 35;
private final static int OFFSET_1 = 5;
private final static int OFFSET_2 = 7;
public HUDWeaponInfo(HUDManager hm, Registry rg, int x, int y, int w, int h) {
super(hm, rg, x, y, w, h);
setImage("HUD/WeaponInfo/BG");
HUDArea hudArea = null;
//name
hudArea = addArea(NAME_X, NAME_Y, NAME_WIDTH, NAME_HEIGHT, "name");
hudArea.setFont("SansSerif", Font.BOLD, 24);
//base
hudArea = addArea(BASE_X, BASE_Y, BASE_WIDTH, BASE_HEIGHT, "base");
hudArea.setFont("SansSerif", Font.BOLD, 20);
//weapon
hudArea = addArea(WEAPON_X, WEAPON_Y, WEAPON_WIDTH, WEAPON_HEIGHT, "weapon");
hudArea.setFont("SansSerif", Font.BOLD, 20);
//total
hudArea = addArea(TOTAL_X, TOTAL_Y, TOTAL_WIDTH, TOTAL_HEIGHT, "total");
hudArea.setFont("SansSerif", Font.BOLD, 20);
//speed
hudArea = addArea(SPEED_X, SPEED_Y, SPEED_WIDTH, SPEED_HEIGHT, "speed");
hudArea.setFont("SansSerif", Font.BOLD, 24);
//dps
hudArea = addArea(DPS_X, DPS_Y, DPS_WIDTH, DPS_HEIGHT, "dps");
hudArea.setFont("SansSerif", Font.BOLD, 24);
shouldRender = false;
}
@Override
public void update() {
if (shouldRender) {
Player p = registry.getPlayerManager().getCurrentPlayer();
if (p != null) {
HUDArea hudArea;
WeaponType newWeaponType = Weapon.getWeaponType(registry.getWeaponType());
if (newWeaponType != null) {
int[] damages = newWeaponType.getDamage();
int damage = damages[registry.getWeaponLevel()];
double speed = (float) newWeaponType.getSpeed() / 1000d;
String speedString = Double.toString(speed);
if(speedString.contains(",")) {
speed = Double.parseDouble(speedString.replace(",", "."));
}
int attackBonus = p.getAttackBonus();
if(registry.getWeaponType().equals("AutoHandCannon")) {
attackBonus = attackBonus / 4;
}
int total = attackBonus + damage;
int playerLevel = p.getLevel();
int weaponLevel = registry.getWeaponLevel();
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
dfs.setGroupingSeparator(',');
DecimalFormat twoDForm = new DecimalFormat("0.00", dfs);
for (int i = 0; i < hudAreas.size(); i++) {
hudArea = hudAreas.get(i);
if (hudArea.getType().equals("name")) {
String itemName = registry.getWeaponType();
itemName = itemName.replace("Blade", " Blade");
itemName = itemName.replace("Hammer", " Hammer");
itemName = itemName.replace("Spear", " Spear");
itemName = itemName.replace("Sword", " Sword");
itemName = itemName.replace("CrossBow", " Cross Bow");
itemName = itemName.replace("AutoHand", "Auto");
itemName = itemName.replace("Cannon", " Cannon");
itemName = itemName.replace("SlingShot", " Sling Shot");
hudArea.setText(itemName + " " + registry.getWeaponLevel());
if (weaponLevel == 20) {
hudArea.setTextColor(Color.MAGENTA);
} else if (weaponLevel <= playerLevel) {
hudArea.setTextColor(Color.WHITE);
} else if (weaponLevel == playerLevel + 1) {
hudArea.setTextColor(Color.GREEN);
} else if (weaponLevel == playerLevel + 2) {
hudArea.setTextColor(Color.BLUE);
} else {
hudArea.setTextColor(Color.MAGENTA);
}
} else if (hudArea.getType().equals("base")) {
hudArea.setText(Integer.toString(attackBonus));
if (Integer.toString(attackBonus).length() == 1) {
hudArea.setXY(BASE_X + (OFFSET_1 * 2), BASE_Y);
} else if (Integer.toString(attackBonus).length() == 2) {
hudArea.setXY(BASE_X + OFFSET_1, BASE_Y);
} else if (Integer.toString(attackBonus).length() == 3) {
hudArea.setXY(BASE_X, BASE_Y);
}
} else if (hudArea.getType().equals("weapon")) {
hudArea.setText(Integer.toString(damage));
if (Integer.toString(damage).length() == 1) {
hudArea.setXY(WEAPON_X + (OFFSET_1 * 2), WEAPON_Y);
} else if (Integer.toString(damage).length() == 2) {
hudArea.setXY(WEAPON_X + OFFSET_1, WEAPON_Y);
} else if (Integer.toString(damage).length() == 3) {
hudArea.setXY(WEAPON_X, WEAPON_Y);
}
} else if (hudArea.getType().equals("total")) {
hudArea.setText(Integer.toString(total));
if (Integer.toString(total).length() == 1) {
hudArea.setXY(TOTAL_X + (OFFSET_1 * 2), TOTAL_Y);
} else if (Integer.toString(total).length() == 2) {
hudArea.setXY(TOTAL_X + OFFSET_1, TOTAL_Y);
} else if (Integer.toString(total).length() == 3) {
hudArea.setXY(TOTAL_X, TOTAL_Y);
}
} else if (hudArea.getType().equals("speed")) {
try {
hudArea.setText(Float.toString(Float.valueOf(twoDForm.format(speed))));
} catch (Exception e) {
System.out.println(e.getMessage());
}
} else if (hudArea.getType().equals("dps")) {
int dps = (int) ((float) total / speed);
hudArea.setText(Integer.toString(dps));
if (Integer.toString(dps).length() == 1) {
hudArea.setXY(DPS_X + (OFFSET_2 * 3), DPS_Y);
} else if (Integer.toString(dps).length() == 2) {
hudArea.setXY(DPS_X + (OFFSET_2 * 2), DPS_Y);
} else if (Integer.toString(dps).length() == 3) {
hudArea.setXY(DPS_X + (OFFSET_2 * 1), DPS_Y);
} else if (Integer.toString(dps).length() == 4) {
hudArea.setXY(DPS_X, DPS_Y);
}
}
}
}
}
}
super.update();
}
}