From 3267e52a4d206769a3a43c7c4b7df9267abdd659 Mon Sep 17 00:00:00 2001 From: austin Date: Wed, 20 Oct 2021 18:49:55 -0400 Subject: [PATCH] Start widget rework --- assets/Data/creatures.json | 2 +- .../java/electrosphere/menu/MenuUtils.java | 1 + .../electrosphere/renderer/ui/Widget.java | 13 +---- .../renderer/ui/font/TextBox.java | 2 +- .../renderer/ui/layout/LayoutScheme.java | 21 +++++++++ .../renderer/ui/layout/LayoutSchemeList.java | 46 ++++++++++++++++++ .../ui/layout/LayoutSchemeListScrollable.java | 47 +++++++++++++++++++ .../ui/transparenttextbox/TextBox.java | 4 +- 8 files changed, 120 insertions(+), 16 deletions(-) create mode 100644 src/main/java/electrosphere/renderer/ui/layout/LayoutScheme.java create mode 100644 src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeList.java create mode 100644 src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeListScrollable.java diff --git a/assets/Data/creatures.json b/assets/Data/creatures.json index a4a5c504..2eae521a 100644 --- a/assets/Data/creatures.json +++ b/assets/Data/creatures.json @@ -89,7 +89,7 @@ { "type" : "GROUND", "acceleration" : 0.15, - "maxVelocity" : 1 + "maxVelocity" : 1.5 } ], "physicsObject" : { diff --git a/src/main/java/electrosphere/menu/MenuUtils.java b/src/main/java/electrosphere/menu/MenuUtils.java index adcf0abc..97faac94 100644 --- a/src/main/java/electrosphere/menu/MenuUtils.java +++ b/src/main/java/electrosphere/menu/MenuUtils.java @@ -24,6 +24,7 @@ public class MenuUtils { 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 - 350, "UI TESTING", true)); return rVal; } diff --git a/src/main/java/electrosphere/renderer/ui/Widget.java b/src/main/java/electrosphere/renderer/ui/Widget.java index 8e2e190a..517befa6 100644 --- a/src/main/java/electrosphere/renderer/ui/Widget.java +++ b/src/main/java/electrosphere/renderer/ui/Widget.java @@ -6,10 +6,6 @@ package electrosphere.renderer.ui; */ public abstract class Widget { - public enum WidgetType { - TEXT_BOX, - } - int width; int height; @@ -18,15 +14,12 @@ public abstract class Widget { boolean draw; - WidgetType type; - - public Widget(int positionX, int positionY, int width, int height, boolean draw, WidgetType type) { + public Widget(int positionX, int positionY, int width, int height, boolean draw) { this.width = width; this.height = height; this.positionX = positionX; this.positionY = positionY; this.draw = draw; - this.type = type; } public int getWidth() { @@ -68,10 +61,6 @@ public abstract class Widget { public void setDraw(boolean draw) { this.draw = draw; } - - public WidgetType getType() { - return type; - } public abstract void draw(); diff --git a/src/main/java/electrosphere/renderer/ui/font/TextBox.java b/src/main/java/electrosphere/renderer/ui/font/TextBox.java index b71b06e7..eeb05db9 100644 --- a/src/main/java/electrosphere/renderer/ui/font/TextBox.java +++ b/src/main/java/electrosphere/renderer/ui/font/TextBox.java @@ -25,7 +25,7 @@ public class TextBox extends Widget{ Vector3f color = new Vector3f(0,0,0); public TextBox(int positionX, int positionY, int width, int height, int rows, int cols, String text, boolean render, boolean editable) { - super(positionX,positionY,width,height,render,Widget.WidgetType.TEXT_BOX); + super(positionX,positionY,width,height,render); this.positionX = positionX; this.positionY = positionY; this.width = width; diff --git a/src/main/java/electrosphere/renderer/ui/layout/LayoutScheme.java b/src/main/java/electrosphere/renderer/ui/layout/LayoutScheme.java new file mode 100644 index 00000000..695dcce2 --- /dev/null +++ b/src/main/java/electrosphere/renderer/ui/layout/LayoutScheme.java @@ -0,0 +1,21 @@ +package electrosphere.renderer.ui.layout; + +import electrosphere.renderer.ui.Widget; +import java.util.LinkedList; +import java.util.List; + +/** + * + * @author amaterasu + */ +public abstract interface LayoutScheme { + + public abstract void pack(); + + public abstract void addWidget(Widget widget); + + public abstract List getWidgets(); + + public abstract void destroy(); + +} diff --git a/src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeList.java b/src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeList.java new file mode 100644 index 00000000..a4669d96 --- /dev/null +++ b/src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeList.java @@ -0,0 +1,46 @@ +package electrosphere.renderer.ui.layout; + +import electrosphere.renderer.ui.Widget; +import java.util.LinkedList; +import java.util.List; + +/** + * + * @author amaterasu + */ +public class LayoutSchemeList extends Widget implements LayoutScheme { + + List widgetList = new LinkedList(); + + public LayoutSchemeList(int positionX, int positionY, int width, int height, boolean draw){ + super(positionX,positionY,width,height,draw); + } + + @Override + public void draw() { + for(Widget child : widgetList){ + child.draw(); + } + } + + @Override + public void addWidget(Widget widget) { + widgetList.add(widget); + widget.setDraw(false); + } + + @Override + public List getWidgets() { + return widgetList; + } + + @Override + public void destroy() { + } + + @Override + public void pack() { + + } + +} diff --git a/src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeListScrollable.java b/src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeListScrollable.java new file mode 100644 index 00000000..adba9587 --- /dev/null +++ b/src/main/java/electrosphere/renderer/ui/layout/LayoutSchemeListScrollable.java @@ -0,0 +1,47 @@ +package electrosphere.renderer.ui.layout; + +import electrosphere.renderer.ui.Widget; +import java.util.LinkedList; +import java.util.List; + +/** + * + * @author amaterasu + */ +public class LayoutSchemeListScrollable extends Widget implements LayoutScheme { + + List widgetList = new LinkedList(); + + public LayoutSchemeListScrollable(int positionX, int positionY, int width, int height, boolean draw){ + super(positionX,positionY,width,height,draw); + } + + @Override + public void draw() { + for(Widget child : widgetList){ + child.draw(); + } + } + + @Override + public void pack() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void addWidget(Widget widget) { + widgetList.add(widget); + widget.setDraw(false); + } + + @Override + public List getWidgets() { + return widgetList; + } + + @Override + public void destroy() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + +} diff --git a/src/main/java/electrosphere/renderer/ui/transparenttextbox/TextBox.java b/src/main/java/electrosphere/renderer/ui/transparenttextbox/TextBox.java index 84161888..629d69de 100644 --- a/src/main/java/electrosphere/renderer/ui/transparenttextbox/TextBox.java +++ b/src/main/java/electrosphere/renderer/ui/transparenttextbox/TextBox.java @@ -20,7 +20,7 @@ public class TextBox extends Widget{ Vector3f scalar; public TextBox(int positionX, int positionY, int width, int height, String text, boolean render, boolean editable) { - super(positionX,positionY,width,height,render,Widget.WidgetType.TEXT_BOX); + super(positionX,positionY,width,height,render); this.positionX = positionX; this.positionY = positionY; this.width = width; @@ -30,7 +30,7 @@ public class TextBox extends Widget{ } public TextBox(int positionX, int positionY, int width, int height, String text, boolean render, boolean editable, Vector3f scalar) { - super(positionX,positionY,width,height,render,Widget.WidgetType.TEXT_BOX); + super(positionX,positionY,width,height,render); this.positionX = positionX; this.positionY = positionY; this.width = width;