diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java index e8d15a2de7776ae7ab3d3ff34c24705fc9db46a2..ae0fe53297c2cbc93748f66f58612ad1c17f6969 100644 --- a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java +++ b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java @@ -1,6 +1,5 @@ package cz.nic.tablexia.screen.gamemenu.pages; -import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Batch; @@ -11,7 +10,7 @@ import com.badlogic.gdx.scenes.scene2d.actions.AlphaAction; import com.badlogic.gdx.scenes.scene2d.actions.MoveToAction; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; +import com.badlogic.gdx.scenes.scene2d.ui.Stack; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import cz.nic.tablexia.TablexiaSettings; @@ -28,6 +27,7 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { private GameDefinition game; private float diffEasyX, diffMediumX, diffHardX; + private Image diffEasy, diffMedium, diffHard; private float scrollOffset = TablexiaSettings.getDefaultScreenWidth(); // hack to keep paralax layers out of picture before scrolled for first time @@ -114,7 +114,7 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { Texture diffBar = getScreen().getTexture(GameMenuAssets.DIFF_BAR); Image diffBarImage = new Image(diffBar); - int diffBarHeight = (int) (screen.getStage().getHeight() * 0.05); + int diffBarHeight = (int) (screen.getStage().getHeight() * 0.04f); int diffBarWidth = (int) (diffBarHeight * ((float) diffBar.getWidth() / (float) diffBar.getHeight())); int diffBarX = (int) screen.getStage().getWidth() / 2 - diffBarWidth / 2; int diffBarY = (int) (screen.getStage().getHeight() * 0.1 - diffBarHeight); @@ -125,23 +125,29 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { // Difficulty button - final Texture diff = getScreen().getTexture(GameMenuAssets.DIFF_THUMB_MEDIUM); - final Image diffButton = new Image(diff); - float diffY = 0; - float diffHeight = screen.getStage().getHeight() * 0.15f; + final Texture diff = getScreen().getTexture(GameMenuAssets.DIFF_THUMB_EASY); + + + float diffY = screen.getStage().getHeight() * 0.02f; + float diffHeight = screen.getStage().getHeight() * 0.12f; float diffWidth = diffHeight * ((float) diff.getWidth() / (float) diff.getHeight()); diffMediumX = (screen.getStage().getWidth() / 2) - (diffWidth / 2) + (int) (diffWidth * 0.1f); diffEasyX = diffMediumX - diffBarWidth / 2; diffHardX = diffMediumX + diffBarWidth / 2; - float diffX = diffEasyX; - diffButton.setSize(diffWidth, diffHeight); - diffButton.setPosition(diffX, diffY); - addActor(diffButton); + final Stack diffStack = new Stack(); + + diffStack.addActor(diffEasy = new Image(diff)); + diffStack.addActor(diffMedium = new Image(getScreen().getTexture(GameMenuAssets.DIFF_THUMB_MEDIUM))); + diffStack.addActor(diffHard = new Image(getScreen().getTexture(GameMenuAssets.DIFF_THUMB_HARD))); + float diffX = diffEasyX; + diffStack.setSize(diffWidth, diffHeight); + diffStack.setPosition(diffX, diffY); + addActor(diffStack); - diffButton.addListener(new InputListener() { + diffStack.addListener(new InputListener() { float lastX; @Override @@ -155,9 +161,22 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { @Override public void touchDragged(InputEvent event, float x, float y, int pointer) { super.touchDragged(event, x, y, pointer); - float bx = diffButton.getX() + (x - lastX); + float bx = diffStack.getX() + (x - lastX); if (bx >= diffEasyX && bx <= diffHardX) { - diffButton.setPosition(bx, diffButton.getY()); + diffStack.setPosition(bx, diffStack.getY()); + } + if (bx < diffMediumX) { + if ((diffEasyX + ((diffMediumX - diffEasyX) / 2)) > bx) { + showDifficulty(diffEasy); + } else { + showDifficulty(diffMedium); + } + } else { + if ((diffMediumX + ((diffHardX - diffMediumX) / 2)) > bx) { + showDifficulty(diffMedium); + } else { + showDifficulty(diffHard); + } } event.stop(); } @@ -165,27 +184,34 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); - float bx = diffButton.getX() + (x - lastX); + float bx = diffStack.getX() + (x - lastX); MoveToAction ma = new MoveToAction(); if (bx < diffMediumX) { if ((diffEasyX + ((diffMediumX - diffEasyX) / 2)) > bx) { - ma.setPosition(diffEasyX, diffButton.getY()); + ma.setPosition(diffEasyX, diffStack.getY()); } else { - ma.setPosition(diffMediumX, diffButton.getY()); + ma.setPosition(diffMediumX, diffStack.getY()); } } else { if ((diffMediumX + ((diffHardX - diffMediumX) / 2)) > bx) { - ma.setPosition(diffMediumX, diffButton.getY()); + ma.setPosition(diffMediumX, diffStack.getY()); } else { - ma.setPosition(diffHardX, diffButton.getY()); + ma.setPosition(diffHardX, diffStack.getY()); } } - diffButton.addAction(ma); + diffStack.addAction(ma); event.stop(); } }); } + private void showDifficulty(Image diff) { + diffEasy.setVisible(false); + diffMedium.setVisible(false); + diffHard.setVisible(false); + diff.setVisible(true); + } + @Override public void draw(Batch batch, float parentAlpha) { // Paralax layers