From 113997443d9952863fe2f6d356e9d605b64cac6f Mon Sep 17 00:00:00 2001 From: Grimm Date: Fri, 15 Apr 2022 06:03:50 +0200 Subject: [PATCH] adjusted style to work with android fixed android touch fixed save load issues between portrait mode --- forge-gui-android/pom.xml | 2 +- .../pointofintrest/PointOfInterestMap.java | 1 - .../src/forge/adventure/stage/GameHUD.java | 126 ++---------------- .../src/forge/adventure/stage/GameStage.java | 4 +- .../src/forge/adventure/util/RewardActor.java | 15 +-- .../src/forge/adventure/world/World.java | 2 +- .../adventure/Shandalar/skin/ui_skin.atlas | 80 ++++++----- .../res/adventure/Shandalar/skin/ui_skin.json | 18 +-- .../res/adventure/Shandalar/skin/ui_skin.png | Bin 17752 -> 24019 bytes .../Shandalar/ui/touchBackground.png | Bin 3957 -> 0 bytes .../res/adventure/Shandalar/ui/touchKnob.png | Bin 1971 -> 0 bytes .../res/adventure/Shandalar/world/shops.json | 2 +- 12 files changed, 78 insertions(+), 172 deletions(-) delete mode 100644 forge-gui/res/adventure/Shandalar/ui/touchBackground.png delete mode 100644 forge-gui/res/adventure/Shandalar/ui/touchKnob.png diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index 8c705a74fa7..0c11c5fd26a 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -6,7 +6,7 @@ jar -Xms1024m -Xmx1536m - 1.6.50.414 + 1.6.49.001 keystore alias storepass diff --git a/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestMap.java b/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestMap.java index 305d99eb528..06f4a45994c 100644 --- a/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestMap.java +++ b/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestMap.java @@ -77,7 +77,6 @@ public class PointOfInterestMap implements SaveFileContent { data.store("numberOfChunksY",numberOfChunksY); data.store("tileSize",tileSize); data.store("chunkSize",chunkSize); - data.store("numberOfChunksX",numberOfChunksX); for (int x = 0; x < numberOfChunksX; x++) { for (int y = 0; y < numberOfChunksY; y++) { diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index 47c0774b46e..6dd126935a3 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -4,19 +4,13 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.scenes.scene2d.Actor; -import com.badlogic.gdx.scenes.scene2d.EventListener; import com.badlogic.gdx.scenes.scene2d.Stage; 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.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.Touchpad; -import com.badlogic.gdx.scenes.scene2d.ui.Touchpad.TouchpadStyle; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import com.badlogic.gdx.scenes.scene2d.utils.Drawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; -import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Scaling; import com.badlogic.gdx.utils.viewport.ScalingViewport; import forge.Forge; @@ -24,6 +18,7 @@ import forge.adventure.player.AdventurePlayer; import forge.adventure.scene.Scene; import forge.adventure.scene.SceneType; import forge.adventure.util.Config; +import forge.adventure.util.Controls; import forge.adventure.util.Current; import forge.adventure.util.UIActor; import forge.adventure.world.WorldSave; @@ -42,20 +37,11 @@ public class GameHUD extends Stage { private final Image miniMapPlayer; private final Label lifePoints; private final Label money; - private Image miniMap, gamehud, mapborder, avatarborder, blank; + private final Image miniMap, gamehud, mapborder, avatarborder, blank; private TextButton deckActor, menuActor, statsActor, inventoryActor; - private boolean deckPressed = false; - private boolean menuPressed = false; - private boolean statsPressed = false; - private boolean inventoryPressed = false; private UIActor ui; private Touchpad touchpad; - private TouchpadStyle touchpadStyle; - private Skin touchpadSkin; - private Drawable touchBackground; - private Drawable touchKnob; float TOUCHPAD_SCALE = 70f; - float TOUCHPAD_KNOB_MIN_WIDTH = 40f; private GameHUD(GameStage gameStage) { super(new ScalingViewport(FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_STRETCH)?Scaling.stretch:Scaling.fit, Scene.getIntendedWidth(), Scene.getIntendedHeight()), gameStage.getBatch()); @@ -80,19 +66,9 @@ public class GameHUD extends Stage { miniMapPlayer = new Image(new Texture(Config.instance().getFile("ui/minimap_player.png"))); //create touchpad skin - touchpadSkin = new Skin(); - touchpadSkin.add("touchBackground", new Texture(Config.instance().getFile("ui/touchBackground.png"))); - touchpadSkin.add("touchKnob", new Texture(Config.instance().getFile("ui/touchKnob.png"))); - //set touchpad skin background and knob - touchBackground = touchpadSkin.getDrawable("touchBackground"); - touchKnob = touchpadSkin.getDrawable("touchKnob"); - //set touchpad style - touchpadStyle = new TouchpadStyle(touchBackground, touchKnob); - //set touchpad knob size - touchpadStyle.knob.setMinWidth(TOUCHPAD_KNOB_MIN_WIDTH); - touchpadStyle.knob.setMinHeight(TOUCHPAD_KNOB_MIN_WIDTH); + //create touchpad - touchpad = new Touchpad(10, touchpadStyle); + touchpad = new Touchpad(10, Controls.GetSkin()); touchpad.setBounds(15, 15, TOUCHPAD_SCALE, TOUCHPAD_SCALE); touchpad.addListener(new ChangeListener() { @Override @@ -156,15 +132,6 @@ public class GameHUD extends Stage { touchpad.setVisible(false); MapStage.getInstance().GetPlayer().setMovementDirection(Vector2.Zero); WorldStage.getInstance().GetPlayer().setMovementDirection(Vector2.Zero); - //simulate button - checkButtonState(deckActor, pointer); - checkButtonState(menuActor, pointer); - checkButtonState(statsActor, pointer); - checkButtonState(inventoryActor, pointer); - deckPressed = false; - menuPressed = false; - statsPressed = false; - inventoryPressed = false; return super.touchUp(screenX, screenY, pointer, button); } @@ -206,53 +173,6 @@ public class GameHUD extends Stage { float x=(c.x-miniMap.getX())/miniMap.getWidth(); float y=(c.y-miniMap.getY())/miniMap.getHeight(); - float deckX = deckActor.getX(); - float deckY = deckActor.getY(); - float deckR = deckActor.getRight(); - float deckT = deckActor.getTop(); - float deckOriginX = deckActor.getOriginX(); - //deck button bounds - if (c.x>=deckX&&c.x<=deckR&&c.y>=deckY&&c.y<=deckT) { - if (pointer < 1) - deckPressed = true; - return true; - } - - float inventoryX = inventoryActor.getX(); - float inventoryY = inventoryActor.getY(); - float inventoryR = inventoryActor.getRight(); - float inventoryT = inventoryActor.getTop(); - float inventoryOriginX = inventoryActor.getOriginX(); - //inventory button bounds - if (c.x>=inventoryX&&c.x<=inventoryR&&c.y>=inventoryY&&c.y<=inventoryT) { - if (pointer < 1) - inventoryPressed = true; - return true; - } - - float menuX = menuActor.getX(); - float menuY = menuActor.getY(); - float menuR = menuActor.getRight(); - float menuT = menuActor.getTop(); - float menuOriginX = menuActor.getOriginX(); - //menu button bounds - if (c.x>=menuX&&c.x<=menuR&&c.y>=menuY&&c.y<=menuT) { - if (pointer < 1) - menuPressed = true; - return true; - } - - float statsX = statsActor.getX(); - float statsY = statsActor.getY(); - float statsR = statsActor.getRight(); - float statsT = statsActor.getTop(); - float statsOriginX = statsActor.getOriginX(); - //stats button bounds - if (c.x>=statsX&&c.x<=statsR&&c.y>=statsY&&c.y<=statsT) { - if (pointer < 1) - statsPressed = true; - return true; - } float uiX = gamehud.getX(); float uiY = gamehud.getY(); @@ -284,38 +204,17 @@ public class GameHUD extends Stage { //auto follow touchpad if (GuiBase.isAndroid()) { if (!(touch.x>=mMapX&&touch.x<=mMapR&&touch.y>=mMapY&&touch.y<=mMapT) // not inside map bounds - && !(touch.x>=uiX&&touch.x<=uiRight&&touch.y>=uiY&&touch.y<=uiTop) //not inside gamehud bounds - && (touch.x>=displayX&&touch.x<=displayR&&touch.y>=displayY&&touch.y<=displayT) //inside display bounds - && pointer < 1) { //not more than 1 pointer - touchpad.setBounds(touch.x-TOUCHPAD_SCALE/2, touch.y-TOUCHPAD_SCALE/2, TOUCHPAD_SCALE, TOUCHPAD_SCALE); - touchpad.setVisible(true); - touchpad.setResetOnTouchUp(true); + && !(touch.x>=uiX&&touch.x<=uiRight&&touch.y>=uiY&&touch.y<=uiTop) //not inside gamehud bounds + && (touch.x>=displayX&&touch.x<=displayR&&touch.y>=displayY&&touch.y<=displayT) //inside display bounds + && pointer < 1) { //not more than 1 pointer + touchpad.setBounds(touch.x-TOUCHPAD_SCALE/2, touch.y-TOUCHPAD_SCALE/2, TOUCHPAD_SCALE, TOUCHPAD_SCALE); + touchpad.setVisible(true); + touchpad.setResetOnTouchUp(true); return super.touchDown(screenX, screenY, pointer, button); } } return super.touchDown(screenX, screenY, pointer, button); } - void checkButtonState(Actor actor, int pointer) { - Array listeners = actor.getListeners(); - for(int i=0;i listeners = actor.getListeners(); - for(int i=0;i 1f) - camera.zoom = 1f; + if (camera.zoom > 1.5f) + camera.zoom = 1.5f; return super.scrolled(amountX, amountY); } diff --git a/forge-gui-mobile/src/forge/adventure/util/RewardActor.java b/forge-gui-mobile/src/forge/adventure/util/RewardActor.java index 3578fd8ec84..6fcd471ae74 100644 --- a/forge-gui-mobile/src/forge/adventure/util/RewardActor.java +++ b/forge-gui-mobile/src/forge/adventure/util/RewardActor.java @@ -185,7 +185,8 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb if(Forge.isLandscapeMode()) drawable.setMinSize((Scene.getIntendedHeight() / RewardScene.CARD_WIDTH_TO_HEIGHT) * 0.95f, Scene.getIntendedHeight() * 0.95f); else - drawable.setMinSize(Scene.getIntendedWidth() * 0.95f, Scene.getIntendedWidth()* RewardScene.CARD_WIDTH_TO_HEIGHT * 0.95f); toolTipImage = new Image(drawable); + drawable.setMinSize(Scene.getIntendedWidth() * 0.95f, Scene.getIntendedWidth()* RewardScene.CARD_WIDTH_TO_HEIGHT * 0.95f); + toolTipImage = new Image(drawable); tooltip = new Tooltip(toolTipImage); holdTooltip = new HoldTooltip(new Image(drawable)); tooltip.setInstant(true); @@ -444,15 +445,9 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb public boolean longPress(Actor actor, float x, float y) { //Vector2 point = actor.localToStageCoordinates(tmp.set(x, y)); tooltip_actor.setX(actor.getRight()); - if (tooltip_actor.getX() + tooltip_actor.getWidth() > 480) - tooltip_actor.setX(actor.getX() - tooltip_actor.getWidth()); - tooltip_actor.setY(270 / 2 - tooltip_actor.getHeight() / 2); - if (!Forge.isLandscapeMode()) { - float h = height * 0.65f; - tooltip_actor.setX(480/2 - tooltip_actor.getWidth() /2); - tooltip_actor.setHeight(h); - tooltip_actor.setY(270/2 - h/2); - } + if (tooltip_actor.getX() + tooltip_actor.getWidth() > Scene.getIntendedWidth()) + tooltip_actor.setX(Math.max(0,actor.getX() - tooltip_actor.getWidth())); + tooltip_actor.setY(Scene.getIntendedHeight() / 2 - tooltip_actor.getHeight() / 2); //tooltip_actor.setX(480/2 - tooltip_actor.getWidth()/2); //480 hud width //tooltip_actor.setY(270/2-tooltip_actor.getHeight()/2); //270 hud height actor.getStage().addActor(tooltip_actor); diff --git a/forge-gui-mobile/src/forge/adventure/world/World.java b/forge-gui-mobile/src/forge/adventure/world/World.java index 248efe3d512..09660e81d7a 100644 --- a/forge-gui-mobile/src/forge/adventure/world/World.java +++ b/forge-gui-mobile/src/forge/adventure/world/World.java @@ -553,7 +553,7 @@ public class World implements Disposable, SaveFileContent { } public int getChunkSize() { - return Scene.getIntendedWidth() / data.tileSize; + return (Scene.getIntendedWidth()>Scene.getIntendedHeight()?Scene.getIntendedWidth():Scene.getIntendedHeight()) / data.tileSize; } public void dispose() { diff --git a/forge-gui/res/adventure/Shandalar/skin/ui_skin.atlas b/forge-gui/res/adventure/Shandalar/skin/ui_skin.atlas index b6b50ef0d5f..1eca92c5dcb 100644 --- a/forge-gui/res/adventure/Shandalar/skin/ui_skin.atlas +++ b/forge-gui/res/adventure/Shandalar/skin/ui_skin.atlas @@ -6,7 +6,7 @@ filter: Nearest, Nearest repeat: none BKey_3_14 rotate: false - xy: 51, 321 + xy: 253, 371 size: 32, 16 split: 6, 6, 9, 6 pad: 0, 0, 0, 0 @@ -15,7 +15,7 @@ BKey_3_14 index: -1 BKey_3_9 rotate: false - xy: 1, 271 + xy: 203, 321 size: 32, 16 split: 5, 5, 6, 7 pad: 0, 0, 0, 0 @@ -52,7 +52,7 @@ MiKrollFantasy(3) index: -1 9patch4 rotate: false - xy: 51, 339 + xy: 75, 137 size: 48, 48 split: 7, 7, 7, 7 pad: 0, 0, 0, 0 @@ -61,63 +61,63 @@ MiKrollFantasy(3) index: -1 down rotate: false - xy: 1, 168 + xy: 97, 119 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 down_down rotate: false - xy: 1, 150 + xy: 125, 147 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 left rotate: false - xy: 1, 132 + xy: 147, 169 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 left_down rotate: false - xy: 1, 114 + xy: 203, 281 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 right rotate: false - xy: 1, 96 + xy: 275, 353 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 right_down rotate: false - xy: 1, 78 + xy: 305, 371 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 up rotate: false - xy: 1, 60 + xy: 1, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 up_down rotate: false - xy: 1, 42 + xy: 51, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cursor rotate: false - xy: 125, 384 + xy: 25, 58 size: 4, 3 split: 1, 1, 1, 1 pad: 0, 0, 0, 0 @@ -126,28 +126,28 @@ cursor index: -1 item_frame rotate: false - xy: 51, 299 + xy: 75, 115 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 item_frame_hover rotate: false - xy: 101, 359 + xy: 125, 165 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 item_frame_selected rotate: false - xy: 1, 244 + xy: 203, 299 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 item_frame_selected_hover rotate: false - xy: 1, 222 + xy: 253, 349 size: 20, 20 orig: 20, 20 offset: 0, 0 @@ -161,7 +161,7 @@ select index: -1 bar rotate: false - xy: 101, 381 + xy: 1, 55 size: 22, 6 split: 2, 2, 2, 2 pad: 0, 0, 0, 0 @@ -170,7 +170,7 @@ bar index: -1 barcontent rotate: false - xy: 1, 266 + xy: 51, 108 size: 20, 3 split: 0, 0, 0, 0 orig: 20, 3 @@ -178,14 +178,14 @@ barcontent index: -1 check rotate: false - xy: 73, 311 + xy: 115, 127 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 map rotate: false - xy: 1, 289 + xy: 1, 63 size: 48, 48 split: 17, 16, 13, 11 pad: 0, 0, 0, 0 @@ -194,7 +194,7 @@ map index: -1 pressed rotate: false - xy: 23, 253 + xy: 253, 331 size: 14, 16 split: 4, 4, 6, 5 pad: 0, 0, 0, 0 @@ -203,7 +203,7 @@ pressed index: -1 pressedMap rotate: false - xy: 1, 204 + xy: 1, 37 size: 16, 16 split: 6, 6, 4, 3 pad: 0, 0, 0, 0 @@ -212,7 +212,7 @@ pressedMap index: -1 pressedround rotate: false - xy: 23, 236 + xy: 293, 354 size: 12, 15 split: 4, 4, 7, 5 pad: 0, 0, 0, 0 @@ -221,7 +221,7 @@ pressedround index: -1 scroll rotate: false - xy: 39, 254 + xy: 1, 2 size: 6, 15 split: 2, 2, 3, 4 pad: 0, 0, 0, 0 @@ -230,7 +230,7 @@ scroll index: -1 scroll2 rotate: false - xy: 85, 330 + xy: 225, 312 size: 14, 7 split: 3, 3, 2, 3 pad: 0, 0, 0, 0 @@ -239,7 +239,7 @@ scroll2 index: -1 thinwindow rotate: false - xy: 1, 186 + xy: 51, 90 size: 16, 16 split: 2, 2, 2, 2 pad: 0, 0, 0, 0 @@ -248,14 +248,14 @@ thinwindow index: -1 uncheck rotate: false - xy: 101, 331 + xy: 125, 137 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unpressed rotate: false - xy: 35, 271 + xy: 237, 321 size: 14, 16 split: 4, 4, 4, 7 pad: 0, 0, 0, 0 @@ -264,7 +264,7 @@ unpressed index: -1 unpressed-disable rotate: false - xy: 1, 24 + xy: 203, 263 size: 14, 16 split: 3, 3, 3, 6 pad: 0, 0, 0, 0 @@ -273,7 +273,7 @@ unpressed-disable index: -1 unpressed-hover rotate: false - xy: 51, 281 + xy: 165, 169 size: 14, 16 split: 3, 3, 3, 6 pad: 0, 0, 0, 0 @@ -282,7 +282,7 @@ unpressed-hover index: -1 unpressedMap rotate: false - xy: 101, 341 + xy: 287, 371 size: 16, 16 split: 6, 6, 3, 4 pad: 0, 0, 0, 0 @@ -291,7 +291,7 @@ unpressedMap index: -1 unpressedround rotate: false - xy: 1, 7 + xy: 323, 372 size: 12, 15 split: 4, 4, 5, 7 pad: 0, 0, 0, 0 @@ -300,10 +300,24 @@ unpressedround index: -1 windowMain rotate: false - xy: 1, 339 + xy: 203, 339 size: 48, 48 split: 6, 6, 6, 6 pad: 0, 0, 0, 0 orig: 48, 48 offset: 0, 0 index: -1 +touchBackground + rotate: false + xy: 1, 187 + size: 200, 200 + orig: 200, 200 + offset: 0, 0 + index: -1 +touchKnob + rotate: false + xy: 1, 113 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 diff --git a/forge-gui/res/adventure/Shandalar/skin/ui_skin.json b/forge-gui/res/adventure/Shandalar/skin/ui_skin.json index 3f7379d9af9..2e1ae95f183 100644 --- a/forge-gui/res/adventure/Shandalar/skin/ui_skin.json +++ b/forge-gui/res/adventure/Shandalar/skin/ui_skin.json @@ -19,6 +19,13 @@ "a": 1 } }, +"com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable": { + "touchKnob": { + "region": "touchKnob", + "minWidth": 40, + "minHeight": 40 + } +}, "com.ray3k.tenpatch.TenPatchDrawable": { "paper10Patch": { "region": "map", @@ -389,16 +396,11 @@ "cursor": "cursor", "selection": "select" } -}, -"com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle": { - "default": { - "label": "default" - } -}, +}, "com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle": { "default": { - "background": "thinwindow", - "knob": "unpressed-hover" + "background": "touchBackground", + "knob": "touchKnob" } }, "com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle": { diff --git a/forge-gui/res/adventure/Shandalar/skin/ui_skin.png b/forge-gui/res/adventure/Shandalar/skin/ui_skin.png index 2eba1c1d716761bf41f528a15f5dac7587ee6594..d4c2b26721814686da602b12d775efb8008d0b50 100644 GIT binary patch literal 24019 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 literal 17752 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 diff --git a/forge-gui/res/adventure/Shandalar/world/shops.json b/forge-gui/res/adventure/Shandalar/world/shops.json index 31f72a1db37..772c7c0f7bd 100644 --- a/forge-gui/res/adventure/Shandalar/world/shops.json +++ b/forge-gui/res/adventure/Shandalar/world/shops.json @@ -184,7 +184,7 @@ "sprite":"AzoriusShop", "rewards": [ { - "count":8, + "count":4, "colors": ["white","blue"] }, {