Create scaffolding for Window API | fix some positioning issues in BaseComponent
This commit is contained in:
@@ -0,0 +1,274 @@
|
|||||||
|
package com.bartlomiejpluta.base.api.game.gui.base;
|
||||||
|
|
||||||
|
public abstract class BaseWidget implements Widget {
|
||||||
|
protected Widget parent;
|
||||||
|
|
||||||
|
protected SizeMode widthMode = SizeMode.NORMAL;
|
||||||
|
protected SizeMode heightMode = SizeMode.NORMAL;
|
||||||
|
|
||||||
|
protected float x;
|
||||||
|
protected float y;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
protected abstract float getContentWidth();
|
||||||
|
|
||||||
|
protected abstract float getContentHeight();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getWidth() {
|
||||||
|
return widthMode == SizeMode.MATCH_PARENT
|
||||||
|
? (parent != null ? parent.getWidth() - parent.getPaddingLeft() - parent.getPaddingRight() - marginLeft - marginRight : 0)
|
||||||
|
: getActualWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getActualWidth() {
|
||||||
|
return paddingLeft + (widthMode == SizeMode.NORMAL ? width : getContentWidth()) + paddingRight;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getHeight() {
|
||||||
|
return heightMode == SizeMode.MATCH_PARENT
|
||||||
|
? (parent != null ? parent.getHeight() - parent.getPaddingTop() - parent.getPaddingBottom() - marginTop - marginBottom : 0)
|
||||||
|
: getActualHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getActualHeight() {
|
||||||
|
return paddingTop + (heightMode == SizeMode.NORMAL ? height : getContentHeight()) + paddingBottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setWidth(float width) {
|
||||||
|
this.width = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setHeight(float height) {
|
||||||
|
this.height = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSize(float width, float height) {
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSizeMode(SizeMode widthMode, SizeMode heightMode) {
|
||||||
|
this.widthMode = widthMode;
|
||||||
|
this.heightMode = heightMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SizeMode getWidthMode() {
|
||||||
|
return widthMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setWidthMode(SizeMode mode) {
|
||||||
|
this.widthMode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SizeMode getHeightMode() {
|
||||||
|
return heightMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setHeightMode(SizeMode mode) {
|
||||||
|
this.heightMode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Widget getParent() {
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setParent(Widget parent) {
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setX(float x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setY(float y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPosition(float x, float y) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,8 +19,12 @@ public interface Widget {
|
|||||||
|
|
||||||
float getWidth();
|
float getWidth();
|
||||||
|
|
||||||
|
float getActualWidth();
|
||||||
|
|
||||||
float getHeight();
|
float getHeight();
|
||||||
|
|
||||||
|
float getActualHeight();
|
||||||
|
|
||||||
void setWidth(float width);
|
void setWidth(float width);
|
||||||
|
|
||||||
void setHeight(float height);
|
void setHeight(float height);
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.bartlomiejpluta.base.api.game.gui.component;
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.base.BaseWidget;
|
||||||
|
|
||||||
|
public abstract class BaseComponent extends BaseWidget implements Component {
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ package com.bartlomiejpluta.base.api.game.gui.component;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class BaseContainer extends Component implements Container {
|
public abstract class BaseContainer extends BaseComponent implements Container {
|
||||||
protected final List<Component> children = new LinkedList<>();
|
protected final List<Component> children = new LinkedList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,275 +1,6 @@
|
|||||||
package com.bartlomiejpluta.base.api.game.gui.component;
|
package com.bartlomiejpluta.base.api.game.gui.component;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.game.gui.base.SizeMode;
|
|
||||||
import com.bartlomiejpluta.base.api.game.gui.base.Widget;
|
import com.bartlomiejpluta.base.api.game.gui.base.Widget;
|
||||||
|
|
||||||
public abstract class Component implements Widget {
|
public interface Component extends Widget {
|
||||||
protected Widget parent;
|
|
||||||
|
|
||||||
protected SizeMode widthMode = SizeMode.NORMAL;
|
|
||||||
protected SizeMode heightMode = SizeMode.NORMAL;
|
|
||||||
|
|
||||||
protected float x;
|
|
||||||
protected float y;
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
protected abstract float getContentWidth();
|
|
||||||
|
|
||||||
protected abstract float getContentHeight();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getWidth() {
|
|
||||||
return widthMode == SizeMode.MATCH_PARENT
|
|
||||||
? (parent != null ? parent.getWidth() : 0)
|
|
||||||
: getActualWidth();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected float getActualWidth() {
|
|
||||||
return paddingLeft + (widthMode == SizeMode.NORMAL ? width : getContentWidth()) + paddingRight;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getHeight() {
|
|
||||||
return heightMode == SizeMode.MATCH_PARENT
|
|
||||||
? (parent != null ? parent.getHeight() : 0)
|
|
||||||
: getActualHeight();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected float getActualHeight() {
|
|
||||||
return paddingTop + (heightMode == SizeMode.NORMAL ? height : getContentHeight()) + paddingBottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setWidth(float width) {
|
|
||||||
this.width = width;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setHeight(float height) {
|
|
||||||
this.height = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setSize(float width, float height) {
|
|
||||||
this.width = width;
|
|
||||||
this.height = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setSizeMode(SizeMode widthMode, SizeMode heightMode) {
|
|
||||||
this.widthMode = widthMode;
|
|
||||||
this.heightMode = heightMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SizeMode getWidthMode() {
|
|
||||||
return widthMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setWidthMode(SizeMode mode) {
|
|
||||||
this.widthMode = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SizeMode getHeightMode() {
|
|
||||||
return heightMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setHeightMode(SizeMode mode) {
|
|
||||||
this.heightMode = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Widget getParent() {
|
|
||||||
return parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setParent(Widget parent) {
|
|
||||||
this.parent = parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getX() {
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getY() {
|
|
||||||
return y;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setX(float x) {
|
|
||||||
this.x = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setY(float y) {
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setPosition(float x, float y) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
@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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.bartlomiejpluta.base.api.game.gui.component;
|
package com.bartlomiejpluta.base.api.game.gui.component;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.game.gui.base.Widget;
|
public interface Container extends Component {
|
||||||
|
|
||||||
public interface Container extends Widget {
|
|
||||||
void add(Component component);
|
void add(Component component);
|
||||||
|
|
||||||
void remove(Component component);
|
void remove(Component component);
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.bartlomiejpluta.base.api.game.gui.window;
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.base.BaseWidget;
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.component.Component;
|
||||||
|
|
||||||
|
public abstract class BaseWindow extends BaseWidget implements Window {
|
||||||
|
protected Component content;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected float getContentWidth() {
|
||||||
|
return content.getMarginLeft() + content.getActualWidth() + content.getMarginRight();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected float getContentHeight() {
|
||||||
|
return content.getMarginTop() + content.getActualHeight() + content.getMarginBottom();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onOpen(WindowManager manager) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClose(WindowManager manager) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
package com.bartlomiejpluta.base.api.game.gui.window;
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.base.BaseWidget;
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.base.GUI;
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.base.SizeMode;
|
||||||
|
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||||
|
|
||||||
|
import java.util.Deque;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
import static java.util.Objects.requireNonNull;
|
||||||
|
|
||||||
|
public class DefaultWindowManager extends BaseWidget implements WindowManager {
|
||||||
|
private final Deque<Window> windows = new LinkedList<>();
|
||||||
|
private DisplayMode displayMode = DisplayMode.DISPLAY_STACK;
|
||||||
|
|
||||||
|
public DefaultWindowManager() {
|
||||||
|
super.setSizeMode(SizeMode.MATCH_PARENT, SizeMode.MATCH_PARENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected float getContentWidth() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected float getContentHeight() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSizeMode(SizeMode widthMode, SizeMode heightMode) {
|
||||||
|
throw new UnsupportedOperationException("Window Manager is hardcoded to be of MATCH_PARENT mode");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setWidthMode(SizeMode mode) {
|
||||||
|
throw new UnsupportedOperationException("Window Manager is hardcoded to be of MATCH_PARENT mode");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setHeightMode(SizeMode mode) {
|
||||||
|
throw new UnsupportedOperationException("Window Manager is hardcoded to be of MATCH_PARENT mode");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayMode(DisplayMode mode) {
|
||||||
|
this.displayMode = requireNonNull(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void open(Window window) {
|
||||||
|
requireNonNull(window, "Window cannot be null");
|
||||||
|
|
||||||
|
windows.push(window);
|
||||||
|
window.setParent(this);
|
||||||
|
window.onOpen(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
var window = windows.pop();
|
||||||
|
window.setParent(null);
|
||||||
|
window.onClose(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void draw(Screen screen, GUI gui) {
|
||||||
|
switch (displayMode) {
|
||||||
|
case DISPLAY_STACK -> {
|
||||||
|
for (var window : windows) {
|
||||||
|
window.draw(screen, gui);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case DISPLAY_TOP -> {
|
||||||
|
var topWindow = windows.peekFirst();
|
||||||
|
if (topWindow != null) {
|
||||||
|
topWindow.draw(screen, gui);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.bartlomiejpluta.base.api.game.gui.window;
|
||||||
|
|
||||||
|
public enum DisplayMode {
|
||||||
|
DISPLAY_STACK,
|
||||||
|
DISPLAY_TOP
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.bartlomiejpluta.base.api.game.gui.window;
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.base.Widget;
|
||||||
|
|
||||||
|
public interface Window extends Widget {
|
||||||
|
void onOpen(WindowManager manager);
|
||||||
|
|
||||||
|
void onClose(WindowManager manager);
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.bartlomiejpluta.base.api.game.gui.window;
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.api.game.gui.base.Widget;
|
||||||
|
|
||||||
|
public interface WindowManager extends Widget {
|
||||||
|
void setDisplayMode(DisplayMode mode);
|
||||||
|
|
||||||
|
void open(Window window);
|
||||||
|
|
||||||
|
void close();
|
||||||
|
}
|
||||||
@@ -21,11 +21,21 @@ public class ScreenWidget implements Widget {
|
|||||||
return screen.getWidth();
|
return screen.getWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getActualWidth() {
|
||||||
|
return screen.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHeight() {
|
public float getHeight() {
|
||||||
return screen.getHeight();
|
return screen.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getActualHeight() {
|
||||||
|
return screen.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Widget getParent() {
|
public Widget getParent() {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user