diff --git a/forge-gui-mobile/src/forge/adventure/data/HeroListData.java b/forge-gui-mobile/src/forge/adventure/data/HeroListData.java index 1452350525f..ea658f269a3 100644 --- a/forge-gui-mobile/src/forge/adventure/data/HeroListData.java +++ b/forge-gui-mobile/src/forge/adventure/data/HeroListData.java @@ -18,29 +18,29 @@ import forge.adventure.util.Paths; */ public class HeroListData { static private HeroListData instance; - public HeroData[] heroes; - public String avatar; + private HeroData[] heroes; + private String avatar; private TextureAtlas avatarAtlas; private final ObjectMap> avatarSprites = new ObjectMap<>(); - static private HeroListData read() { - Json json = new Json(); - FileHandle handle = Config.instance().getFile(Paths.HEROES); - if (handle.exists()) { - instance = json.fromJson(HeroListData.class, handle); - instance.avatarAtlas = Config.instance().getAtlas(instance.avatar); - - /* - instance.avatarSprites.getTextures().first().setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest); - */ + static public HeroListData instance() { + if (instance == null) { + Json json = new Json(); + FileHandle handle = Config.instance().getFile(Paths.HEROES); + if (handle.exists()) { + instance = json.fromJson(HeroListData.class, handle); + instance.avatarAtlas = Config.instance().getAtlas(instance.avatar); + // leaving here as reference since PixelArt images use Nearest without MipMaps. By default it shouldn't have any filters + /*instance.avatarSprites.getTextures().first().setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);*/ + } else { + throw new RuntimeException("Path not found: " + handle.path()); + } } return instance; } - static public String getHero(int raceIndex, boolean female) { - if (instance == null) - instance = read(); - HeroData data = instance.heroes[raceIndex]; + public String getHero(int raceIndex, boolean female) { + HeroData data = instance().heroes[raceIndex]; if (female) return data.female; @@ -48,14 +48,12 @@ public class HeroListData { } - public static TextureRegion getAvatar(int heroRace, boolean isFemale, int avatarIndex) { - if (instance == null) - instance = read(); - HeroData data = instance.heroes[heroRace]; - Array sprites = instance.avatarSprites.get(isFemale ? data.femaleAvatar : data.maleAvatar); + public TextureRegion getAvatar(int heroRace, boolean isFemale, int avatarIndex) { + HeroData data = instance().heroes[heroRace]; + Array sprites = instance().avatarSprites.get(isFemale ? data.femaleAvatar : data.maleAvatar); if (sprites == null) { - sprites = instance.avatarAtlas.createSprites(isFemale ? data.femaleAvatar : data.maleAvatar); - instance.avatarSprites.put(isFemale ? data.femaleAvatar : data.maleAvatar, sprites); + sprites = instance().avatarAtlas.createSprites(isFemale ? data.femaleAvatar : data.maleAvatar); + instance().avatarSprites.put(isFemale ? data.femaleAvatar : data.maleAvatar, sprites); } avatarIndex %= sprites.size; if (avatarIndex < 0) { @@ -64,11 +62,9 @@ public class HeroListData { return sprites.get(avatarIndex); } - public static Array getRaces() { - if (instance == null) - instance = read(); + public Array getRaces() { Array ret = new Array<>(); - for (HeroData hero : instance.heroes) { + for (HeroData hero : instance().heroes) { ret.add(Forge.getLocalizer().getMessageorUseDefault("lbl"+hero.name, hero.name)); } return ret; diff --git a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java index a1a5b56e3ef..aa2646d4faf 100644 --- a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java +++ b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java @@ -588,18 +588,18 @@ public class AdventurePlayer implements Serializable, SaveFileContent { } public String spriteName() { - return HeroListData.getHero(heroRace, isFemale); + return HeroListData.instance().getHero(heroRace, isFemale); } public FileHandle sprite() { - return Config.instance().getFile(HeroListData.getHero(heroRace, isFemale)); + return Config.instance().getFile(HeroListData.instance().getHero(heroRace, isFemale)); } public TextureRegion avatar() { - return HeroListData.getAvatar(heroRace, isFemale, avatarIndex); + return HeroListData.instance().getAvatar(heroRace, isFemale, avatarIndex); } public String raceName() { - return HeroListData.getRaces().get(Current.player().heroRace); + return HeroListData.instance().getRaces().get(Current.player().heroRace); } public GameStage getCurrentGameStage() { diff --git a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java index 165c575f7cf..53ca01d6364 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java @@ -169,7 +169,7 @@ public class NewGameScene extends MenuScene { } }); race.addListener(event -> NewGameScene.this.updateAvatar()); - race.setTextList(HeroListData.getRaces()); + race.setTextList(HeroListData.instance().getRaces()); difficulty = ui.findActor("difficulty"); difficultyHelp = ui.findActor("difficultyHelp"); @@ -294,7 +294,7 @@ public class NewGameScene extends MenuScene { } private boolean updateAvatar() { - avatarImage.setDrawable(new TextureRegionDrawable(HeroListData.getAvatar(race.getCurrentIndex(), gender.getCurrentIndex() != 0, avatarIndex))); + avatarImage.setDrawable(new TextureRegionDrawable(HeroListData.instance().getAvatar(race.getCurrentIndex(), gender.getCurrentIndex() != 0, avatarIndex))); return false; } diff --git a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java index 65d787394ad..9d7fa4d7fd5 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java +++ b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java @@ -144,9 +144,7 @@ public class ConsoleCommandInterpreter { Forge.advFreezePlayerControls = false; WorldStage.getInstance().setPosition(new Vector2(poi.getPosition().x - 16f, poi.getPosition().y + 16f)); WorldStage.getInstance().loadPOI(poi); - WorldSave.getCurrentSave().autoSave(); Forge.clearTransitionScreen(); - //WorldStage.getInstance().player.playEffect(Paths.EFFECT_TELEPORT, 10); }, Forge.takeScreenshot()))); return "Teleported to " + s[0] + "(" + poi.getPosition() + ")"; }); diff --git a/forge-gui-mobile/src/forge/screens/CoverScreen.java b/forge-gui-mobile/src/forge/screens/CoverScreen.java index 387e4546f35..a4bc1606bce 100644 --- a/forge-gui-mobile/src/forge/screens/CoverScreen.java +++ b/forge-gui-mobile/src/forge/screens/CoverScreen.java @@ -4,12 +4,14 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import forge.Forge; import forge.Graphics; import forge.animation.ForgeAnimation; +import forge.assets.FSkin; +import forge.assets.FSkinTexture; import forge.gui.FThreads; public class CoverScreen extends TransitionScreen { private CoverAnimation coverAnimation; - Runnable runnable; - TextureRegion textureRegion; + private Runnable runnable; + private TextureRegion textureRegion; public CoverScreen(Runnable r, TextureRegion t) { runnable = r; @@ -18,19 +20,22 @@ public class CoverScreen extends TransitionScreen { } private class CoverAnimation extends ForgeAnimation { - float DURATION = 0.6f; + float DURATION = 0.8f; private float progress = 0; public void drawBackground(Graphics g) { + float oldAlpha = g.getfloatAlphaComposite(); float percentage = progress / DURATION; if (percentage < 0) { percentage = 0; } else if (percentage > 1) { percentage = 1; } - if (textureRegion != null) { - g.drawPortalFade(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), Math.min(percentage, 1f), true); - } + g.setAlphaComposite(percentage); + g.drawImage(Forge.isMobileAdventureMode ? FSkinTexture.ADV_BG_TEXTURE : FSkinTexture.BG_TEXTURE, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight()); + g.drawImage(FSkin.getLogo(), Forge.getScreenWidth() / 2f - FSkin.getLogo().getWidth() / 2f, Forge.getScreenHeight() / 2f - FSkin.getLogo().getHeight() / 2f, FSkin.getLogo().getWidth(), FSkin.getLogo().getHeight()); + g.setAlphaComposite(oldAlpha); + g.drawPortalFade(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), Math.min(percentage, 1f), false); } @Override