Create basic GUI components
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
package com.bartlomiejpluta.base.api.game.gui;
|
||||
|
||||
public abstract class Component implements Widget {
|
||||
protected Widget parent;
|
||||
|
||||
protected float absX;
|
||||
protected float absY;
|
||||
|
||||
protected float width;
|
||||
protected float height;
|
||||
|
||||
protected float marginTop;
|
||||
protected float marginRight;
|
||||
protected float marginBottom;
|
||||
protected float marginLeft;
|
||||
|
||||
protected float paddingTop;
|
||||
protected float paddingRight;
|
||||
protected float paddingBottom;
|
||||
protected float paddingLeft;
|
||||
|
||||
@Override
|
||||
public Widget getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public void setParent(Widget parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getAbsoluteX() {
|
||||
return absX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getAbsoluteY() {
|
||||
return absY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAbsoluteX(float x) {
|
||||
this.absX = x;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAbsoluteY(float y) {
|
||||
this.absY = y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWidth(float width) {
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHeight(float height) {
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float top, float right, float bottom, float left) {
|
||||
this.marginTop = top;
|
||||
this.marginRight = right;
|
||||
this.marginBottom = bottom;
|
||||
this.marginLeft = left;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float top, float rightLeft, float bottom) {
|
||||
this.marginTop = top;
|
||||
this.marginRight = rightLeft;
|
||||
this.marginBottom = bottom;
|
||||
this.marginLeft = rightLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float topBottom, float rightLeft) {
|
||||
this.marginTop = topBottom;
|
||||
this.marginRight = rightLeft;
|
||||
this.marginBottom = topBottom;
|
||||
this.marginLeft = rightLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float all) {
|
||||
this.marginTop = all;
|
||||
this.marginRight = all;
|
||||
this.marginBottom = all;
|
||||
this.marginLeft = all;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginTop(float margin) {
|
||||
this.marginTop = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginRight(float margin) {
|
||||
this.marginRight = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginBottom(float margin) {
|
||||
this.marginBottom = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginLeft(float margin) {
|
||||
this.marginLeft = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginTop() {
|
||||
return marginTop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginRight() {
|
||||
return marginRight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginBottom() {
|
||||
return marginBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginLeft() {
|
||||
return marginLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float top, float right, float bottom, float left) {
|
||||
this.paddingTop = top;
|
||||
this.paddingRight = right;
|
||||
this.paddingBottom = bottom;
|
||||
this.paddingLeft = left;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float top, float rightLeft, float bottom) {
|
||||
this.paddingTop = top;
|
||||
this.paddingRight = rightLeft;
|
||||
this.paddingBottom = bottom;
|
||||
this.paddingLeft = rightLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float topBottom, float rightLeft) {
|
||||
this.paddingTop = topBottom;
|
||||
this.paddingRight = rightLeft;
|
||||
this.paddingBottom = topBottom;
|
||||
this.paddingLeft = rightLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float all) {
|
||||
this.paddingTop = all;
|
||||
this.paddingRight = all;
|
||||
this.paddingBottom = all;
|
||||
this.paddingLeft = all;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingTop(float padding) {
|
||||
this.paddingTop = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingRight(float padding) {
|
||||
this.paddingRight = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingBottom(float padding) {
|
||||
this.paddingBottom = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingLeft(float padding) {
|
||||
this.paddingLeft = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingTop() {
|
||||
return paddingTop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingRight() {
|
||||
return paddingRight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingBottom() {
|
||||
return paddingBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingLeft() {
|
||||
return paddingLeft;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.bartlomiejpluta.base.api.game.gui;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class Container extends Component {
|
||||
protected final List<Component> children = new LinkedList<>();
|
||||
|
||||
public void addChild(Component component) {
|
||||
this.children.add(component);
|
||||
component.setParent(this);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,8 @@ public interface GUI extends Renderable, Disposable {
|
||||
|
||||
void setRoot(Widget root);
|
||||
|
||||
void beginPath();
|
||||
|
||||
void drawRectangle(float x, float y, float w, float h);
|
||||
|
||||
void fillColor(Color color);
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.bartlomiejpluta.base.api.game.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||
|
||||
public class HBox extends Container {
|
||||
|
||||
@Override
|
||||
public float getWidth() {
|
||||
var childrenWidth = 0.0f;
|
||||
|
||||
for (var child : children) {
|
||||
childrenWidth += child.getMarginLeft() + child.getWidth() + child.getMarginRight();
|
||||
}
|
||||
|
||||
return paddingLeft + childrenWidth + paddingRight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHeight() {
|
||||
var theHighestChild = 0.0f;
|
||||
|
||||
for (var child : children) {
|
||||
var height = child.getMarginTop() + child.getHeight() + child.getMarginBottom();
|
||||
if (height > theHighestChild) {
|
||||
theHighestChild = height;
|
||||
}
|
||||
}
|
||||
|
||||
return paddingTop + theHighestChild + paddingBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Screen screen, GUI gui) {
|
||||
var currentX = absX + paddingLeft;
|
||||
var currentY = absY + paddingTop;
|
||||
|
||||
for (var child : children) {
|
||||
var childAbsX = currentX + child.getMarginLeft();
|
||||
var childAbsY = currentY + child.getMarginTop();
|
||||
child.setAbsoluteX(childAbsX);
|
||||
child.setAbsoluteY(childAbsY);
|
||||
|
||||
currentX += child.getMarginLeft() + child.getWidth() + child.getMarginRight();
|
||||
|
||||
child.draw(screen, gui);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.bartlomiejpluta.base.api.game.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||
|
||||
public class VBox extends Container {
|
||||
|
||||
@Override
|
||||
public float getWidth() {
|
||||
var theWidestChild = 0.0f;
|
||||
|
||||
for (var child : children) {
|
||||
var width = child.getMarginLeft() + child.getWidth() + child.getMarginRight();
|
||||
if (width > theWidestChild) {
|
||||
theWidestChild = width;
|
||||
}
|
||||
}
|
||||
|
||||
return paddingLeft + theWidestChild + paddingRight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHeight() {
|
||||
var childrenHeight = 0.0f;
|
||||
|
||||
for (var child : children) {
|
||||
childrenHeight += child.getMarginTop() + child.getHeight() + child.getMarginBottom();
|
||||
}
|
||||
|
||||
return paddingTop + childrenHeight + paddingBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Screen screen, GUI gui) {
|
||||
var currentX = absX + paddingLeft;
|
||||
var currentY = absY + paddingTop;
|
||||
|
||||
for (var child : children) {
|
||||
var childAbsX = currentX + child.getMarginLeft();
|
||||
var childAbsY = currentY + child.getMarginTop();
|
||||
child.setAbsoluteX(childAbsX);
|
||||
child.setAbsoluteY(childAbsY);
|
||||
|
||||
currentY += child.getMarginTop() + child.getHeight() + child.getMarginBottom();
|
||||
|
||||
child.draw(screen, gui);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,5 +5,69 @@ import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||
public interface Widget {
|
||||
Widget getParent();
|
||||
|
||||
float getAbsoluteX();
|
||||
|
||||
float getAbsoluteY();
|
||||
|
||||
void setAbsoluteX(float x);
|
||||
|
||||
void setAbsoluteY(float y);
|
||||
|
||||
float getWidth();
|
||||
|
||||
float getHeight();
|
||||
|
||||
void setWidth(float width);
|
||||
|
||||
void setHeight(float height);
|
||||
|
||||
void setMargin(float top, float right, float bottom, float left);
|
||||
|
||||
void setMargin(float top, float rightLeft, float bottom);
|
||||
|
||||
void setMargin(float topBottom, float rightLeft);
|
||||
|
||||
void setMargin(float all);
|
||||
|
||||
void setMarginTop(float margin);
|
||||
|
||||
void setMarginRight(float margin);
|
||||
|
||||
void setMarginBottom(float margin);
|
||||
|
||||
void setMarginLeft(float margin);
|
||||
|
||||
float getMarginTop();
|
||||
|
||||
float getMarginRight();
|
||||
|
||||
float getMarginBottom();
|
||||
|
||||
float getMarginLeft();
|
||||
|
||||
void setPadding(float top, float right, float bottom, float left);
|
||||
|
||||
void setPadding(float top, float rightLeft, float bottom);
|
||||
|
||||
void setPadding(float topBottom, float rightLeft);
|
||||
|
||||
void setPadding(float all);
|
||||
|
||||
void setPaddingTop(float padding);
|
||||
|
||||
void setPaddingRight(float padding);
|
||||
|
||||
void setPaddingBottom(float padding);
|
||||
|
||||
void setPaddingLeft(float padding);
|
||||
|
||||
float getPaddingTop();
|
||||
|
||||
float getPaddingRight();
|
||||
|
||||
float getPaddingBottom();
|
||||
|
||||
float getPaddingLeft();
|
||||
|
||||
void draw(Screen screen, GUI gui);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user