diff --git a/forge-gui-mobile/src/forge/adventure/scene/ForgeScene.java b/forge-gui-mobile/src/forge/adventure/scene/ForgeScene.java index c73c486e8fa..5082457fd8f 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/ForgeScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/ForgeScene.java @@ -78,7 +78,7 @@ public abstract class ForgeScene extends Scene implements IUpdateable { Gdx.input.setInputProcessor(Forge.getInputProcessor()); } }; - Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), true)); + Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), true, false)); } else { Forge.openScreen(getScreen()); Gdx.input.setInputProcessor(Forge.getInputProcessor()); diff --git a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java index 711855c39df..645924fba54 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java @@ -20,6 +20,7 @@ import forge.Forge; import forge.adventure.util.Controls; import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSaveHeader; +import forge.screens.TransitionScreen; import java.io.File; import java.io.FileInputStream; @@ -105,8 +106,16 @@ public class SaveLoadScene extends UIScene { dialog.show(stage); stage.setKeyboardFocus(textInput); } else { - if(WorldSave.load(currentSlot)) - Forge.switchScene(SceneType.GameScene.instance); + Runnable runnable = new Runnable() { + @Override + public void run() { + if(WorldSave.load(currentSlot)) { + Forge.clearTransitionScreen(); + Forge.switchScene(SceneType.GameScene.instance); + } + } + }; + Forge.setTransitionScreen(new TransitionScreen(runnable, null, false, true)); } } diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java index 2a8940ade1b..5fb5fbecb8c 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java @@ -262,6 +262,8 @@ public abstract class GameStage extends Stage { } @Override public boolean touchUp(int screenX, int screenY, int pointer, int button) { + WorldStage.getInstance().GetPlayer().setMovementDirection(Vector2.Zero); + MapStage.getInstance().GetPlayer().setMovementDirection(Vector2.Zero); stop(); return true; } diff --git a/forge-gui-mobile/src/forge/adventure/world/WorldSave.java b/forge-gui-mobile/src/forge/adventure/world/WorldSave.java index 8392b869883..38907ae38ff 100644 --- a/forge-gui-mobile/src/forge/adventure/world/WorldSave.java +++ b/forge-gui-mobile/src/forge/adventure/world/WorldSave.java @@ -1,5 +1,6 @@ package forge.adventure.world; +import forge.Forge; import forge.adventure.data.DifficultyData; import forge.adventure.player.AdventurePlayer; import forge.adventure.pointofintrest.PointOfInterestChanges; @@ -77,6 +78,7 @@ public class WorldSave { } } catch (Exception e) { e.printStackTrace(); + Forge.clearTransitionScreen(); return false; } finally { diff --git a/forge-gui-mobile/src/forge/screens/TransitionScreen.java b/forge-gui-mobile/src/forge/screens/TransitionScreen.java index e26455db362..903e6360b7f 100644 --- a/forge-gui-mobile/src/forge/screens/TransitionScreen.java +++ b/forge-gui-mobile/src/forge/screens/TransitionScreen.java @@ -1,22 +1,29 @@ package forge.screens; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; import forge.Forge; import forge.Graphics; import forge.animation.ForgeAnimation; +import forge.assets.FSkin; +import forge.assets.FSkinImage; +import forge.gui.GuiBase; import forge.toolbox.FContainer; public class TransitionScreen extends FContainer { private BGAnimation bgAnimation; Runnable runnable; TextureRegion textureRegion; - boolean matchTransition; + boolean matchTransition, isloading; - public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch) { + public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading) { bgAnimation = new BGAnimation(); runnable = proc; textureRegion = screen; matchTransition = enterMatch; + isloading = loading; } @Override @@ -27,6 +34,7 @@ public class TransitionScreen extends FContainer { private class BGAnimation extends ForgeAnimation { float DURATION = 0.6f; private float progress = 0; + Texture transition_bg = new Texture(GuiBase.isAndroid() ? Gdx.files.internal("fallback_skin").child("title_bg_lq.png") : Gdx.files.classpath("fallback_skin").child("title_bg_lq.png")); public void drawBackground(Graphics g) { float percentage = progress / DURATION; @@ -36,10 +44,26 @@ public class TransitionScreen extends FContainer { } else if (percentage > 1) { percentage = 1; } - if (matchTransition) { - g.drawWarpImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), percentage); + if (isloading) { + g.fillRect(Color.BLACK, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight()); + if (transition_bg != null) { + g.setAlphaComposite(percentage); + g.drawImage(transition_bg, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight()); + g.setAlphaComposite(oldAlpha); + } + float xmod = Forge.getScreenHeight() > 2000 ? 1.5f : 1f; + xmod *= percentage; + if (FSkin.hdLogo != null) { + g.drawImage(FSkin.hdLogo, Forge.getScreenWidth()/2 - (FSkin.hdLogo.getWidth()*xmod)/2, Forge.getScreenHeight()/2 - (FSkin.hdLogo.getHeight()*xmod)/2, FSkin.hdLogo.getWidth()*xmod, FSkin.hdLogo.getHeight()*xmod); + } else { + g.drawImage(FSkinImage.LOGO,Forge.getScreenWidth()/2 - (FSkinImage.LOGO.getWidth()*xmod)/2, Forge.getScreenHeight()/2 - (FSkinImage.LOGO.getHeight()*xmod)/1.5f, FSkinImage.LOGO.getWidth()*xmod, FSkinImage.LOGO.getHeight()*xmod); + } + } else if (matchTransition) { + if (textureRegion != null) + g.drawWarpImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), percentage); } else { - g.drawGrayTransitionImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), false, percentage); + if (textureRegion != null) + g.drawGrayTransitionImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), false, percentage); } } diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index 54dcd98c5b2..dc11c7310e1 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -315,7 +315,7 @@ public class MatchController extends AbstractGuiGame { Forge.setCursor(null, "0"); } }; - Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), false)); + Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), false, false)); return; } if (hasLocalPlayers() || getGameView().isMatchOver()) {