summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2020-05-18 15:27:49 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2020-05-18 15:27:49 +0200
commitc39bdc63b1911dcc3b7c827af38e4a026d1ab22e (patch)
tree28e29489272e47f52f7f2d32145dcd35068502d4
parent320e18f47913ecf807cd73a4868e50a675a49ddf (diff)
downloadgdx-boardgame-c39bdc63b1911dcc3b7c827af38e4a026d1ab22e.zip
gdx-boardgame-c39bdc63b1911dcc3b7c827af38e4a026d1ab22e.tar.gz
ui : showcase container
-rw-r--r--test/src/ch/asynk/gdx/boardgame/test/UiScreen.java84
1 files changed, 66 insertions, 18 deletions
diff --git a/test/src/ch/asynk/gdx/boardgame/test/UiScreen.java b/test/src/ch/asynk/gdx/boardgame/test/UiScreen.java
index 73431a2..e088dde 100644
--- a/test/src/ch/asynk/gdx/boardgame/test/UiScreen.java
+++ b/test/src/ch/asynk/gdx/boardgame/test/UiScreen.java
@@ -11,30 +11,38 @@ import com.badlogic.gdx.math.Rectangle;
import ch.asynk.gdx.boardgame.ui.Alignment;
import ch.asynk.gdx.boardgame.ui.Button;
+import ch.asynk.gdx.boardgame.ui.Container;
import ch.asynk.gdx.boardgame.ui.Element;
import ch.asynk.gdx.boardgame.ui.Label;
import ch.asynk.gdx.boardgame.ui.List;
import ch.asynk.gdx.boardgame.ui.Patch;
import ch.asynk.gdx.boardgame.ui.Scissors;
import ch.asynk.gdx.boardgame.ui.Scrollable;
+import ch.asynk.gdx.boardgame.ui.Sizing;
import ch.asynk.gdx.boardgame.utils.Collection;
import ch.asynk.gdx.boardgame.utils.IterableArray;
public class UiScreen extends AbstractScreen
{
private final Button next;
- private final Button[] buttons = new Button[8];
+ private final Button[] buttons0 = new Button[8];
+ private final Button[] buttons1 = new Button[3];
private final MyList list;
+ private final Container container;
public enum State
{
- POSITIONS, SCROLL, DONE;
+ POSITIONS, SCROLL, CONTAINER_V, CONTAINER_H, DONE;
public State next()
{
switch(this) {
case POSITIONS:
return SCROLL;
case SCROLL:
+ return CONTAINER_V;
+ case CONTAINER_V:
+ return CONTAINER_H;
+ case CONTAINER_H:
return DONE;
default:
return POSITIONS;
@@ -53,14 +61,20 @@ public class UiScreen extends AbstractScreen
final NinePatch patch = app.assets.getNinePatch(app.assets.PATCH, 23, 23, 23 ,23);
final BitmapFont font = app.assets.getFont(app.assets.FONT_25);
- this.buttons[0] = buildButton(font, patch, 10, 15, Alignment.TOP_LEFT, Alignment.BOTTOM_RIGHT);
- this.buttons[1] = buildButton(font, patch, 10, 15, Alignment.TOP_CENTER, Alignment.BOTTOM_CENTER);
- this.buttons[2] = buildButton(font, patch, 10, 15, Alignment.TOP_RIGHT, Alignment.BOTTOM_LEFT);
- this.buttons[3] = buildButton(font, patch, 10, 15, Alignment.MIDDLE_LEFT, Alignment.MIDDLE_RIGHT);
- this.buttons[4] = buildButton(font, patch, 10, 15, Alignment.MIDDLE_CENTER, Alignment.MIDDLE_CENTER);
- this.buttons[5] = buildButton(font, patch, 10, 15, Alignment.MIDDLE_RIGHT, Alignment.MIDDLE_LEFT);
- this.buttons[6] = buildButton(font, patch, 10, 15, Alignment.BOTTOM_LEFT, Alignment.TOP_RIGHT);
- this.buttons[7] = buildButton(font, patch, 10, 15, Alignment.BOTTOM_CENTER, Alignment.TOP_CENTER);
+ this.buttons0[0] = buildButton(font, patch, 10, 15, Alignment.TOP_LEFT, Alignment.BOTTOM_RIGHT);
+ this.buttons0[1] = buildButton(font, patch, 10, 15, Alignment.TOP_CENTER, Alignment.BOTTOM_CENTER);
+ this.buttons0[2] = buildButton(font, patch, 10, 15, Alignment.TOP_RIGHT, Alignment.BOTTOM_LEFT);
+ this.buttons0[3] = buildButton(font, patch, 10, 15, Alignment.MIDDLE_LEFT, Alignment.MIDDLE_RIGHT);
+ this.buttons0[4] = buildButton(font, patch, 10, 15, Alignment.MIDDLE_CENTER, Alignment.MIDDLE_CENTER);
+ this.buttons0[5] = buildButton(font, patch, 10, 15, Alignment.MIDDLE_RIGHT, Alignment.MIDDLE_LEFT);
+ this.buttons0[6] = buildButton(font, patch, 10, 15, Alignment.BOTTOM_LEFT, Alignment.TOP_RIGHT);
+ this.buttons0[7] = buildButton(font, patch, 10, 15, Alignment.BOTTOM_CENTER, Alignment.TOP_CENTER);
+
+ this.buttons1[0] = buildButton(font, patch, 10, 15, Alignment.TOP_CENTER, Alignment.TOP_CENTER, Sizing.FILL_X);
+ this.buttons1[1] = buildButton(font, patch, 10, 15, Alignment.MIDDLE_RIGHT, Alignment.TOP_CENTER, Sizing.FILL_BOTH | Sizing.EXPAND_BOTH);
+ this.buttons1[2] = buildButton(font, patch, 10, 15, Alignment.BOTTOM_LEFT, Alignment.TOP_CENTER, Sizing.FILL_Y);
+
+ this.container = buildContainer();
this.list = new MyList(font, patch, app.assets.getTextureRegion(app.assets.SELECTED));
this.list.setAlignment(Alignment.MIDDLE_CENTER);
@@ -79,13 +93,40 @@ public class UiScreen extends AbstractScreen
private Button buildButton(BitmapFont font, NinePatch patch, int padding, int spacing, Alignment a, Alignment la)
{
- final Button button = new MyButton(font, patch, padding, spacing);
+ return buildButton(font, patch, padding, spacing, a, la, -1);
+ }
+
+ private Button buildButton(BitmapFont font, NinePatch patch, int padding, int spacing, Alignment a, Alignment la, int s)
+ {
+ final Button button = getButton(font, patch, padding, spacing, s < 0);
button.setAlignment(a);
button.setLabelAlignment(la);
button.write(String.format("%04d;%04d", 0, 0));
+ if (s >= 0) {
+ button.setSizing(s);
+ button.write(Sizing.print(s));
+ }
return button;
}
+ private Button getButton(BitmapFont font, NinePatch patch, int padding, int spacing, boolean mine)
+ {
+ if (mine)
+ return new MyButton(font, patch, padding, spacing);
+ else
+ return new Button(font, patch, padding, spacing);
+ }
+
+ private Container buildContainer()
+ {
+ Container c = new Container();
+ c.setDirection(Container.Direction.VERTICAL);
+ c.add(this.buttons1[0]);
+ c.add(this.buttons1[1]);
+ c.add(this.buttons1[2]);
+ return c;
+ }
+
private void setState(State state)
{
switch (state) {
@@ -96,8 +137,15 @@ public class UiScreen extends AbstractScreen
setButtons(false);
root.add(list);
break;
- case DONE:
+ case CONTAINER_V:
root.remove(list);
+ root.add(container);
+ break;
+ case CONTAINER_H:
+ this.container.setDirection(Container.Direction.HORIZONTAL);
+ break;
+ case DONE:
+ root.remove(container);
app.switchToMenu();
break;
}
@@ -121,11 +169,11 @@ public class UiScreen extends AbstractScreen
private void setButtons(boolean add)
{
if (add) {
- for (Button button : buttons) {
+ for (Button button : buttons0) {
root.add(button);
}
} else {
- for (Button button : buttons)
+ for (Button button : buttons0)
root.remove(button);
}
}
@@ -153,9 +201,9 @@ class MyButton extends Button
super(font, patch, padding, spacing);
}
- @Override public void computeGeometry(Rectangle space, boolean resized)
+ @Override public void computeGeometry(Rectangle area, boolean resized)
{
- super.computeGeometry(space, resized);
+ super.computeGeometry(area, resized);
label.write(String.format("%04d;%04d", (int)getX(), (int)getY()));
label.clear();
clear();
@@ -199,13 +247,13 @@ class MyList extends Patch
this.scrollable.hScroll = true;
}
- @Override public void computeGeometry(Rectangle space, boolean resized)
+ @Override public void computeGeometry(Rectangle area, boolean resized)
{
scrollable.computeDimensions();
rect.height = 300;
rect.width = scrollable.getBestWidth() + (2 * padding) - 100;
- super.computeGeometry(space, resized);
+ super.computeGeometry(area, resized);
title.computeGeometry(innerRect, resized);
Rectangle a = new Rectangle(getInnerX(), getInnerY(), getInnerWidth(), getInnerHeight() - title.getHeight() - 0);
scrollable.computeGeometry(a, resized);