From dd415681bb2cde31fcbef78206116dc2fa0796d2 Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 24 Sep 2024 17:40:41 -0400 Subject: [PATCH] visual adjustments for voxel selection component --- docs/src/progress/currenttarget.md | 8 ++---- docs/src/progress/renderertodo.md | 3 ++ .../ingame/MenuGeneratorsTerrainEditing.java | 28 ++++++++++++++++--- .../mainmenu/MenuGeneratorsUITesting.java | 7 +++++ 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/docs/src/progress/currenttarget.md b/docs/src/progress/currenttarget.md index b0aab311..6e95f104 100644 --- a/docs/src/progress/currenttarget.md +++ b/docs/src/progress/currenttarget.md @@ -12,12 +12,11 @@ + fix the vibes Ticketed randomizer node for BTs to more heavily weight attacking and waiting - Lots of crates causes lag - - Physics thread time exploding -- need to sleep bodies + feedback driven requirements - Add punching/unarmed combat - UI spacing and scaling + Item/Equip overhaul (again) + - Add punching/unarmed combat + Fix ui scaling on abnormal monitors Better skybox - Fix transparency calculations for far-out objects Crouching @@ -25,7 +24,6 @@ particles, light on sword collision Looking angle leverages rotators to swing sword at angle (ie if you look up you swing your sword into the sky) Come up with a title for the game and create a title menu for it (ideally with some animation and music) - Item/Equip overhaul (again) Objectives - PVP arena mode initially? - Spawn player at start of a dungeon diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 82caaf0a..559c79bb 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -839,6 +839,9 @@ Change timescale for test Refactor graphics entity definitions to be under dedicated object Tree model debug menu +(09/24/2024) +Make voxel selection panel have better spacing + # TODO diff --git a/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsTerrainEditing.java b/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsTerrainEditing.java index 0f993632..482f2f5f 100644 --- a/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsTerrainEditing.java +++ b/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsTerrainEditing.java @@ -100,7 +100,7 @@ public class MenuGeneratorsTerrainEditing { //scrollable that contains all the voxel types VirtualScrollable scrollable = new VirtualScrollable(VOXEL_SCROLLABLE_WIDTH, VOXEL_SCROLLABLE_HEIGHT); - scrollable.setFlexDirection(YogaFlexDirection.Row); + scrollable.setFlexDirection(YogaFlexDirection.Column); scrollable.setAlignItems(YogaAlignment.Start); //search input @@ -134,14 +134,23 @@ public class MenuGeneratorsTerrainEditing { scrollable.clearChildren(); VoxelData voxelData = Globals.gameConfigCurrent.getVoxelData(); List matchingVoxels = voxelData.getTypes().stream().filter((type)->type.getName().toLowerCase().contains(searchString.toLowerCase())).toList(); + Div currentRow = null; + int incrementer = 0; //generate voxel buttons for(VoxelType type : matchingVoxels){ + if(incrementer % 4 == 0){ + currentRow = Div.createRow(); + currentRow.setJustifyContent(YogaJustification.Evenly); + scrollable.addChild(currentRow); + } + Div containerDiv = Div.createDiv(); + containerDiv.setMinWidthPercent(25.0f); + currentRow.addChild(containerDiv); + Button newButton = new Button(); newButton.setAlignItems(YogaAlignment.Center); //dimensions - newButton.setWidth(VOXEL_BUTTON_WIDTH); newButton.setMinWidth(VOXEL_BUTTON_WIDTH); - newButton.setHeight(VOXEL_BUTTON_HEIGHT); newButton.setMinHeight(VOXEL_BUTTON_HEIGHT); //margin newButton.setMarginBottom(MARGIN_EACH_SIDE); @@ -157,7 +166,12 @@ public class MenuGeneratorsTerrainEditing { } texturePanel.setWidth(VOXEL_BUTTON_TEXTURE_DIM); texturePanel.setHeight(VOXEL_BUTTON_TEXTURE_DIM); + texturePanel.setMarginBottom(MARGIN_EACH_SIDE); + texturePanel.setMarginLeft(MARGIN_EACH_SIDE); + texturePanel.setMarginRight(MARGIN_EACH_SIDE); + texturePanel.setMarginTop(MARGIN_EACH_SIDE); newButton.addChild(texturePanel); + texturePanel.setAlignSelf(YogaAlignment.Center); //button handling newButton.addChild(voxelLabel); newButton.setOnClick(new ClickEventCallback() {public boolean execute(ClickEvent event){ @@ -166,7 +180,13 @@ public class MenuGeneratorsTerrainEditing { Globals.clientSelectedVoxelType = type; return false; }}); - scrollable.addChild(newButton); + containerDiv.addChild(newButton); + incrementer++; + } + for(int i = incrementer; i % 4 != 0; i++){ + Div spacerDiv = Div.createDiv(); + spacerDiv.setMinWidthPercent(25.0f); + currentRow.addChild(spacerDiv); } } diff --git a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java index f6c0325b..702696cc 100644 --- a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java +++ b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsUITesting.java @@ -8,6 +8,7 @@ import org.joml.Vector3f; import electrosphere.client.entity.camera.CameraEntityUtils; import electrosphere.client.ui.menu.WindowUtils; +import electrosphere.client.ui.menu.ingame.MenuGeneratorsTerrainEditing; import electrosphere.engine.Globals; import electrosphere.engine.assetmanager.AssetDataStrings; import electrosphere.entity.Entity; @@ -16,6 +17,7 @@ import electrosphere.entity.state.inventory.InventoryUtils; import electrosphere.entity.state.inventory.RelationalInventoryState; import electrosphere.entity.state.inventory.UnrelationalInventoryState; import electrosphere.game.data.creature.type.equip.EquipPoint; +import electrosphere.game.data.voxel.VoxelType; import electrosphere.renderer.actor.ActorUtils; import electrosphere.renderer.ui.components.CharacterCustomizer; import electrosphere.renderer.ui.components.EquipmentInventoryPanel; @@ -57,6 +59,7 @@ public class MenuGeneratorsUITesting { "CharacterCustomizer", "NaturalInventoryPanel", "EquipInventoryPanel", + "VoxelPicker", }), (ValueChangeEvent event) -> { attachComponent(rVal,event.getAsString()); @@ -135,6 +138,10 @@ public class MenuGeneratorsUITesting { InventoryUtils.setEquipInventory(ent, invent); formEl.addChild(EquipmentInventoryPanel.createEquipmentInventoryPanel(ent)); } break; + case "VoxelPicker": { + formEl.addChild(MenuGeneratorsTerrainEditing.createVoxelTypeSelectionPanel((VoxelType voxelType) -> { + })); + } break; } }