package com.weem.epicinventor.hud; import com.weem.epicinventor.*; import java.awt.*; import java.util.ArrayList; public class HUDScreenNewCharacter extends HUD { private final static int TITLE_WIDTH = 420; private final static int TITLE_HEIGHT = 37; private final static int TITLE_X = 188; private final static int TITLE_Y = 110; private final static int LABEL_CHARACTER_NAME_WIDTH = 186; private final static int LABEL_CHARACTER_NAME_HEIGHT = 18; private final static int LABEL_CHARACTER_NAME_X = 314; private final static int LABEL_CHARACTER_NAME_Y = 214; private final static int LABEL_ROBOT_NAME_WIDTH = 146; private final static int LABEL_ROBOT_NAME_HEIGHT = 18; private final static int LABEL_ROBOT_NAME_X = 334; private final static int LABEL_ROBOT_NAME_Y = 314; private final static int CHARACTER_NAME_WIDTH = 372; private final static int CHARACTER_NAME_HEIGHT = 52; private final static int CHARACTER_NAME_X = 211; private final static int CHARACTER_NAME_Y = 241; private final static int CHARACTER_NAME_TEXT_X = 25; private final static int CHARACTER_NAME_TEXT_Y = 35; private final static int ROBOT_NAME_WIDTH = 372; private final static int ROBOT_NAME_HEIGHT = 52; private final static int ROBOT_NAME_X = 211; private final static int ROBOT_NAME_Y = 340; private final static int ROBOT_NAME_TEXT_X = 25; private final static int ROBOT_NAME_TEXT_Y = 35; private final static int BUTTON_BACK_WIDTH = 146; private final static int BUTTON_BACK_HEIGHT = 40; private final static int BUTTON_BACK_X = 217; private final static int BUTTON_BACK_Y = 469; private final static int BUTTON_CREATE_WIDTH = 146; private final static int BUTTON_CREATE_HEIGHT = 40; private final static int BUTTON_CREATE_X = 431; private final static int BUTTON_CREATE_Y = 469; private final static int BUTTON_RED_X_WIDTH = 42; private final static int BUTTON_RED_X_HEIGHT = 42; private final static int BUTTON_RED_X_X = 733; private final static int BUTTON_RED_X_Y = 25; private final static int MAX_CHARS = 15; private final static int BUTTON_DONATE_WIDTH = 119; private final static int BUTTON_DONATE_HEIGHT = 102; private final static int BUTTON_DONATE_X = 33; private final static int BUTTON_DONATE_Y = 155; private final static int BUTTON_HELP_WIDTH = 119; private final static int BUTTON_HELP_HEIGHT = 102; private final static int BUTTON_HELP_X = 646; private final static int BUTTON_HELP_Y = 155; private boolean cursorShow; private float cursorTotalTime; private float CURSOR_MAX_TIME = 0.25f; private String characterName = ""; private String robotName = ""; private String textFocus = "Character"; public HUDScreenNewCharacter(HUDManager hm, Registry rg, int x, int y, int w, int h) { super(hm, rg, x, y, w, h); setImage("HUD/ScreenNewCharacter/BG"); HUDArea hudArea = null; //title hudArea = addArea(TITLE_X, TITLE_Y, TITLE_WIDTH, TITLE_HEIGHT, "title"); hudArea.setImage("HUD/ScreenNewCharacter/TitleNewCharacter"); //character name hudArea = addArea(LABEL_CHARACTER_NAME_X, LABEL_CHARACTER_NAME_Y, LABEL_CHARACTER_NAME_WIDTH, LABEL_CHARACTER_NAME_HEIGHT, "label_character_name"); hudArea.setImage("HUD/ScreenNewCharacter/LabelCharacterName"); hudArea = addArea(CHARACTER_NAME_X, CHARACTER_NAME_Y, CHARACTER_NAME_WIDTH, CHARACTER_NAME_HEIGHT, "character_name"); hudArea.setImage("HUD/ScreenNewCharacter/BGText"); hudArea.setFont("SansSerif", Font.BOLD, 28); hudArea.setTextXY(CHARACTER_NAME_TEXT_X, CHARACTER_NAME_TEXT_Y); //robot name hudArea = addArea(LABEL_ROBOT_NAME_X, LABEL_ROBOT_NAME_Y, LABEL_ROBOT_NAME_WIDTH, LABEL_ROBOT_NAME_HEIGHT, "label_robot_name"); hudArea.setImage("HUD/ScreenNewCharacter/LabelRobotName"); hudArea = addArea(ROBOT_NAME_X, ROBOT_NAME_Y, ROBOT_NAME_WIDTH, ROBOT_NAME_HEIGHT, "robot_name"); hudArea.setImage("HUD/ScreenNewCharacter/BGText"); hudArea.setFont("SansSerif", Font.BOLD, 28); hudArea.setTextXY(ROBOT_NAME_TEXT_X, ROBOT_NAME_TEXT_Y); //back hudArea = addArea(BUTTON_BACK_X, BUTTON_BACK_Y, BUTTON_BACK_WIDTH, BUTTON_BACK_HEIGHT, "back"); hudArea.setImage("HUD/ScreenNewCharacter/ButtonBack"); //create hudArea = addArea(BUTTON_CREATE_X, BUTTON_CREATE_Y, BUTTON_CREATE_WIDTH, BUTTON_CREATE_HEIGHT, "create"); hudArea.setImage("HUD/ScreenNewCharacter/ButtonCreate"); hudArea.setIsActive(false); //donate hudArea = addArea(BUTTON_DONATE_X, BUTTON_DONATE_Y, BUTTON_DONATE_WIDTH, BUTTON_DONATE_HEIGHT, "donate"); hudArea.setImage("HUD/Common/Donate"); //help //hudArea = addArea(BUTTON_HELP_X, BUTTON_HELP_Y, BUTTON_HELP_WIDTH, BUTTON_HELP_HEIGHT, "help"); //hudArea.setImage("HUD/Common/Help"); } @Override public void newCharacterKey(int k, Character c) { newCharacterKey(k, c, false); } @Override public void newCharacterKey(int k, Character c, boolean tab) { if (tab) { textTab(); } else { //pressed a letter, number or space if ((k >= 65 && k <= 90) //a-z || (k >= 48 && k <= 57) //0-9 || (k >= 96 && k <= 105) //0-9 || k == 32 //space || k == 46 //period || k == 110 //period ) { if (textFocus.equals("Character")) { if (characterName.length() < MAX_CHARS) { characterName += c; } } else { if (robotName.length() < MAX_CHARS) { robotName += c; } } } //pressed the backspace if (k == 8) { if (textFocus.equals("Character")) { if (!characterName.isEmpty()) { characterName = characterName.substring(0, characterName.length() - 1); } } else { if (!robotName.isEmpty()) { robotName = robotName.substring(0, robotName.length() - 1); } } } //pressed the enter key if (k == 10) { textTab(); } } } private void textTab() { if (textFocus.equals("Character")) { textFocus = "Robot"; } else { textFocus = "Character"; } } @Override public void update() { if (shouldRender) { //make the cursor flash long p = registry.getImageLoader().getPeriod(); cursorTotalTime = (cursorTotalTime + registry.getImageLoader().getPeriod()) % (long) (1000 * CURSOR_MAX_TIME * 2); if ((cursorTotalTime / (CURSOR_MAX_TIME * 1000)) > 1) { cursorTotalTime = 0; cursorShow = !cursorShow; } HUDArea hudArea; for (int i = 0; i < hudAreas.size(); i++) { hudArea = hudAreas.get(i); if (hudArea.getType().equals("character_name")) { if (textFocus.equals("Character") && cursorShow) { hudArea.setText(characterName + "_"); } else { hudArea.setText(characterName); } } else if (hudArea.getType().equals("robot_name")) { if (textFocus.equals("Robot") && cursorShow) { hudArea.setText(robotName + "_"); } else { hudArea.setText(robotName); } } else if (hudArea.getType().equals("create")) { if (!characterName.trim().isEmpty() && !robotName.trim().isEmpty()) { hudArea.setIsActive(true); } else { hudArea.setIsActive(false); } } } } super.update(); } @Override public void HUDAreaClicked(HUDArea ha) { HUDArea hudArea = null; for (int i = 0; i < hudAreas.size(); i++) { hudArea = hudAreas.get(i); if (hudArea == ha) { if (hudArea.getType().equals("character_name")) { textFocus = "Character"; } else if (hudArea.getType().equals("robot_name")) { textFocus = "Robot"; } else if (hudArea.getType().equals("create")) { ArrayList players = Settings.getPlayerList(); for (int j = 0; j < players.size(); j++) { if (Settings.getPlayers().get(j) == null) { Settings.player = j; break; } } hudManager.setNames(characterName, robotName); hudManager.unloadHUD(name); hudManager.resetGame(true); } else if (hudArea.getType().equals("back")) { //see if we have players boolean playerFound = false; ArrayList players = Settings.getPlayerList(); for (int x = 0; x < players.size(); x++) { if (players.get(x) != null) { if (!players.get(x).toString().isEmpty()) { playerFound = true; } } } if (!playerFound) { hudManager.unloadHUD(name); hudManager.loadHUD(HUDManager.HUDType.ScreenMain); } else { hudManager.unloadHUD(name); hudManager.loadHUD(HUDManager.HUDType.ScreenCharacterSelection); } } else if (hudArea.getType().equals("red_x")) { hudManager.gameExit(); } else if (hudArea.getType().equals("donate")) { String url = "http://www.epicinventor.com/donate.html"; try { Desktop.getDesktop().browse(java.net.URI.create(url)); } catch (Exception e) { } } else if (hudArea.getType().equals("help")) { String url = "http://www.epicinventor.com/help.html"; try { Desktop.getDesktop().browse(java.net.URI.create(url)); } catch (Exception e) { } } } } } }