private void changeLanguage() { for (int i = 0; i < NUM_BOXES; i++) { boxs[i].setText(txt[currMenu.ordinal()][i]); subBoxs[i].setText(txt[currSubMenu.ordinal()][i]); } // for (int i = 0; i < NUM_SUB_BOXES; i++) // { // subMenuBoxs[i].setText(t); // } }
private void changeMenu(int i) { Menu m = nxtMenu[currMenu.ordinal()][i]; if (m != Menu.NONE) { this.currMenu = m; subMenuVisible = false; // Animate boxes for (int n = 0; n < NUM_BOXES; n++) { boxs[n] .setPos(boxStartPos) .setText(txt[currMenu.ordinal()][n]); // .setSize(boxStartSize[1]); } } else { // TODO: put in special cases for things like 'quit' and options(sound, language etc.) here switch (currMenu) { case NONE: case MAIN: // When click on find opponent currSubMenu = currMenu; submenuSelected(0); break; case NEW_GAME: switch (i) { case 1: game.gameType = Game.SINGLE_PLY; game.startNewGame(); break; case 2: game.gameType = Game.LOCAL_MULTI; game.startNewGame(); break; } break; case FIND_OPPONENT: switch (i) { } break; case OPTIONS: changeSubmenu(Menu.GENERAL.ordinal(), i); break; case CHECK: switch (i) { case 1: System.exit(0); break; } break; } } SoundManager.MENUCLICK.play(); }
/* * Finds menu in Menu enum with specified index */ private Menu calcMenuFromId(int i) { for (Menu m : Menu.values()) { if (m.ordinal() == i) { return m; } } return Menu.NONE; }
/* * Setups up menus boxes in correct positions */ private void setupBoxes() { int yoffset = 90; this.boxs = new Box[NUM_BOXES]; this.subBoxs = new Box[NUM_BOXES]; this.subMenuBoxs = new Box[NUM_SUB_BOXES]; this.textFields = new TextField[NUM_TEXT_FIELDS]; boxStartPos = new Vector2D((winSize.width - Box.size) / 2, (winSize.height - Box.size) / 2 + yoffset); this.centralBox = new Box(boxStartPos, "").setColor(Color.DARK_GRAY, Color.BLACK).setImage(game.imgs[1]); // TODO: Change dimensions subBoxStartPos = new Vector2D(winSize.width / 2 - Box.size * 3, (winSize.height - Box.size) / 2); for (int i = 0; i < NUM_BOXES; i++) { boxs[i] = new Box() .setPos(boxStartPos) .setSizeBoth(Box.size, Box.size) .setText(txt[currMenu.ordinal()][i]); subBoxs[i] = new Box().setPos(subBoxStartPos).setSizeBoth(Box.subSizeW, Box.subSizeH); } for (int i = 0; i < NUM_SUB_BOXES; i++) { subMenuBoxs[i] = new Box().setColor(Color.BLACK, Color.WHITE).setSizeBoth(Box.iconSize, Box.iconSize); } for (int i = 0; i < NUM_TEXT_FIELDS; i++) { textFields[i] = new TextField(); textFields[i].setVisible(false); game.add(textFields[i]); } // Set positions to end in after animation boxs[0].setFinalPos( new Vector2D( (winSize.width - Box.size) / 2, (winSize.height - Box.size * 3) / 2 + yoffset)); boxs[1].setFinalPos( new Vector2D( (winSize.width - Box.size * 3) / 2, (winSize.height - Box.size) / 2 + yoffset)); boxs[2].setFinalPos( new Vector2D((winSize.width + Box.size) / 2, (winSize.height - Box.size) / 2 + yoffset)); boxs[3].setFinalPos( new Vector2D((winSize.width - Box.size) / 2, (winSize.height + Box.size) / 2 + yoffset)); // SubMenuBoxes[0] is always back button Vector2D p = centralBoxSubmenuPos = new Vector2D( boxs[0].getFinalPos().x - Box.size / 2, boxs[0].getFinalPos().y + Box.size / 2); subMenuBoxs[0] = new Box(new Vector2D(p.x + 2 * Box.size / 2 - 50, p.y + 2 * Box.size - 30), "BACK") .setSizeBoth(100, 30) .setColor(Color.BLACK, Color.WHITE); }
/* * Animates subboxes depending on which main box was pressed */ private void animateSubBoxesAndSetText(int i) { // Set final position depending on main box pressed Vector2D p = null; switch (i) { case 0: case 3: p = boxs[i].getFinalPos(); for (int j = 0; j < NUM_BOXES; j++) { if (j < 2) subBoxs[j].setFinalPos( new Vector2D(p.x - Box.subSizeW, p.y + 6 + j * (Box.subSizeH + 6))); else subBoxs[j].setFinalPos( new Vector2D(p.x + Box.size, p.y + 6 + (j - 2) * (Box.subSizeH + 6))); } break; case 1: case 2: int ofst = (i == 2) ? 1 : -1; p = boxs[i].getFinalPos(); for (int j = 0; j < NUM_BOXES; j++) { subBoxs[j].setFinalPos( new Vector2D(p.x + ofst * Box.subSizeW, p.y + 6 + j * (Box.subSizeH + 6))); } break; } subBoxStartPos = new Vector2D(p.x, p.y); // Animate subBoxes for (int n = 0; n < NUM_BOXES; n++) { subBoxs[n] .setPos(subBoxStartPos) .setText(txt[currSubMenu.ordinal()][n]); // .setSize(subBoxStartSize); } }