diff --git a/.gitattributes b/.gitattributes index d367ade696b..577a579fb92 100644 --- a/.gitattributes +++ b/.gitattributes @@ -16002,6 +16002,7 @@ forge-m-base/src/forge/toolbox/FButton.java -text forge-m-base/src/forge/toolbox/FContainer.java -text forge-m-base/src/forge/toolbox/FDisplayObject.java -text forge-m-base/src/forge/toolbox/FLabel.java -text +forge-m-base/src/forge/toolbox/StartButton.java -text forge-m-base/src/forge/utils/Utils.java -text forge-m-desktop/.classpath -text forge-m-desktop/.project -text diff --git a/forge-m-base/src/forge/FScreen.java b/forge-m-base/src/forge/FScreen.java index 5cf5de72c05..597b93796bd 100644 --- a/forge-m-base/src/forge/FScreen.java +++ b/forge-m-base/src/forge/FScreen.java @@ -85,14 +85,14 @@ public abstract class FScreen extends FContainer { if (lblHeader != null) { lblHeader.setBounds(headerX, 0, headerWidth, headerHeight); - doLayout(0, headerHeight, width, height - headerHeight); + doLayout(headerHeight, width, height); } else { - doLayout(0, 0, width, height); + doLayout(0, width, height); } } - protected abstract void doLayout(float x, float y, float width, float height); + protected abstract void doLayout(float startY, float width, float height); @Override protected void drawBackground(Graphics g) { diff --git a/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java b/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java index 84bd5f9b72c..788f5500e93 100644 --- a/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java +++ b/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java @@ -1,14 +1,23 @@ package forge.screens.constructed; import forge.FScreen; +import forge.toolbox.StartButton; public class ConstructedScreen extends FScreen { + private final StartButton btnStart; public ConstructedScreen() { super(true, "Constructed", true); + btnStart = add(new StartButton() { + @Override + public void start() { + //TODO: Start match + } + }); } @Override - protected void doLayout(float x, float y, float width, float height) { + protected void doLayout(float startY, float width, float height) { + height = btnStart.updateLayout(width, height); //update height to exclude area taken up by StartButton } } diff --git a/forge-m-base/src/forge/screens/draft/DraftScreen.java b/forge-m-base/src/forge/screens/draft/DraftScreen.java index a0bfef9984f..f3fba57de91 100644 --- a/forge-m-base/src/forge/screens/draft/DraftScreen.java +++ b/forge-m-base/src/forge/screens/draft/DraftScreen.java @@ -9,6 +9,6 @@ public class DraftScreen extends FScreen { } @Override - protected void doLayout(float x, float y, float width, float height) { + protected void doLayout(float startY, float width, float height) { } } diff --git a/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java b/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java index f0d3d106609..7a480d030b3 100644 --- a/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java +++ b/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java @@ -9,6 +9,6 @@ public class GuantletScreen extends FScreen { } @Override - protected void doLayout(float x, float y, float width, float height) { + protected void doLayout(float startY, float width, float height) { } } diff --git a/forge-m-base/src/forge/screens/home/HomeScreen.java b/forge-m-base/src/forge/screens/home/HomeScreen.java index f8fa1ba8177..cba5211c3d2 100644 --- a/forge-m-base/src/forge/screens/home/HomeScreen.java +++ b/forge-m-base/src/forge/screens/home/HomeScreen.java @@ -72,9 +72,9 @@ public class HomeScreen extends FScreen { } @Override - protected void doLayout(float x, float y, float width, float height) { - x = width * INSETS_FACTOR; - y = width * LOGO_SIZE_FACTOR + 2 * x; //start below background logo + protected void doLayout(float startY, float width, float height) { + float x = width * INSETS_FACTOR; + float y = width * LOGO_SIZE_FACTOR + 2 * x; //start below background logo float dy = height * GAP_Y_FACTOR; float buttonWidth = width - 2 * x; float buttonHeight = (height - y - x) / buttons.size() - dy; diff --git a/forge-m-base/src/forge/screens/quest/QuestScreen.java b/forge-m-base/src/forge/screens/quest/QuestScreen.java index d57e306a301..311104707ab 100644 --- a/forge-m-base/src/forge/screens/quest/QuestScreen.java +++ b/forge-m-base/src/forge/screens/quest/QuestScreen.java @@ -9,6 +9,6 @@ public class QuestScreen extends FScreen { } @Override - protected void doLayout(float x, float y, float width, float height) { + protected void doLayout(float startY, float width, float height) { } } diff --git a/forge-m-base/src/forge/screens/sealed/SealedScreen.java b/forge-m-base/src/forge/screens/sealed/SealedScreen.java index 599adf627d9..e61a78d1607 100644 --- a/forge-m-base/src/forge/screens/sealed/SealedScreen.java +++ b/forge-m-base/src/forge/screens/sealed/SealedScreen.java @@ -9,6 +9,6 @@ public class SealedScreen extends FScreen { } @Override - protected void doLayout(float x, float y, float width, float height) { + protected void doLayout(float startY, float width, float height) { } } diff --git a/forge-m-base/src/forge/screens/settings/SettingsScreen.java b/forge-m-base/src/forge/screens/settings/SettingsScreen.java index 683a15724d6..6b3e7850398 100644 --- a/forge-m-base/src/forge/screens/settings/SettingsScreen.java +++ b/forge-m-base/src/forge/screens/settings/SettingsScreen.java @@ -9,6 +9,6 @@ public class SettingsScreen extends FScreen { } @Override - protected void doLayout(float x, float y, float width, float height) { + protected void doLayout(float startY, float width, float height) { } } diff --git a/forge-m-base/src/forge/toolbox/FButton.java b/forge-m-base/src/forge/toolbox/FButton.java index 1e10f94103c..6f57f843339 100644 --- a/forge-m-base/src/forge/toolbox/FButton.java +++ b/forge-m-base/src/forge/toolbox/FButton.java @@ -90,7 +90,7 @@ public class FButton extends FDisplayObject { @Override public final boolean touchDown(float x, float y) { - if (isToggled() || !isEnabled()) { return true; } + if (isToggled()) { return true; } imgL = FSkinImage.BTN_DOWN_LEFT; imgM = FSkinImage.BTN_DOWN_CENTER; imgR = FSkinImage.BTN_DOWN_RIGHT; @@ -99,7 +99,7 @@ public class FButton extends FDisplayObject { @Override public final boolean touchUp(float x, float y) { - if (isToggled() || !isEnabled()) { return true; } + if (isToggled()) { return true; } resetImg(); return true; } diff --git a/forge-m-base/src/forge/toolbox/StartButton.java b/forge-m-base/src/forge/toolbox/StartButton.java new file mode 100644 index 00000000000..4a0c10114c4 --- /dev/null +++ b/forge-m-base/src/forge/toolbox/StartButton.java @@ -0,0 +1,51 @@ +package forge.toolbox; + +import com.badlogic.gdx.math.Vector2; + +import forge.Forge.Graphics; +import forge.assets.FSkinImage; + +public abstract class StartButton extends FDisplayObject { + private boolean pressed; + + /** + * Instantiates a new FButton. + */ + public StartButton() { + } + + public abstract void start(); + + @Override + public final boolean touchDown(float x, float y) { + pressed = true; + return true; + } + + @Override + public final boolean touchUp(float x, float y) { + pressed = false; + return true; + } + + @Override + public final boolean tap(float x, float y, int count) { + if (count == 1) { + start(); + } + return true; + } + + public float updateLayout(float parentWidth, float parentHeight) { + Vector2 size = FSkinImage.BTN_START_UP.getSize(); + float padding = size.y * 0.1f; + setBounds((parentWidth - size.x) / 2, parentHeight - size.y - padding, size.x, size.y); + return parentHeight - size.y - 2 * padding; //indicate to caller how much space is taken up by StartButton + } + + @Override + public void draw(Graphics g) { + g.drawImage(pressed ? FSkinImage.BTN_START_DOWN : FSkinImage.BTN_START_UP, + 0, 0, getWidth(), getHeight()); + } +}