From 2c2b5127429a9be89bddf2f348be0d99a3914b90 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Tue, 18 Jul 2017 10:32:32 +0200 Subject: [PATCH] Add a button to toggle between effects and themes shop --- android/assets/ui/x0.75/effects.png | Bin 0 -> 1220 bytes android/assets/ui/x1.0/effects.png | Bin 0 -> 1675 bytes android/assets/ui/x1.25/effects.png | Bin 0 -> 2171 bytes android/assets/ui/x1.5/effects.png | Bin 0 -> 2642 bytes android/assets/ui/x2.0/effects.png | Bin 0 -> 3728 bytes android/assets/ui/x4.0/effects.png | Bin 0 -> 9474 bytes .../github/lonamiwebs/klooni/SkinLoader.java | 2 +- .../klooni/screens/CustomizeScreen.java | 148 +++++++++++------- original-resources/buttons.svg | 85 +++++++--- original-resources/gen-ui-png.py | 1 + 10 files changed, 153 insertions(+), 83 deletions(-) create mode 100644 android/assets/ui/x0.75/effects.png create mode 100644 android/assets/ui/x1.0/effects.png create mode 100644 android/assets/ui/x1.25/effects.png create mode 100644 android/assets/ui/x1.5/effects.png create mode 100644 android/assets/ui/x2.0/effects.png create mode 100644 android/assets/ui/x4.0/effects.png diff --git a/android/assets/ui/x0.75/effects.png b/android/assets/ui/x0.75/effects.png new file mode 100644 index 0000000000000000000000000000000000000000..710b8f7669ff7532abbd7b5c591b849c08327044 GIT binary patch literal 1220 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 VU+(sxK)L_`002ovPDHLkV1hqJMV9~o literal 0 HcmV?d00001 diff --git a/android/assets/ui/x1.25/effects.png b/android/assets/ui/x1.25/effects.png new file mode 100644 index 0000000000000000000000000000000000000000..adf4350d2eda66b1514f90e4d38dabc062e81f4d GIT binary patch literal 2171 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 ASpWb4 literal 0 HcmV?d00001 diff --git a/android/assets/ui/x2.0/effects.png b/android/assets/ui/x2.0/effects.png new file mode 100644 index 0000000000000000000000000000000000000000..76e5b2cebc9909db9d2d3f99778207fbd1c9f9c0 GIT binary patch literal 3728 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 R`#01Cz)Y?izcoU{{|^NWDOCUf literal 0 HcmV?d00001 diff --git a/core/src/io/github/lonamiwebs/klooni/SkinLoader.java b/core/src/io/github/lonamiwebs/klooni/SkinLoader.java index 7c07891..e8fcd7f 100644 --- a/core/src/io/github/lonamiwebs/klooni/SkinLoader.java +++ b/core/src/io/github/lonamiwebs/klooni/SkinLoader.java @@ -28,7 +28,7 @@ public class SkinLoader { private static String[] ids = { "play", "play_saved", "star", "stopwatch", "palette", "home", "replay", "share", "sound_on", "sound_off", "snap_on", "snap_off", "issues", "credits", - "web", "back", "ok", "cancel", "power_off" + "web", "back", "ok", "cancel", "power_off", "effects" }; private static float bestMultiplier; diff --git a/core/src/io/github/lonamiwebs/klooni/screens/CustomizeScreen.java b/core/src/io/github/lonamiwebs/klooni/screens/CustomizeScreen.java index fb9b6e2..22e1db0 100644 --- a/core/src/io/github/lonamiwebs/klooni/screens/CustomizeScreen.java +++ b/core/src/io/github/lonamiwebs/klooni/screens/CustomizeScreen.java @@ -49,6 +49,14 @@ class CustomizeScreen implements Screen { private final Screen lastScreen; + private final Table table; + private final SoftButton toggleShopButton; + private final VerticalGroup shopGroup; // Showing available themes or effects + private final ScrollPane shopScroll; + final MoneyBuyBand buyBand; + + private boolean showingEffectsShop; + private float themeDragStartX, themeDragStartY; //endregion @@ -64,13 +72,11 @@ class CustomizeScreen implements Screen { //region Constructor CustomizeScreen(Klooni game, final Screen lastScreen) { - final GameLayout layout = new GameLayout(); - this.game = game; this.lastScreen = lastScreen; stage = new Stage(); - Table table = new Table(); + table = new Table(); table.setFillParent(true); stage.addActor(table); @@ -101,6 +107,22 @@ class CustomizeScreen implements Screen { }); optionsGroup.addActor(soundButton); + // Toggle the current shop (themes or effects) + toggleShopButton = new SoftButton(2, "effects_texture"); + toggleShopButton.addListener(new ChangeListener() { + @Override + public void changed(ChangeEvent event, Actor actor) { + showingEffectsShop = !showingEffectsShop; + if (showingEffectsShop) { + toggleShopButton.updateImage("palette_texture"); + } else { + toggleShopButton.updateImage("effects_texture"); + } + loadShop(); + } + }); + optionsGroup.addActor(toggleShopButton); + // Snap to grid on/off final SoftButton snapButton = new SoftButton( 2, Klooni.shouldSnapToGrid() ? "snap_on_texture" : "snap_off_texture"); @@ -139,66 +161,18 @@ class CustomizeScreen implements Screen { table.add(new ScrollPane(optionsGroup)) .pad(20, 4, 12, 4).height(backButton.getHeight()); - // Load all the available themes - final MoneyBuyBand buyBand = new MoneyBuyBand(game); - + buyBand = new MoneyBuyBand(game); table.row(); - final VerticalGroup themesGroup = new VerticalGroup(); - for (Theme theme : Theme.getThemes()) { - final ThemeCard card = new ThemeCard(game, layout, theme); - card.addListener(new InputListener() { - @Override - public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { - themeDragStartX = x; - themeDragStartY = y; - return true; - } - // We could actually rely on touchDragged not being called, - // but perhaps it would be hard for some people not to move - // their fingers even the slightest bit, so we use a custom - // drag limit - - @Override - public void touchUp(InputEvent event, float x, float y, int pointer, int button) { - x -= themeDragStartX; - y -= themeDragStartY; - float distSq = x * x + y * y; - if (distSq < DRAG_LIMIT_SQ) { - if (Klooni.isThemeBought(card.theme)) - card.use(); - else - buyBand.askBuy(card); - - for (Actor a : themesGroup.getChildren()) { - ThemeCard c = (ThemeCard)a; - c.usedThemeUpdated(); - } - } - } - }); - themesGroup.addActor(card); - } - - final ScrollPane themesScroll = new ScrollPane(themesGroup); - table.add(themesScroll).expand().fill(); + // Load all the available themes as the default "shop" + shopGroup = new VerticalGroup(); + shopScroll = new ScrollPane(shopGroup); + table.add(shopScroll).expand().fill(); + loadShop(); // Show the current money row table.row(); table.add(buyBand).expandX().fillX(); - - // Scroll to the currently selected theme - table.layout(); - for (Actor a : themesGroup.getChildren()) { - ThemeCard c = (ThemeCard)a; - if (c.isUsed()) { - themesScroll.scrollTo( - c.getX(), c.getY() + c.getHeight(), - c.getWidth(), c.getHeight()); - break; - } - c.usedThemeUpdated(); - } } //endregion @@ -209,6 +183,66 @@ class CustomizeScreen implements Screen { CustomizeScreen.this.game.transitionTo(lastScreen); } + private void loadShop() { + final GameLayout layout = new GameLayout(); + shopGroup.clear(); + + if (showingEffectsShop) { + // TODO Show the effects shop + } else { + // Showing themes shop otherwise + for (Theme theme : Theme.getThemes()) { + final ThemeCard card = new ThemeCard(game, layout, theme); + card.addListener(new InputListener() { + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + themeDragStartX = x; + themeDragStartY = y; + return true; + } + + // We could actually rely on touchDragged not being called, + // but perhaps it would be hard for some people not to move + // their fingers even the slightest bit, so we use a custom + // drag limit + + @Override + public void touchUp(InputEvent event, float x, float y, int pointer, int button) { + x -= themeDragStartX; + y -= themeDragStartY; + float distSq = x * x + y * y; + if (distSq < DRAG_LIMIT_SQ) { + if (Klooni.isThemeBought(card.theme)) + card.use(); + else + buyBand.askBuy(card); + + for (Actor a : shopGroup.getChildren()) { + ThemeCard c = (ThemeCard)a; + c.usedThemeUpdated(); + } + } + } + }); + + shopGroup.addActor(card); + + // Scroll to the currently selected theme + table.layout(); + for (Actor a : shopGroup.getChildren()) { + ThemeCard c = (ThemeCard)a; + if (c.isUsed()) { + shopScroll.scrollTo( + c.getX(), c.getY() + c.getHeight(), + c.getWidth(), c.getHeight()); + break; + } + c.usedThemeUpdated(); + } + } + } + } + //endregion //region Public methods diff --git a/original-resources/buttons.svg b/original-resources/buttons.svg index b1d3c29..3bb5be3 100644 --- a/original-resources/buttons.svg +++ b/original-resources/buttons.svg @@ -152,9 +152,9 @@ borderopacity="1" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="-18.655028" - inkscape:cy="163.7511" + inkscape:zoom="0.5" + inkscape:cx="-85.026722" + inkscape:cy="8.3628693" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" @@ -163,7 +163,7 @@ inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" - showguides="false" + showguides="true" inkscape:guide-bbox="true" units="px"> + transform="matrix(3.0000588,0,0,3.0000588,0,-2314.7845)"> buttons cells - measures + transform="matrix(3.0000588,0,0,3.0000588,-107.02664,-1835.9396)"> + transform="translate(-46.651447,-190.88537)"> + id="drop" + transform="translate(0,-190.88537)"> + + + + + + + + + + + + + + + diff --git a/original-resources/gen-ui-png.py b/original-resources/gen-ui-png.py index 106feb9..cd66144 100755 --- a/original-resources/gen-ui-png.py +++ b/original-resources/gen-ui-png.py @@ -19,6 +19,7 @@ ids = [ 'cancel', 'credits', 'cup', + 'effects', 'home', 'issues', 'ok',