world/biome type options in world creation
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-04-02 11:33:33 -04:00
parent 183a8ce901
commit 1672119cb3
3 changed files with 117 additions and 0 deletions

View File

@ -1405,6 +1405,7 @@ HillsGen visuals work
(04/01/2025)
Falling min frames to activate increased
Reorganizing world creation ui file
UI panel work

View File

@ -1,6 +1,8 @@
package electrosphere.client.ui.menu.mainmenu.worldgen;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import electrosphere.auth.AuthenticationManager;
import electrosphere.client.ui.menu.WindowUtils;
@ -8,11 +10,14 @@ import electrosphere.client.ui.menu.mainmenu.MenuGeneratorsTitleMenu;
import electrosphere.engine.Globals;
import electrosphere.engine.loadingthreads.LoadingThread;
import electrosphere.engine.loadingthreads.LoadingThread.LoadingThreadType;
import electrosphere.engine.signal.Signal.SignalType;
import electrosphere.entity.scene.SceneGenerator;
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.Panel;
import electrosphere.renderer.ui.elements.StringCarousel;
import electrosphere.renderer.ui.elements.TextInput;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment;
import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaJustification;
@ -21,6 +26,8 @@ import electrosphere.renderer.ui.events.NavigationEvent;
import electrosphere.server.saves.SaveUtils;
public class MenuWorldSelect {
private static WorldGenUIParams params;
/**
* Creates the world selection menu content
@ -68,6 +75,7 @@ public class MenuWorldSelect {
createButtonContainer.setMarginLeft(50);
//button (create)
createButtonContainer.addChild(Button.createButton("Create World", () -> {
params = new WorldGenUIParams();
WindowUtils.replaceMainMenuContents(MenuWorldSelect.createWorldCreationMenu());
}));
@ -119,6 +127,14 @@ public class MenuWorldSelect {
worldSeedInput.setText(System.currentTimeMillis() + "");
worldSeedInputContainer.addChild(worldSeedInput);
Div worldTypeMenuButtonContainer = Div.createRow();
{
Button worldTypeButton = Button.createButton("World Type", () -> {
WindowUtils.replaceMainMenuContents(MenuWorldSelect.createWorldTypeDefinitionMenu());
});
worldTypeMenuButtonContainer.addChild(worldTypeButton);
}
//button (create)
Div createButtonContainer = Div.createCol();
@ -136,6 +152,91 @@ public class MenuWorldSelect {
Div mainLayout = Div.createCol(
worldNameInputContainer,
worldSeedInputContainer,
worldTypeMenuButtonContainer,
createButtonContainer
);
mainLayout.setMarginTop(300);
mainLayout.setAlignItems(YogaAlignment.Center);
rVal.addChild(mainLayout);
return rVal;
}
/**
* World type definition menu
* @return The world type definition menu element
*/
public static Element createWorldTypeDefinitionMenu(){
FormElement rVal = new FormElement();
//set nav callback
WindowUtils.setMainMenuBackoutCallback((NavigationEvent event) -> {
WindowUtils.replaceMainMenuContents(MenuWorldSelect.createWorldCreationMenu());
return false;
});
//select world type
Div worldTypeCarousel = Div.createRow();
{
Panel panel = Panel.createPanel();
panel.setWidth(500);
panel.setJustifyContent(YogaJustification.Between);
worldTypeCarousel.addChild(panel);
Label label = Label.createLabel("Type: ");
panel.addChild(label);
List<String> options = Arrays.asList(new String[]{
"Default",
"Homogenous",
});
StringCarousel typeCarousel = StringCarousel.create(options, (event) -> {
int index = options.indexOf(event.getAsString());
params.worldType = index;
WindowUtils.replaceMainMenuContents(MenuWorldSelect.createWorldTypeDefinitionMenu());
});
typeCarousel.setOption(params.worldType);
panel.addChild(typeCarousel);
}
//select biome type (for homogenous worlds)
Div biomeTypeCarousel = Div.createRow();
if(params.worldType == 1){
Panel panel = Panel.createPanel();
panel.setWidth(500);
panel.setJustifyContent(YogaJustification.Between);
biomeTypeCarousel.addChild(panel);
Label label = Label.createLabel("Biome: ");
panel.addChild(label);
List<String> biomes = Globals.gameConfigCurrent.getBiomeMap().getSurfaceBiomes().stream().map((biome) -> {
return biome.getDisplayName();
}).collect(Collectors.toList());
StringCarousel typeCarousel = StringCarousel.create(biomes, (event) -> {
int index = biomes.indexOf(event.getAsString());
params.biomeType = index;
Globals.signalSystem.post(SignalType.YOGA_APPLY,rVal);
});
typeCarousel.setOption(params.biomeType);
panel.addChild(typeCarousel);
}
//button (create)
Div createButtonContainer = Div.createCol();
createButtonContainer.setMarginTop(20);
createButtonContainer.addChild(Button.createButton("Return", () -> {
WindowUtils.replaceMainMenuContents(MenuWorldSelect.createWorldCreationMenu());
}));
//layout content
Div mainLayout = Div.createCol(
worldTypeCarousel,
biomeTypeCarousel,
createButtonContainer
);
mainLayout.setMarginTop(300);
@ -166,4 +267,9 @@ public class MenuWorldSelect {
return rVal;
}
static class WorldGenUIParams {
int worldType = 0;
int biomeType = 0;
}
}

View File

@ -110,6 +110,15 @@ public class StringCarousel extends StandardContainerElement implements Drawable
currentOption = options.size() - 1;
}
}
public void setOption(int index){
this.currentOption = index;
this.setText(this.options.get(index));
}
public int getCurrentOption(){
return this.currentOption;
}
void generateLetters(){
for(Element el : getChildren()){
@ -138,6 +147,7 @@ public class StringCarousel extends StandardContainerElement implements Drawable
if(focused){
setColor(new Vector3f(1,0,0));
}
Globals.signalSystem.post(SignalType.YOGA_APPLY, this);
}
public void setColor(Vector3f color){