177 lines
8.1 KiB
Java
177 lines
8.1 KiB
Java
package electrosphere.menu;
|
|
|
|
import electrosphere.game.server.saves.SaveUtils;
|
|
import electrosphere.main.Globals;
|
|
import electrosphere.menu.Menu.MenuType;
|
|
import electrosphere.net.NetUtils;
|
|
import electrosphere.net.server.Server;
|
|
import electrosphere.renderer.ui.Widget;
|
|
import electrosphere.renderer.ui.WidgetUtils;
|
|
import electrosphere.renderer.ui.Window;
|
|
import electrosphere.renderer.ui.label.Label;
|
|
import electrosphere.renderer.ui.widgets.ImagePanel;
|
|
import java.util.List;
|
|
import org.joml.Vector3f;
|
|
|
|
/**
|
|
*
|
|
* @author amaterasu
|
|
*/
|
|
public class MenuUtils {
|
|
|
|
|
|
public static Menu createTitleMenu(){
|
|
Menu rVal = new Menu(MenuType.TITLE_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
rVal.addElement(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop, "ORPG", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 125, "SINGLEPLAYER", true));
|
|
rVal.setMenuOptionColor(0, new Vector3f(0.2f,0.8f,0.5f));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 200, "MULTIPLAYER", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 275, "ARENA", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 350, "OPTIONS", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 425, "UI TESTING", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createWorldSelectMenu(){
|
|
Menu rVal = new Menu(MenuType.WORLD_SELECT_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
List<String> saveNames = SaveUtils.getSaves();
|
|
int verticalPosition = 125;
|
|
for(String saveName : saveNames){
|
|
if(!saveName.startsWith(".")){
|
|
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - verticalPosition, saveName.toUpperCase(), true));
|
|
verticalPosition = verticalPosition + 75;
|
|
}
|
|
}
|
|
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - verticalPosition - 200, "CREATE WORLD", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createWorldCreationMenu(){
|
|
Menu rVal = new Menu(MenuType.WORLD_CREATE_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
List<String> saveNames = SaveUtils.getSaves();
|
|
int verticalPosition = 125;
|
|
//TODO: add text input to name world
|
|
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 125, "CREATE WORLD", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createSaveCreationMenu(){
|
|
Menu rVal = new Menu(MenuType.SAVE_CREATE_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 125, "SAVE", true));
|
|
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 200, "CANCEL", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createCharacterCreationMenu(){
|
|
Menu rVal = new Menu(MenuType.CHARACTER_CREATE_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
List<String> saveNames = SaveUtils.getSaves();
|
|
int verticalPosition = 125;
|
|
//TODO: add text input to name world
|
|
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - verticalPosition, "CREATE WORLD", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createFinalizeSaveCReationMenu(){
|
|
Menu rVal = new Menu(MenuType.FINALIZE_SAVE_CREATION_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
List<String> saveNames = SaveUtils.getSaves();
|
|
int verticalPosition = 125;
|
|
//TODO: add text input to name world
|
|
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - verticalPosition, "CREATE WORLD", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createMultiplayerMenu(){
|
|
Menu rVal = new Menu(MenuType.MULTIPLAYER_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 125, "HOST", true));
|
|
rVal.setMenuOptionColor(0, new Vector3f(0.2f,0.8f,0.5f));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 200, "JOIN", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 275, "BACK", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createIPMenu(){
|
|
Menu rVal = new Menu(MenuType.IP_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
|
|
rVal.addElement(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 50, "IP ADDRESS", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedEditableTextBox(40*15, 40, screenTop - 125, 15, 1, NetUtils.getAddress(), true));
|
|
rVal.setMenuOptionColor(0, new Vector3f(0.2f,0.8f,0.5f));
|
|
rVal.addElement(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 200, "PORT", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedEditableTextBox(40*5, 40, screenTop - 275, 5, 1, NetUtils.DEFAULT_PORT + "", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 350, "CONNECT", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 425, "BACK", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createOptionsMainMenu(){
|
|
Menu rVal = new Menu(MenuType.OPTIONS_MAIN_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
|
|
rVal.addElement(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 50, "OPTIONS", true));
|
|
rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 275, "BACK", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createInGameMainMenu(){
|
|
Menu rVal = new Menu(MenuType.IN_GAME_MAIN_MENU);
|
|
int screenTop = Globals.WINDOW_HEIGHT - 150;
|
|
int width = 500;
|
|
int height = 500;
|
|
int screenLeft = (Globals.WINDOW_WIDTH - width)/2;
|
|
Window menuWindow = new Window(100, 100, 500, 500);
|
|
|
|
//black texture background
|
|
ImagePanel imagePanel = new ImagePanel(0,0,width,height);
|
|
imagePanel.setWidth(width);
|
|
imagePanel.setHeight(height);
|
|
imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
|
|
menuWindow.addWidget(imagePanel);
|
|
|
|
//label 1 (back)
|
|
Label backLabel = new Label(100,50,1.0f);
|
|
backLabel.setText("BACK");
|
|
menuWindow.addWidget(backLabel);
|
|
rVal.addOption(backLabel);
|
|
|
|
|
|
//label 2 (quit)
|
|
Label quitLabel = new Label(100,150,1.0f);
|
|
quitLabel.setText("QUIT");
|
|
menuWindow.addWidget(quitLabel);
|
|
rVal.addOption(quitLabel);
|
|
|
|
|
|
rVal.addElement(menuWindow);
|
|
Globals.widgetManager.registerWidget(menuWindow);
|
|
// rVal.addElement(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 50, "BACK", true));
|
|
// rVal.addOption( WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 275, "QUIT", true));
|
|
return rVal;
|
|
}
|
|
|
|
public static Menu createTestMainMenu(){
|
|
Menu rVal = new Menu(MenuType.TEST);
|
|
rVal.addElement(WidgetUtils.createWindowTEST());
|
|
return rVal;
|
|
}
|
|
|
|
public static void makeMenuDrawable(Menu m){
|
|
for(Widget w : m.widgetList){
|
|
w.setVisible(true);
|
|
}
|
|
}
|
|
|
|
public static void makeMenuUndrawable(Menu m){
|
|
for(Widget w : m.widgetList){
|
|
w.setVisible(false);
|
|
}
|
|
}
|
|
|
|
}
|