ui work
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2024-09-17 19:00:28 -04:00
parent e6a30cb09b
commit 47d60f46ee
18 changed files with 160 additions and 474 deletions

View File

@ -783,6 +783,8 @@ Remove legacy UI handling of positioning -- entirely reliant on yoga now
(09/17/2024)
Framebuffer position drilling
Redesign inventory menu
Remove deprecated ui constructors
# TODO

View File

@ -10,14 +10,13 @@ import electrosphere.entity.scene.SceneGenerator;
import electrosphere.menu.mainmenu.MenuGeneratorsKeybind;
import electrosphere.menu.mainmenu.MenuGeneratorsTitleMenu;
import electrosphere.net.NetUtils;
import electrosphere.renderer.ui.components.InputMacros;
import electrosphere.renderer.ui.elements.Button;
import electrosphere.renderer.ui.elements.Div;
import electrosphere.renderer.ui.elements.FormElement;
import electrosphere.renderer.ui.elements.Label;
import electrosphere.renderer.ui.elements.TextInput;
import electrosphere.renderer.ui.elementtypes.ClickableElement;
import electrosphere.renderer.ui.elementtypes.Element;
import electrosphere.renderer.ui.events.ClickEvent;
import electrosphere.server.saves.SaveUtils;
/**
@ -33,19 +32,12 @@ public class MenuGenerators {
public static Element createWorldSelectMenu(){
FormElement rVal = new FormElement();
// int screenTop = Globals.WINDOW_HEIGHT - 150;
List<String> saveNames = SaveUtils.getSaves();
int verticalPosition = 125;
for(String saveName : saveNames){
if(!saveName.startsWith(".")){
//button (select save)
Button selectButton = new Button();
Label selectLabel = new Label(1.0f);
selectLabel.setText(saveName.toUpperCase());
selectButton.addChild(selectLabel);
rVal.addChild(selectButton);
selectButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton(saveName.toUpperCase(), () -> {
if(SaveUtils.saveHasWorldFile(saveName.toLowerCase())){
//need to log client in
Globals.clientUsername = "username";
@ -60,50 +52,35 @@ public class MenuGenerators {
SaveUtils.loadSave(saveName.toLowerCase(), false);
WindowUtils.replaceMainMenuContents(MenuGenerators.createSaveCreationMenu());
}
return false;
}});
}));
verticalPosition = verticalPosition + 75;
}
}
//button (create)
Button createButton = new Button();
Label createLabel = new Label(1.0f);
createLabel.setText("Create World");
createButton.addChild(createLabel);
rVal.addChild(createButton);
createButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Create World", () -> {
WindowUtils.replaceMainMenuContents(MenuGenerators.createWorldCreationMenu());
return false;
}});
}));
return rVal;
}
public static Element createWorldCreationMenu(){
FormElement rVal = new FormElement();
int screenTop = 150;
//TODO: add text input to name world
//text entry (address)
TextInput worldNameInput = new TextInput(100,screenTop + 125,1.0f);
TextInput worldNameInput = TextInput.createTextInput();
worldNameInput.setMinWidth(100);
worldNameInput.setText("World name");
rVal.addChild(worldNameInput);
//button (create)
Button createButton = new Button();
Label createLabel = new Label(1.0f);
createLabel.setText("Create");
createButton.addChild(createLabel);
rVal.addChild(createButton);
createButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Create", () -> {
String saveName = worldNameInput.getText();
//create save dir
SaveUtils.createOrOverwriteSave(saveName, SceneGenerator.createProceduralSceneFile(saveName));
WindowUtils.replaceMainMenuContents(MenuGenerators.createWorldSelectMenu());
return false;
}});
}));
return rVal;
}
@ -112,28 +89,15 @@ public class MenuGenerators {
FormElement rVal = new FormElement();
//button (save)
Button saveButton = new Button();
Label saveLabel = new Label(1.0f);
saveLabel.setText("Save");
saveButton.addChild(saveLabel);
rVal.addChild(saveButton);
saveButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
// SaveUtils.saveWorldData(Globals.currentSave.getName());
rVal.addChild(Button.createButton("Save", () -> {
WindowUtils.replaceMainMenuContents(MenuGenerators.createWorldSelectMenu());
throw new UnsupportedOperationException("Need to update to use new save flow");
// return false;
}});
}));
//button (cancel)
Button cancelButton = new Button();
Label cancelLabel = new Label(1.0f);
cancelLabel.setText("Cancel");
cancelButton.addChild(cancelLabel);
rVal.addChild(cancelButton);
saveButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Cancel", () -> {
WindowUtils.replaceMainMenuContents(MenuGenerators.createWorldSelectMenu());
return false;
}});
}));
return rVal;
}
@ -144,11 +108,9 @@ public class MenuGenerators {
//TODO: add text input to name world
//button (create)
Button createButton = new Button();
Label createLabel = new Label(1.0f);
createLabel.setText("Create World");
createButton.addChild(createLabel);
rVal.addChild(createButton);
rVal.addChild(Button.createButton("Create World", () -> {
throw new UnsupportedOperationException("Unimplemented");
}));
return rVal;
@ -160,11 +122,9 @@ public class MenuGenerators {
//TODO: add text input to name world
//button (create)
Button createButton = new Button();
Label createLabel = new Label(1.0f);
createLabel.setText("Create World");
createButton.addChild(createLabel);
rVal.addChild(createButton);
rVal.addChild(Button.createButton("Create World", () -> {
throw new UnsupportedOperationException("Unimplemented");
}));
return rVal;
}
@ -173,114 +133,87 @@ public class MenuGenerators {
FormElement rVal = new FormElement();
//button (host)
Button hostButton = new Button();
Label hostLabel = new Label(1.0f);
hostLabel.setText("Host");
hostButton.addChild(hostLabel);
rVal.addChild(hostButton);
hostButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Host", () -> {
LoadingThread clientThread = new LoadingThread(LoadingThreadType.CHARACTER_SERVER);
LoadingThread serverThread = new LoadingThread(LoadingThreadType.MAIN_GAME);
Globals.RUN_CLIENT = true;
Globals.RUN_SERVER = true;
Globals.threadManager.start(serverThread);
Globals.threadManager.start(clientThread);
return false;
}});
}));
//button (join)
Button joinButton = new Button();
Label joinLabel = new Label(1.0f);
joinLabel.setText("Join");
joinButton.addChild(joinLabel);
rVal.addChild(joinButton);
joinButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Join", () -> {
WindowUtils.replaceMainMenuContents(MenuGenerators.createIPMenu());
return false;
}});
}));
//button (back)
Button connectButton = new Button();
Label connectLabel = new Label(1.0f);
connectLabel.setText("Back");
connectButton.addChild(connectLabel);
rVal.addChild(connectButton);
connectButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Back", () -> {
WindowUtils.replaceMainMenuContents(MenuGeneratorsTitleMenu.createTitleMenu());
return false;
}});
}));
return rVal;
}
public static Element createIPMenu(){
FormElement rVal = new FormElement();
int screenTop = 150;
//label (address)
Label addressLabel = new Label(1.0f);
addressLabel.setText("IP Address");
rVal.addChild(addressLabel);
//text entry (address)
TextInput addressInput = new TextInput(100,screenTop + 125,1.0f);
//
//Address input
//
String ipAddress = "";
if(Globals.netConfig != null && Globals.netConfig.getAddress() != null){
addressInput.setText(Globals.netConfig.getAddress());
ipAddress = Globals.netConfig.getAddress();
} else {
addressInput.setText(NetUtils.getAddress());
ipAddress = NetUtils.getAddress();
}
rVal.addChild(addressInput);
Div addressControl = InputMacros.createTextInputVertical("IP Address", ipAddress);
TextInput addressInput = (TextInput)addressControl.getChildren().get(1);
rVal.addChild(addressControl);
//label (port)
Label portLabel = new Label(1.0f);
portLabel.setText("Port");
rVal.addChild(portLabel);
//text entry (port)
TextInput portInput = new TextInput(100,screenTop + 275,1.0f);
//
//Port input
//
String port = "";
if(Globals.netConfig != null && Globals.netConfig.getPort() != null){
portInput.setText(Globals.netConfig.getPort());
port = Globals.netConfig.getPort();
} else {
portInput.setText(NetUtils.getPort() + "");
port = NetUtils.getPort() + "";
}
rVal.addChild(portInput);
Div portControl = InputMacros.createTextInputVertical("Port", port);
TextInput portInput = (TextInput)portControl.getChildren().get(1);
rVal.addChild(portControl);
//label (address)
Label usernameLabel = new Label(1.0f);
usernameLabel.setText("Username");
rVal.addChild(usernameLabel);
//text entry (address)
TextInput usernameInput = new TextInput(100,screenTop + 425,1.0f);
if(Globals.netConfig != null && Globals.netConfig.getUsername() != null){
usernameInput.setText(Globals.netConfig.getUsername());
//
//Username input
//
String username = "";
if(Globals.netConfig != null && Globals.netConfig.getPort() != null){
username = Globals.netConfig.getUsername();
} else {
usernameInput.setText("");
username = "";
}
rVal.addChild(usernameInput);
Div usernameControl = InputMacros.createTextInputVertical("Username", username);
TextInput usernameInput = (TextInput)usernameControl.getChildren().get(1);
rVal.addChild(usernameControl);
//label (port)
Label passwordLabel = new Label(1.0f);
passwordLabel.setText("Password");
rVal.addChild(passwordLabel);
//text entry (port)
TextInput passwordInput = new TextInput(100,screenTop + 575,1.0f);
if(Globals.netConfig != null && Globals.netConfig.getUsername() != null){
passwordInput.setText(Globals.netConfig.getPassword());
//
//Password input
//
String password = "";
if(Globals.netConfig != null && Globals.netConfig.getPort() != null){
password = Globals.netConfig.getPassword();
} else {
passwordInput.setText("");
password = "";
}
rVal.addChild(passwordInput);
Div passwordControl = InputMacros.createTextInputVertical("Password", password);
TextInput passwordInput = (TextInput)passwordControl.getChildren().get(1);
rVal.addChild(passwordControl);
//button (connect)
Button connectButton = new Button();
Label connectLabel = new Label(1.0f);
connectLabel.setText("Connect");
connectButton.addChild(connectLabel);
rVal.addChild(connectButton);
connectButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Connect", () -> {
NetUtils.setAddress(addressInput.getText());
NetUtils.setPort(Integer.parseInt(portInput.getText()));
Globals.clientUsername = usernameInput.getText();
@ -289,19 +222,12 @@ public class MenuGenerators {
Globals.RUN_CLIENT = true;
Globals.RUN_SERVER = false;
Globals.threadManager.start(clientThread);
return false;
}});
}));
//button (back)
Button backButton = new Button();
Label backLabel = new Label(1.0f);
backLabel.setText("Back");
backButton.addChild(backLabel);
rVal.addChild(backButton);
backButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Back", () -> {
WindowUtils.replaceMainMenuContents(MenuGenerators.createMultiplayerMenu());
return false;
}});
}));
return rVal;
}
@ -310,20 +236,13 @@ public class MenuGenerators {
FormElement rVal = new FormElement();
//label (options)
Label optionsLabel = new Label(1.0f);
optionsLabel.setText("Options");
Label optionsLabel = Label.createLabel("Options");
rVal.addChild(optionsLabel);
//button (back)
Button backButton = new Button();
Label backLabel = new Label(1.0f);
backLabel.setText("Back");
backButton.addChild(backLabel);
rVal.addChild(backButton);
backButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
rVal.addChild(Button.createButton("Back", () -> {
WindowUtils.replaceMainMenuContents(MenuGeneratorsTitleMenu.createTitleMenu());
return false;
}});
}));
//button to open rebind controls window
Button rebindControlsButton = Button.createButton("Controls", () -> {

View File

@ -182,9 +182,8 @@ public class WindowUtils {
}
static void initLoadingWindow(){
Window loadingWindow = new Window(Globals.renderingEngine.getOpenGLState(), 0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT,false);
Label loadingLabel = new Label(1.0f);
loadingLabel.setText("LOADING");
Window loadingWindow = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT, false);
Label loadingLabel = Label.createLabel("LOADING");
loadingWindow.addChild(loadingLabel);
Globals.signalSystem.post(SignalType.YOGA_APPLY,loadingWindow);
Globals.elementService.registerWindow(WindowStrings.WINDOW_LOADING, loadingWindow);
@ -192,7 +191,7 @@ public class WindowUtils {
}
public static void initMainMenuWindow(){
Window mainMenuWindow = new Window(Globals.renderingEngine.getOpenGLState(), 0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT,false);
Window mainMenuWindow = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT, false);
Globals.elementService.registerWindow(WindowStrings.WINDOW_MENU_MAIN, mainMenuWindow);
WindowUtils.replaceMainMenuContents(MenuGeneratorsTitleMenu.createTitleMenu());
}
@ -202,7 +201,7 @@ public class WindowUtils {
}
static void initItemDragContainerWindow(){
Window itemDragContainerWindow = new Window(Globals.renderingEngine.getOpenGLState(), 0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT,false);
Window itemDragContainerWindow = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT, false);
Globals.elementService.registerWindow(WindowStrings.WINDOW_ITEM_DRAG_CONTAINER, itemDragContainerWindow);
}

View File

@ -47,7 +47,7 @@ public class MenuGeneratorsInGame {
// int screenTop = Globals.WINDOW_HEIGHT - 150;
int width = 500;
int height = 500;
Window rVal = new Window(Globals.renderingEngine.getOpenGLState(),0,0,width,height,true);
Window rVal = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, width, height, true);
// int screenLeft = (Globals.WINDOW_WIDTH - width)/2;
Div div = Div.createDiv();
rVal.addChild(div);
@ -59,6 +59,7 @@ public class MenuGeneratorsInGame {
} else {
Globals.controlHandler.hintUpdateControlState(ControlsState.IN_GAME_FREE_CAMERA);
}
Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false);
return false;
}});
@ -71,6 +72,7 @@ public class MenuGeneratorsInGame {
} else {
Globals.controlHandler.hintUpdateControlState(ControlsState.IN_GAME_FREE_CAMERA);
}
Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false);
}));
//Return to main menu
@ -109,14 +111,8 @@ public class MenuGeneratorsInGame {
// int screenTop = Globals.WINDOW_HEIGHT - 150;
int width = 500;
int height = 500;
float fontSize = 1.0f;
Window rVal = new Window(Globals.renderingEngine.getOpenGLState(),0,0,width,height,true);
// int screenLeft = (Globals.WINDOW_WIDTH - width)/2;
// Div div = new Div();
// div.setPositionX(0);
// div.setPositionY(0);
// div.setWidth(500);
// div.setHeight(500);
Window rVal = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, width, height, true);
VirtualScrollable scrollable = new VirtualScrollable(width, height);
rVal.addChild(scrollable);
// scrollable.addChild(div);
@ -125,17 +121,9 @@ public class MenuGeneratorsInGame {
return false;
}});
//black texture background
// ImagePanel imagePanel = new ImagePanel(0,0,width,height + 1000,Globals.blackTexture);
// imagePanel.setWidth(width);
// imagePanel.setHeight(height);
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
// scrollable.addChild(imagePanel);
//label 1 (back)
Button backButton = new Button();
Label backLabel = new Label(fontSize);
backLabel.setText("Back");
Label backLabel = Label.createLabel("Back");
backButton.addChild(backLabel);
scrollable.addChild(backButton);
backButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -145,14 +133,13 @@ public class MenuGeneratorsInGame {
//text entry (port)
TextInput modelDebugInput = new TextInput(100,150,fontSize);
TextInput modelDebugInput = TextInput.createTextInput();
scrollable.addChild(modelDebugInput);
modelDebugInput.setText("Model path goes here");
//label 3 (load model and debug)
Button debugModelButton = new Button();
Label debugModelLabel = new Label(fontSize);
debugModelLabel.setText("Print Model Debug Info");
Label debugModelLabel = Label.createLabel("Print Model Debug Info");
debugModelButton.addChild(debugModelLabel);
scrollable.addChild(debugModelButton);
debugModelButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -172,8 +159,7 @@ public class MenuGeneratorsInGame {
//label 4 (reload all shaders)
Button reloadShaderButton = new Button();
Label reloadShaderLabel = new Label(fontSize);
reloadShaderLabel.setText("Reload all shaders");
Label reloadShaderLabel = Label.createLabel("Reload all shaders");
reloadShaderButton.addChild(reloadShaderLabel);
scrollable.addChild(reloadShaderButton);
reloadShaderButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -184,8 +170,7 @@ public class MenuGeneratorsInGame {
//reload all models
Button reloadModelButton = new Button();
Label reloadModelLabel = new Label(fontSize);
reloadModelLabel.setText("Reload all models");
Label reloadModelLabel = Label.createLabel("Reload all models");
reloadModelButton.addChild(reloadModelLabel);
scrollable.addChild(reloadModelButton);
reloadModelButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -196,8 +181,7 @@ public class MenuGeneratorsInGame {
//disable drawing player character
Button toggleDrawPlayerButton = new Button();
Label toggleDrawPlayerLabel = new Label(fontSize);
toggleDrawPlayerLabel.setText("Toggle draw character");
Label toggleDrawPlayerLabel = Label.createLabel("Toggle draw character");
toggleDrawPlayerButton.addChild(toggleDrawPlayerLabel);
scrollable.addChild(toggleDrawPlayerButton);
toggleDrawPlayerButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -217,8 +201,7 @@ public class MenuGeneratorsInGame {
//pull up character editor
Button characterSliderMenuButton = new Button();
Label characterSliderMenuLabel = new Label(fontSize);
characterSliderMenuLabel.setText("Character slider menu");
Label characterSliderMenuLabel = Label.createLabel("Character slider menu");
characterSliderMenuButton.addChild(characterSliderMenuLabel);
scrollable.addChild(characterSliderMenuButton);
characterSliderMenuButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -228,8 +211,7 @@ public class MenuGeneratorsInGame {
//label (switch framebuffer)
Button switchFramebufferButton = new Button();
Label switchFramebufferLabel = new Label(fontSize);
switchFramebufferLabel.setText("Switch Active Framebuffer");
Label switchFramebufferLabel = Label.createLabel("Switch Active Framebuffer");
switchFramebufferButton.addChild(switchFramebufferLabel);
scrollable.addChild(switchFramebufferButton);
switchFramebufferButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -240,8 +222,7 @@ public class MenuGeneratorsInGame {
//label (toggle draw client collision spheres)
Button toggleClientCollisionSpheresButton = new Button();
Label toggleClientCollisionSpheresLabel = new Label(fontSize);
toggleClientCollisionSpheresLabel.setText("Toggle draw client collision spheres");
Label toggleClientCollisionSpheresLabel = Label.createLabel("Toggle draw client collision spheres");
toggleClientCollisionSpheresButton.addChild(toggleClientCollisionSpheresLabel);
scrollable.addChild(toggleClientCollisionSpheresButton);
toggleClientCollisionSpheresButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -252,8 +233,7 @@ public class MenuGeneratorsInGame {
//label (toggle draw server collision spheres)
Button toggleServerCollisionSpheresButton = new Button();
Label toggleServerCollisionSpheresLabel = new Label(fontSize);
toggleServerCollisionSpheresLabel.setText("Toggle draw server collision spheres");
Label toggleServerCollisionSpheresLabel = Label.createLabel("Toggle draw server collision spheres");
toggleServerCollisionSpheresButton.addChild(toggleServerCollisionSpheresLabel);
scrollable.addChild(toggleServerCollisionSpheresButton);
toggleServerCollisionSpheresButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -264,8 +244,7 @@ public class MenuGeneratorsInGame {
//label (toggle draw physics objects)
Button togglePhysicsObjectsButton = new Button();
Label togglePhysicsObjectsLabel = new Label(fontSize);
togglePhysicsObjectsLabel.setText("Toggle draw physics objects");
Label togglePhysicsObjectsLabel = Label.createLabel("Toggle draw physics objects");
togglePhysicsObjectsButton.addChild(togglePhysicsObjectsLabel);
scrollable.addChild(togglePhysicsObjectsButton);
togglePhysicsObjectsButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -276,8 +255,7 @@ public class MenuGeneratorsInGame {
//label (toggle draw movement vectors)
Button toggleMovementVectorsButton = new Button();
Label toggleMovementVectorsLabel = new Label(fontSize);
toggleMovementVectorsLabel.setText("Toggle draw movement vectors");
Label toggleMovementVectorsLabel = Label.createLabel("Toggle draw movement vectors");
toggleMovementVectorsButton.addChild(toggleMovementVectorsLabel);
scrollable.addChild(toggleMovementVectorsButton);
toggleMovementVectorsButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -288,8 +266,7 @@ public class MenuGeneratorsInGame {
//label (toggle draw navmesh)
Button toggleNavmeshButton = new Button();
Label toggleNavmeshLabel = new Label(fontSize);
toggleNavmeshLabel.setText("Toggle draw navmesh");
Label toggleNavmeshLabel = Label.createLabel("Toggle draw navmesh");
toggleNavmeshButton.addChild(toggleNavmeshLabel);
scrollable.addChild(toggleNavmeshButton);
toggleNavmeshButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -306,17 +283,9 @@ public class MenuGeneratorsInGame {
public static Window createInGameCharacterSliderMenu(){
int width = 500;
int height = 500;
float fontSize = 0.4f;
Window rVal = new Window(Globals.renderingEngine.getOpenGLState(),0,0,width,height,true);
// int screenLeft = (Globals.WINDOW_WIDTH - width)/2;
// Div div = new Div();
// div.setPositionX(0);
// div.setPositionY(0);
// div.setWidth(500);
// div.setHeight(500);
ScrollableContainer scrollable = new ScrollableContainer(Globals.renderingEngine.getOpenGLState(), 0, 0, width, height);
Window rVal = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, width, height, true);
ScrollableContainer scrollable = ScrollableContainer.createScrollable();
rVal.addChild(scrollable);
// scrollable.addChild(div);
rVal.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){
WindowUtils.replaceWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN, createInGameDebugMainMenu());
return false;
@ -324,15 +293,11 @@ public class MenuGeneratorsInGame {
//black texture background
ImagePanel imagePanel = ImagePanel.createImagePanelAbsolute(0,0,width,height + 1000,Globals.blackTexture);
// imagePanel.setWidth(width);
// imagePanel.setHeight(height);
// imagePanel.setTexture(Globals.assetManager.fetchTexture(Globals.blackTexture));
scrollable.addChild(imagePanel);
//label 1 (back)
Button backButton = new Button();
Label backLabel = new Label(fontSize);
backLabel.setText("Back");
Label backLabel = Label.createLabel("Back");
backButton.addChild(backLabel);
scrollable.addChild(backButton);
backButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){

View File

@ -16,7 +16,7 @@ public class MenuGeneratorsInventory {
public static Element worldItemDropCaptureWindow(){
Window rVal = new Window(Globals.renderingEngine.getOpenGLState(),0,0,Globals.WINDOW_WIDTH,Globals.WINDOW_HEIGHT,true);
Window rVal = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT, false);
Div div = Div.createDiv();
div.setOnDragRelease(new DragEventCallback() {public boolean execute(DragEvent event){
LoggerInterface.loggerUI.INFO("World item drop capture window received drag release");

View File

@ -65,7 +65,7 @@ public class MenuGeneratorsLevelEditor {
*/
public static Window createLevelEditorSidePanel(){
//setup window
mainSidePanel = new Window(Globals.renderingEngine.getOpenGLState(),0,0,SIDE_PANEL_WIDTH,Globals.WINDOW_HEIGHT,true);
mainSidePanel = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, SIDE_PANEL_WIDTH, Globals.WINDOW_HEIGHT, true);
mainSidePanel.setParentAlignContent(YogaAlignment.End);
mainSidePanel.setParentJustifyContent(YogaJustification.End);
mainSidePanel.setParentAlignItem(YogaAlignment.End);
@ -344,8 +344,7 @@ public class MenuGeneratorsLevelEditor {
div.addChild(deleteButton);
Label entityName = new Label(1.0f);
entityName.setText("(" + entity.getId() + ") " + getEntityString(entity));
Label entityName = Label.createLabel("(" + entity.getId() + ") " + getEntityString(entity));
div.addChild(entityName);

View File

@ -57,7 +57,7 @@ public class MenuGeneratorsTerrainEditing {
*/
public static Window createVoxelTypeSelectionPanel(){
//setup window
terrainEditingSidePanelWindow = new Window(Globals.renderingEngine.getOpenGLState(),0,0,WINDOW_WIDTH,WINDOW_HEIGHT,true);
terrainEditingSidePanelWindow = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, true);
terrainEditingSidePanelWindow.setParentAlignContent(YogaAlignment.Center);
terrainEditingSidePanelWindow.setParentJustifyContent(YogaJustification.Center);
terrainEditingSidePanelWindow.setParentAlignItem(YogaAlignment.Center);
@ -147,8 +147,7 @@ public class MenuGeneratorsTerrainEditing {
newButton.setMarginRight(MARGIN_EACH_SIDE);
newButton.setMarginTop(MARGIN_EACH_SIDE);
//label
Label voxelLabel = new Label(1.0f);
voxelLabel.setText(type.getName());
Label voxelLabel = Label.createLabel(type.getName());
//icon/model
ImagePanel texturePanel = ImagePanel.createImagePanel(type.getTexture());
if(type.getTexture() != null){

View File

@ -24,8 +24,7 @@ public class MenuGeneratorsDemo {
rVal.setAlignContent(YogaAlignment.Start);
//label (title)
Label titleLabel = new Label(1.0f);
titleLabel.setText("ORPG");
Label titleLabel = Label.createLabel("ORPG");
rVal.addChild(titleLabel);
return rVal;

View File

@ -9,6 +9,7 @@ import electrosphere.entity.scene.SceneFile;
import electrosphere.game.data.voxel.VoxelType;
import electrosphere.menu.WindowUtils;
import electrosphere.menu.ingame.MenuGeneratorsTerrainEditing;
import electrosphere.renderer.ui.components.InputMacros;
import electrosphere.renderer.ui.elements.Button;
import electrosphere.renderer.ui.elements.Div;
import electrosphere.renderer.ui.elements.FormElement;
@ -17,7 +18,6 @@ import electrosphere.renderer.ui.elementtypes.Element;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification;
import electrosphere.renderer.ui.events.ValueChangeEvent;
import electrosphere.renderer.ui.macros.InputMacros;
import electrosphere.server.datacell.GriddedDataCellManager;
import electrosphere.server.saves.SaveUtils;

View File

@ -1,38 +1,18 @@
package electrosphere.menu.mainmenu;
import java.util.LinkedList;
import java.util.List;
import org.joml.Vector3f;
import electrosphere.client.entity.camera.CameraEntityUtils;
import electrosphere.engine.Globals;
import electrosphere.entity.types.creature.CreatureTemplate;
import electrosphere.game.data.creature.type.CreatureData;
import electrosphere.game.data.creature.type.visualattribute.AttributeVariant;
import electrosphere.game.data.creature.type.visualattribute.VisualAttribute;
import electrosphere.menu.MenuGenerators;
import electrosphere.menu.WindowUtils;
import electrosphere.net.parser.net.message.CharacterMessage;
import electrosphere.renderer.actor.Actor;
import electrosphere.renderer.actor.ActorStaticMorph;
import electrosphere.renderer.actor.ActorUtils;
import electrosphere.renderer.anim.Animation;
import electrosphere.renderer.ui.elements.ActorPanel;
import electrosphere.renderer.ui.components.CharacterCustomizer;
import electrosphere.renderer.ui.elements.Button;
import electrosphere.renderer.ui.elements.Div;
import electrosphere.renderer.ui.elements.FormElement;
import electrosphere.renderer.ui.elements.Label;
import electrosphere.renderer.ui.elements.ScrollableContainer;
import electrosphere.renderer.ui.elements.Slider;
import electrosphere.renderer.ui.elements.StringCarousel;
import electrosphere.renderer.ui.elementtypes.ClickableElement;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaFlexDirection;
import electrosphere.renderer.ui.elementtypes.Element;
import electrosphere.renderer.ui.elementtypes.ValueElement.ValueChangeEventCallback;
import electrosphere.renderer.ui.events.ClickEvent;
import electrosphere.renderer.ui.events.ValueChangeEvent;
import electrosphere.util.Utilities;
public class MenuGeneratorsMultiplayer {
@ -41,8 +21,7 @@ public class MenuGeneratorsMultiplayer {
//button (create)
Button createButton = new Button();
Label createLabel = new Label(1.0f);
createLabel.setText("Create Character");
Label createLabel = Label.createLabel("Create Character");
createButton.addChild(createLabel);
rVal.addChild(createButton);
createButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -69,164 +48,15 @@ public class MenuGeneratorsMultiplayer {
//button (create)
Button createButton = new Button();
Label createLabel = new Label(1.0f);
createLabel.setText("Select Race");
Label createLabel = Label.createLabel("Select Race");
createButton.addChild(createLabel);
rVal.addChild(createButton);
createButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
WindowUtils.replaceMainMenuContents(MenuGeneratorsMultiplayer.createMultiplayerCharacterCreationTweakWindow(selectedRace));
WindowUtils.replaceMainMenuContents(CharacterCustomizer.createCharacterCustomizerPanel(selectedRace));
return false;
}});
return rVal;
}
public static Element createMultiplayerCharacterCreationTweakWindow(String race){
// int screenTop = Globals.WINDOW_HEIGHT - 150;
int verticalPosition = 125;
int horizontalPosition = 300;
//figure out race data
CreatureData selectedRaceType = Globals.gameConfigCurrent.getCreatureTypeLoader().getType(race);
//spawn camera so renderer doesn't crash (once render pipeline is modularized this shouldn't be necessary)
Globals.playerCamera = CameraEntityUtils.spawnBasicCameraEntity(new Vector3f(0,0,0), new Vector3f(0,0.3f,1).normalize());
Globals.viewMatrix = CameraEntityUtils.getCameraViewMatrix(Globals.playerCamera);
// CameraEntityUtils.setCameraEye(Globals.playerCamera, new Vector3f(-1,3f,0).normalize());
// CameraEntityUtils.setCameraCenter(Globals.playerCamera, new Vector3f(0,0,0));
//create actor panel
Actor characterActor = ActorUtils.createActorFromModelPath(selectedRaceType.getModelPath());
ActorPanel actorPanel = new ActorPanel(Globals.renderingEngine.getOpenGLState(), 1200, 100, 500, 500, characterActor);
actorPanel.setAnimation(Animation.ANIMATION_IDLE_1);
actorPanel.setPosition(new Vector3f(0,-0.5f,-0.6f));
// actorPanel.setRotation(new Quaternionf().rotateLocalY(0));
actorPanel.setScale(new Vector3f(1.0f));
//have to build static morph while looping through attributes
ActorStaticMorph staticMorph = new ActorStaticMorph();
//create creature template
CreatureTemplate template = CreatureTemplate.create(race);
List<Element> controlsToAdd = new LinkedList<Element>();
//create edit controls here
for(VisualAttribute attribute : selectedRaceType.getVisualAttributes()){
if(attribute.getType().equals(VisualAttribute.TYPE_BONE)){
//add label for slider
Label sliderName = new Label(0.6f);
sliderName.setText(attribute.getAttributeId());
controlsToAdd.add(sliderName);
//add a slider
Slider boneSlider = new Slider(horizontalPosition, verticalPosition + 10, 500, 20, new Vector3f(0.1f,0.1f,0.1f), new Vector3f(1,1,1));
float min = attribute.getMinValue();
float max = attribute.getMaxValue();
float defaultValue = min + (max - min)/2.0f;
boneSlider.setMinimum(min);
boneSlider.setMaximum(max);
boneSlider.setValue(defaultValue);
controlsToAdd.add(boneSlider);
//actually add attributes to static morph
if(attribute.getPrimaryBone() != null && staticMorph.getBoneTransforms(attribute.getPrimaryBone()) == null){
staticMorph.initBoneTransforms(attribute.getPrimaryBone());
}
if(attribute.getMirrorBone() != null && staticMorph.getBoneTransforms(attribute.getMirrorBone()) == null){
staticMorph.initBoneTransforms(attribute.getMirrorBone());
}
//add attribute to creature template
template.putAttributeValue(attribute.getAttributeId(), defaultValue);
//set callback for when we change the slider value to update the static morph
boneSlider.setOnValueChangeCallback(new ValueChangeEventCallback() {public void execute(ValueChangeEvent event) {
if(characterActor.getStaticMorph() != null){
ActorStaticMorph staticMorph = characterActor.getStaticMorph();
staticMorph.updateValue(attribute.getSubtype(), attribute.getPrimaryBone(), event.getAsFloat());
if(attribute.getMirrorBone() != null){
staticMorph.updateValue(attribute.getSubtype(), attribute.getMirrorBone(), event.getAsFloat());
}
template.getAttributeValue(attribute.getAttributeId()).setValue(event.getAsFloat());
}
}});
} else if(attribute.getType().equals(VisualAttribute.TYPE_REMESH)){
//add label for carousel
Label sliderName = new Label(0.6f);
sliderName.setText(attribute.getAttributeId());
controlsToAdd.add(sliderName);
//for adding the value to the creature template
boolean hasAddedValue = false;
//add a carousel
StringCarousel variantCarousel = new StringCarousel(horizontalPosition, verticalPosition, 1.0f);
for(AttributeVariant variant : attribute.getVariants()){
variantCarousel.addOption(variant.getId());
//if we haven't already added a value, add a value to the creature template
if(!hasAddedValue){
hasAddedValue = true;
//add attribute to template
template.putAttributeValue(attribute.getAttributeId(), variant.getId());
}
}
//callback for updating remesh
variantCarousel.setOnValueChangeCallback(new ValueChangeEventCallback(){public void execute(ValueChangeEvent event) {
//TODO: implement updating visuals
template.getAttributeValue(attribute.getAttributeId()).setVariantId(event.getAsString());
AttributeVariant variant = null;
for(AttributeVariant variantCurrent : attribute.getVariants()){
if(variantCurrent.getId().equals(event.getAsString())){
variant = variantCurrent;
break;
}
}
if(variant != null){
Globals.assetManager.addModelPathToQueue(variant.getModel());
for(String mesh : variant.getMeshes()){
characterActor.getMeshMask().queueMesh(variant.getModel(), mesh);
}
}
}});
controlsToAdd.add(variantCarousel);
}
verticalPosition = verticalPosition + 100;
}
//finally set static morph
characterActor.setActorStaticMorph(staticMorph);
//add button to actually create the character
Button createCharacterButton = new Button();
Label createCharacterLabel = new Label(1.0f);
createCharacterLabel.setText("Create");
createCharacterButton.addChild(createCharacterLabel);
controlsToAdd.add(createCharacterButton);
createCharacterButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
Globals.clientConnection.queueOutgoingMessage(CharacterMessage.constructRequestCreateCharacterMessage(Utilities.stringify(template)));
return false;
}});
int width = 1800;
int height = verticalPosition + 300;
Div rVal = Div.createDiv();
rVal.setFlexDirection(YogaFlexDirection.Row);
ScrollableContainer scrollable = new ScrollableContainer(Globals.renderingEngine.getOpenGLState(), 0, 0, width, height);
for(Element newControl : controlsToAdd){
scrollable.addChild(newControl);
}
rVal.addChild(scrollable);
rVal.addChild(actorPanel);
// rVal.addChild(scrollable);
// Label testLabel = new Label(100,215,1.0f);
// testLabel.setText("Aaaaaaa");
// rVal.addChild(testLabel);
// //black texture background
// ImagePanel imagePanel = new ImagePanel(0,0,width,height + 1000,Globals.blackTexture);
// scrollable.addChild(imagePanel);
return rVal;
}
}

View File

@ -33,14 +33,12 @@ public class MenuGeneratorsTitleMenu {
rVal.setFlexGrow(1.0f);
//label (title)
Label titleLabel = new Label(1.0f);
titleLabel.setText("ORPG");
Label titleLabel = Label.createLabel("ORPG");
rVal.addChild(titleLabel);
//button (multiplayer)
Button singleplayerButton = new Button();
Label singleplayerLabel = new Label(1.0f);
singleplayerLabel.setText("Singleplayer");
Label singleplayerLabel = Label.createLabel("Singleplayer");
singleplayerButton.addChild(singleplayerLabel);
rVal.addChild(singleplayerButton);
singleplayerButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -50,8 +48,7 @@ public class MenuGeneratorsTitleMenu {
//button (multiplayer)
Button multiplayerButton = new Button();
Label multiplayerLabel = new Label(1.0f);
multiplayerLabel.setText("Multiplayer");
Label multiplayerLabel = Label.createLabel("Multiplayer");
multiplayerButton.addChild(multiplayerLabel);
rVal.addChild(multiplayerButton);
multiplayerButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -61,8 +58,7 @@ public class MenuGeneratorsTitleMenu {
//button (static level)
Button staticLevelButton = new Button();
Label staticLevelLabel = new Label(1.0f);
staticLevelLabel.setText("Level Editor");
Label staticLevelLabel = Label.createLabel("Level Editor");
staticLevelButton.addChild(staticLevelLabel);
rVal.addChild(staticLevelButton);
staticLevelButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -72,8 +68,7 @@ public class MenuGeneratorsTitleMenu {
//button (options)
Button optionsButton = new Button();
Label optionsLabel = new Label(1.0f);
optionsLabel.setText("Options");
Label optionsLabel = Label.createLabel("Options");
optionsButton.addChild(optionsLabel);
rVal.addChild(optionsButton);
optionsButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -83,8 +78,7 @@ public class MenuGeneratorsTitleMenu {
//button (sp debug)
Button uiDebugSPQuickstartButton = new Button();
Label uiDebugSPQuickstartLabel = new Label(1.0f);
uiDebugSPQuickstartLabel.setText("Debug SP Quickstart");
Label uiDebugSPQuickstartLabel = Label.createLabel("Debug SP Quickstart");
uiDebugSPQuickstartButton.addChild(uiDebugSPQuickstartLabel);
rVal.addChild(uiDebugSPQuickstartButton);
uiDebugSPQuickstartButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -97,8 +91,7 @@ public class MenuGeneratorsTitleMenu {
//button (ui testing)
Button uiTestingButton = new Button();
Label uiTestingLabel = new Label(1.0f);
uiTestingLabel.setText("UI Testing");
Label uiTestingLabel = Label.createLabel("UI Testing");
uiTestingButton.addChild(uiTestingLabel);
rVal.addChild(uiTestingButton);
uiTestingButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){
@ -108,8 +101,7 @@ public class MenuGeneratorsTitleMenu {
//button (Viewport Test)
Button viewportTestingButton = new Button();
Label viewportTestingLabel = new Label(1.0f);
viewportTestingLabel.setText("Viewport Test");
Label viewportTestingLabel = Label.createLabel("Viewport Test");
viewportTestingButton.addChild(viewportTestingLabel);
rVal.addChild(viewportTestingButton);
viewportTestingButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){

View File

@ -19,18 +19,17 @@ import electrosphere.menu.WindowUtils;
import electrosphere.renderer.actor.ActorUtils;
import electrosphere.renderer.ui.components.CharacterCustomizer;
import electrosphere.renderer.ui.components.EquipmentInventoryPanel;
import electrosphere.renderer.ui.components.InputMacros;
import electrosphere.renderer.ui.components.NaturalInventoryPanel;
import electrosphere.renderer.ui.elements.ActorPanel;
import electrosphere.renderer.ui.elements.Button;
import electrosphere.renderer.ui.elements.FormElement;
import electrosphere.renderer.ui.elements.Label;
import electrosphere.renderer.ui.elements.Slider;
import electrosphere.renderer.ui.elements.StringCarousel;
import electrosphere.renderer.ui.elements.VirtualScrollable;
import electrosphere.renderer.ui.elementtypes.ContainerElement;
import electrosphere.renderer.ui.elementtypes.Element;
import electrosphere.renderer.ui.events.ValueChangeEvent;
import electrosphere.renderer.ui.macros.InputMacros;
/**
* Menu generators for creating test visualizations for ui elements
@ -98,11 +97,7 @@ public class MenuGeneratorsUITesting {
VirtualScrollable virtualScrollable = new VirtualScrollable(300, 75);
//add a ton of children
for(int i = 0; i < 10; i++){
Button testButton = new Button();
Label testLabel = new Label(1.0f);
testLabel.setText("Test button " + i);
testButton.addChild(testLabel);
virtualScrollable.addChild(testButton);
virtualScrollable.addChild(Button.createButton("Test button " + i, () -> {}));
}
// slider test

View File

@ -45,7 +45,7 @@ public class TutorialMenus {
windowEl = (Window)Globals.elementService.getWindow(WindowStrings.TUTORIAL_POPUP);
} else {
//create the window
windowEl = new Window(Globals.renderingEngine.getOpenGLState(),0,0,TUTORIAL_POPUP_WIDTH,TUTORIAL_POPUP_HEIGHT,true);
windowEl = Window.create(Globals.renderingEngine.getOpenGLState(), 0, 0, TUTORIAL_POPUP_WIDTH, TUTORIAL_POPUP_HEIGHT, true);
//parent container
windowEl.setParentAlignContent(YogaAlignment.Center);
windowEl.setParentAlignItem(YogaAlignment.Center);

View File

@ -1,4 +1,4 @@
package electrosphere.renderer.ui.macros;
package electrosphere.renderer.ui.components;
import java.util.function.Consumer;
@ -28,7 +28,6 @@ public class InputMacros {
* @param placeholder The placeholder (can be null if no placeholder desired)
* @return The div encapsulating all the individual elements
*/
@Deprecated
public static Div createTextInput(String label, String placeholder){
Div rVal = Div.createDiv();
rVal.setFlexDirection(YogaFlexDirection.Row);
@ -48,6 +47,30 @@ public class InputMacros {
return rVal;
}
/**
* Creates a text input that has a label and optional placeholder
* @param label The label for the text input
* @param placeholder The placeholder (can be null if no placeholder desired)
* @return The div encapsulating all the individual elements
*/
public static Div createTextInputVertical(String label, String placeholder){
Div rVal = Div.createCol();
//the label
Label labelEl = Label.createLabel(label);
labelEl.setMarginRight(LABEL_MARGIN);
rVal.addChild(labelEl);
//the actual input
TextInput inputControl = TextInput.createTextInput();
if(placeholder != null){
inputControl.setText(placeholder);
}
rVal.addChild(inputControl);
return rVal;
}
/**
* Creates a text input that has a label and optional placeholder
* @param label The label for the text input
@ -55,7 +78,6 @@ public class InputMacros {
* @param callback A callback fired when the text input changes value
* @return The div encapsulating all the individual elements
*/
@Deprecated
public static Div createTextInput(String label, String placeholder, Consumer<ValueChangeEvent> callback){
Div rVal = Div.createDiv();
rVal.setFlexDirection(YogaFlexDirection.Row);
@ -84,7 +106,6 @@ public class InputMacros {
* @param defaultValue The default value for the slider (between 0.0 and 1.0)
* @return The slider element
*/
@Deprecated
public static Div createSliderInput(String label, Consumer<ValueChangeEvent> onChange, float defaultValue){
Div rVal = Div.createDiv();
rVal.setFlexDirection(YogaFlexDirection.Row);
@ -109,7 +130,6 @@ public class InputMacros {
* @param onChange The on change callback
* @return The div containing a labeled toggle
*/
@Deprecated
public static Div createToggle(String label, boolean defaultValue, Consumer<ValueChangeEvent> onChange){
Div rVal = Div.createDiv();
rVal.setFlexDirection(YogaFlexDirection.Row);

View File

@ -47,8 +47,7 @@ public class Label extends StandardContainerElement implements DrawableElement {
* Simplified constructor
* @param fontSize the size of the font (default is 1.0f)
*/
@Deprecated
public Label(float fontSize){
private Label(float fontSize){
super();
this.font = Globals.fontManager.getFont("default");
setHeight((int)(font.getFontHeight() * fontSize));
@ -56,23 +55,6 @@ public class Label extends StandardContainerElement implements DrawableElement {
Yoga.YGNodeStyleSetFlexDirection(this.yogaNode, Yoga.YGFlexDirectionRow);
}
/**
* Creates a label with absolute positioning
* @param x the x position
* @param y the y position
* @param fontSize the font size (default is 1.0f)
*/
@Deprecated
public Label(int x, int y, float fontSize){
super();
this.setPositionX(x);
this.setPositionY(y);
this.font = Globals.fontManager.getFont("default");
setHeight((int)(font.getFontHeight() * fontSize));
this.fontSize = fontSize;
Yoga.YGNodeStyleSetFlexDirection(this.yogaNode, Yoga.YGFlexDirectionRow);
}
void generateLetters(){
//free children
for(Element child : childList){

View File

@ -56,9 +56,6 @@ public class ScrollableContainer extends BufferedStandardDrawableContainerElemen
*/
private ScrollableContainer(){
super();
setWidth(DEFAULT_WIDTH);
setHeight(DEFAULT_HEIGHT);
}
/**

View File

@ -81,23 +81,6 @@ public class TextInput extends StandardContainerElement implements DrawableEleme
Yoga.YGNodeStyleSetMinWidth(this.yogaNode, 1);
}
/**
* Constructor
* @param x
* @param y
* @param fontSize
*/
public TextInput(int x, int y, float fontSize){
super();
this.font = Globals.fontManager.getFont("default");
this.fontSize = fontSize;
this.color = new Vector3f(1,1,1);
setHeight((int)(font.getFontHeight() * fontSize));
Yoga.YGNodeStyleSetFlexDirection(this.yogaNode, Yoga.YGFlexDirectionRow);
Yoga.YGNodeStyleSetMinHeight(this.yogaNode, font.imageHeight * fontSize);
Yoga.YGNodeStyleSetMinWidth(this.yogaNode, 1);
}
void generateLetters(){
for(Element el : getChildren()){
Globals.signalSystem.post(SignalType.YOGA_DESTROY, el);

View File

@ -48,6 +48,15 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme
static final Vector3f windowDrawDebugColor = new Vector3f(1.0f,0.0f,0.0f);
/**
* Default width of popups
*/
static final int DEFAULT_POPUP_WIDTH = 1000;
/**
* Default height of popups
*/
static final int DEFAULT_POPUP_HEIGHT = 1000;
//controls whether to show window decorations (ie the frame)
boolean showDecorations = true;
@ -92,14 +101,10 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme
/**
* Private constructor
* @param openGLState
* @param positionX
* @param positionY
* @param width
* @param height
*/
private Window(OpenGLState openGLState, int positionX, int positionY, int width, int height){
private Window(OpenGLState openGLState){
try {
widgetBuffer = FramebufferUtils.generateTextureFramebuffer(openGLState, width, height);
widgetBuffer = FramebufferUtils.generateTextureFramebuffer(openGLState, DEFAULT_POPUP_WIDTH, DEFAULT_POPUP_HEIGHT);
} catch(Exception e){
LoggerInterface.loggerRenderer.ERROR(e);
}
@ -114,8 +119,8 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme
setParentAlignItem(YogaAlignment.Start);
setParentJustifyContent(YogaJustification.Start);
this.setFlexDirection(YogaFlexDirection.Column);
this.setMinWidth(width);
this.setMinHeight(height);
this.setMinWidth(DEFAULT_POPUP_WIDTH);
this.setMinHeight(DEFAULT_POPUP_HEIGHT);
}
/**
@ -143,7 +148,7 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme
* @return The window element
*/
public static Window createExpandable(OpenGLState openGLState, int posX, int posY, int width, int height){
Window rVal = new Window(openGLState, posX, posY, width, height);
Window rVal = new Window(openGLState);
return rVal;
}
@ -157,7 +162,7 @@ public class Window implements DrawableElement, ContainerElement, NavigableEleme
* @return The window element
*/
public static Window createExpandableCenterAligned(OpenGLState openGLState, int width, int height){
Window rVal = new Window(openGLState, 0, 0, width, height);
Window rVal = new Window(openGLState);
rVal.setParentAlignItem(YogaAlignment.Center);
rVal.setParentJustifyContent(YogaJustification.Center);
return rVal;