From 12609741db9670e38ba71bf15082f9e7d20baa7e Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 12 Feb 2022 08:09:24 +0000 Subject: [PATCH] [Mobile] Update Splashscreen transitions --- .../assets/fallback_skin/title_bg_lq.png | Bin 0 -> 47991 bytes .../assets/fallback_skin/transition.png | Bin 0 -> 11211 bytes forge-gui-mobile/src/forge/Forge.java | 54 +++++-- forge-gui-mobile/src/forge/Graphics.java | 19 +++ .../src/forge/screens/SplashScreen.java | 133 +++++++++++++----- 5 files changed, 155 insertions(+), 51 deletions(-) create mode 100644 forge-gui-android/assets/fallback_skin/title_bg_lq.png create mode 100644 forge-gui-android/assets/fallback_skin/transition.png diff --git a/forge-gui-android/assets/fallback_skin/title_bg_lq.png b/forge-gui-android/assets/fallback_skin/title_bg_lq.png new file mode 100644 index 0000000000000000000000000000000000000000..c59b8bec200c9b0879941832c3d96b5779e5a05b GIT binary patch literal 47991 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 A2mk;8 literal 0 HcmV?d00001 diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 8a96e2da674..3276514ee5b 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -222,7 +222,6 @@ public class Forge implements ApplicationListener { /* call preloadExtendedArt here, if we put it above we will * * get error: No OpenGL context found in the current thread. */ preloadExtendedArt(); - preloadBoosterDrafts(); } }); } @@ -273,17 +272,16 @@ public class Forge implements ApplicationListener { public static void openHomeDefault() { GuiBase.setIsAdventureMode(false); openHomeScreen(-1, null); //default for startup - splashScreen = null; isMobileAdventureMode = false; if (isLandscapeMode()) { //open preferred new game screen by default if landscape mode NewGameMenu.getPreferredScreen().open(); } + stopContinuousRendering(); //save power consumption by disabling continuous rendering once assets loaded } public static void openAdventure() { //continuous rendering is needed for adventure mode startContinuousRendering(); GuiBase.setIsAdventureMode(true); - splashScreen = null; isMobileAdventureMode = true; try { for (SceneType sceneType : SceneType.values()) { @@ -293,23 +291,16 @@ public class Forge implements ApplicationListener { } catch (Exception e) { e.printStackTrace(); } } protected void afterDbLoaded() { - stopContinuousRendering(); //save power consumption by disabling continuous rendering once assets loaded //init here to fix crash if the assets are missings on android - transitionTexture = new Texture(Config.instance().getFile("ui/transition.png")); + transitionTexture = new Texture(GuiBase.isAndroid() + ? Gdx.files.internal("fallback_skin").child("transition.png") + : Config.instance().getFile("ui/transition.png")); - FSkin.loadFull(splashScreen); - SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music destroyThis = false; //Allow back() Gdx.input.setCatchKey(Keys.MENU, true); afterDBloaded = true; - //selection - if (isLandscapeMode() && !GuiBase.isAndroid()) - splashScreen.setShowModeSelector(true); - else - openHomeDefault(); - //adjust height modifier adjustHeightModifier(getScreenWidth(), getScreenHeight()); @@ -318,6 +309,39 @@ public class Forge implements ApplicationListener { FModel.getPreferences().setPref(FPref.UI_LANDSCAPE_MODE, isLandscapeMode()); FModel.getPreferences().save(); } + + FThreads.invokeInBackgroundThread(new Runnable() { + @Override + public void run() { + FThreads.invokeInEdtLater(new Runnable() { + @Override + public void run() { + //load skin full + FSkin.loadFull(splashScreen); + FThreads.invokeInBackgroundThread(new Runnable() { + @Override + public void run() { + //load Drafts + preloadBoosterDrafts(); + FThreads.invokeInEdtLater(new Runnable() { + @Override + public void run() { + //selection + if (isLandscapeMode() && !GuiBase.isAndroid()) + splashScreen.setShowModeSelector(true); + else { + splashScreen.startClassic(); + } + //start background music + SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); + } + }); + } + }); + } + }); + } + }); } public static Clipboard getClipboard() { @@ -531,6 +555,10 @@ public class Forge implements ApplicationListener { public static void clearCurrentScreen() { currentScreen = null; } + + public static void clearSplashScreen() { + splashScreen = null; + } private static void setCurrentScreen(FScreen screen0) { String toNewScreen = screen0 != null ? screen0.toString() : ""; String previousScreen = currentScreen != null ? currentScreen.toString() : ""; diff --git a/forge-gui-mobile/src/forge/Graphics.java b/forge-gui-mobile/src/forge/Graphics.java index f25e19e2824..f677af87996 100644 --- a/forge-gui-mobile/src/forge/Graphics.java +++ b/forge-gui-mobile/src/forge/Graphics.java @@ -753,6 +753,25 @@ public class Graphics { setAlphaComposite(oldalpha); } } + public void drawGrayTransitionImage(Texture image, float x, float y, float w, float h, boolean withDarkOverlay, float percentage) { + batch.end(); + shaderGrayscale.bind(); + shaderGrayscale.setUniformf("u_grayness", percentage); + batch.setShader(shaderGrayscale); + batch.begin(); + //draw gray + batch.draw(image, x, y, w, h); + //reset + batch.end(); + batch.setShader(null); + batch.begin(); + if(withDarkOverlay){ + float oldalpha = alphaComposite; + setAlphaComposite(0.4f); + fillRect(Color.BLACK, x, y, w, h); + setAlphaComposite(oldalpha); + } + } public void drawWarpImage(Texture image, float x, float y, float w, float h, float time) { batch.end(); shaderWarp.bind(); diff --git a/forge-gui-mobile/src/forge/screens/SplashScreen.java b/forge-gui-mobile/src/forge/screens/SplashScreen.java index 79e06060d1d..399b9d93cae 100644 --- a/forge-gui-mobile/src/forge/screens/SplashScreen.java +++ b/forge-gui-mobile/src/forge/screens/SplashScreen.java @@ -1,16 +1,20 @@ 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 com.badlogic.gdx.utils.Align; import forge.Forge; import forge.Graphics; +import forge.adventure.util.Config; import forge.animation.ForgeAnimation; import forge.assets.FSkin; import forge.assets.FSkinColor; import forge.assets.FSkinFont; import forge.assets.FSkinTexture; +import forge.gui.GuiBase; import forge.toolbox.FButton; import forge.toolbox.FContainer; import forge.toolbox.FEvent; @@ -21,7 +25,7 @@ public class SplashScreen extends FContainer { private TextureRegion background; private final FProgressBar progressBar; private FSkinFont disclaimerFont; - private boolean preparedForDialogs, showModeSelector, init, animateLogo; + private boolean preparedForDialogs, showModeSelector, init, animateLogo, hideBG, hideBtn, startClassic; private FButton btnAdventure, btnHome; private BGAnimation bgAnimation; @@ -38,6 +42,14 @@ public class SplashScreen extends FContainer { public void setBackground(TextureRegion background0) { background = background0; } + public void startClassic() { + startClassic = true; + hideBtn = true; + hideBG = true; + bgAnimation.DURATION = 1f; + bgAnimation.progress = 0; + bgAnimation.openAdventure = false; + } @Override protected void doLayout(float width, float height) { @@ -76,35 +88,60 @@ public class SplashScreen extends FContainer { } private class BGAnimation extends ForgeAnimation { - private static final float DURATION = 0.8f; + float DURATION = 0.8f; private float progress = 0; private boolean finished, openAdventure; + //for transition image only... + Texture transition_bg = new Texture(GuiBase.isAndroid() ? Gdx.files.internal("fallback_skin").child("title_bg_lq.png") : Config.instance().getFile("ui/title_bg.png")); public void drawBackground(Graphics g) { float percentage = progress / DURATION; + float oldAlpha = g.getfloatAlphaComposite(); if (percentage < 0) { percentage = 0; } else if (percentage > 1) { percentage = 1; } - if (animateLogo) { - g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight()); - float xmod = Forge.getScreenHeight() > 1000 ? 1.5f : Forge.getScreenHeight() > 800 ? 1.3f : 1f; - float scale = xmod > 1f ? xmod+(percentage*0.7f) : 0.7f+(percentage*0.7f); - float hscale = xmod > 1f ? xmod+0.2f+(percentage*0.9f) : 0.9f+(percentage*0.9f); - float logoHeight = FSkin.hdLogo.getHeight()*scale; - float logoWidth = FSkin.hdLogo.getWidth()*scale; - float logoY = getHeight()/2 - logoHeight/hscale; - float logoX = getWidth()/2 - logoWidth/2; - float mod = getHeight()/2 - logoHeight/2; - float oldalpha = g.getfloatAlphaComposite(); - g.setAlphaComposite(oldalpha-percentage); - g.drawImage(FSkin.hdLogo, logoX, logoY+(mod*percentage), logoWidth, logoHeight); - g.setAlphaComposite(oldalpha); - } else if (showModeSelector) - showSelector(g); - else - showSplash(g); + if (startClassic) { + showSplash(g, 1-percentage); + } else { + if (animateLogo) { + //bg + drawTransition(g, transition_bg, openAdventure, percentage); + g.setAlphaComposite(1-percentage); + g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight()); + g.setAlphaComposite(oldAlpha); + //logo + g.setAlphaComposite(oldAlpha-percentage); + float xmod = Forge.getScreenHeight() > 1000 ? 1.5f : Forge.getScreenHeight() > 800 ? 1.3f : 1f; + xmod += 10 * percentage; + g.drawImage(FSkin.hdLogo, getWidth()/2 - (FSkin.hdLogo.getWidth()*xmod)/2, getHeight()/2 - (FSkin.hdLogo.getHeight()*xmod)/1.5f, FSkin.hdLogo.getWidth()*xmod, FSkin.hdLogo.getHeight()*xmod); + g.setAlphaComposite(oldAlpha); + } else { + g.setAlphaComposite(hideBG ? 1-percentage : 1); + if (showModeSelector) { + showSelector(g, hideBG ? 1 - percentage : 1); + } else { + showSplash(g, 1); + } + g.setAlphaComposite(oldAlpha); + if (hideBG) { + g.setAlphaComposite(0+percentage); + drawTransition(g, transition_bg, openAdventure, percentage); + g.setAlphaComposite(oldAlpha); + } + } + } + if (hideBtn) { + if (btnAdventure != null) { + float y = btnAdventure.getTop(); + btnAdventure.setTop(y+(getHeight()/16 * percentage)); + } + if (btnHome != null) { + float y = btnHome.getTop(); + btnHome.setTop(y+(getHeight()/16 * percentage)); + } + } } @Override @@ -115,11 +152,12 @@ public class SplashScreen extends FContainer { @Override protected void onEnd(boolean endingAll) { - if (animateLogo) { + if (animateLogo||hideBG) { if (openAdventure) Forge.openAdventure(); else Forge.openHomeDefault(); + Forge.clearSplashScreen(); } } } @@ -129,8 +167,19 @@ public class SplashScreen extends FContainer { bgAnimation.start(); bgAnimation.drawBackground(g); } - - private void showSelector(Graphics g) { + void drawTransition(Graphics g, Texture bg, boolean openAdventure, float percentage) { + float oldAlpha = g.getfloatAlphaComposite(); + g.setAlphaComposite(percentage); + if (openAdventure) { + if (bg != null) { + g.drawGrayTransitionImage(bg, 0, 0, getWidth(), getHeight(), false, percentage*1); + } + } else { + g.fillRect(FSkinColor.get(FSkinColor.Colors.CLR_THEME),0, 0, getWidth(), getHeight()); + } + g.setAlphaComposite(oldAlpha); + } + private void showSelector(Graphics g, float alpha) { g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight()); float x, y, w, h; @@ -159,16 +208,19 @@ public class SplashScreen extends FContainer { float height = 57f / 450f * h; if (!init) { + init = true; btnAdventure = new FButton(Localizer.getInstance().getMessageorUseDefault("lblAdventureMode", "Adventure Mode")); btnHome = new FButton(Localizer.getInstance().getMessageorUseDefault("lblClassicMode", "Classic Mode")); btnAdventure.setCommand(new FEvent.FEventHandler() { @Override public void handleEvent(FEvent e) { - if (FSkin.hdLogo == null) - Forge.openAdventure(); - else { - btnAdventure.setVisible(false); - btnHome.setVisible(false); + if (FSkin.hdLogo == null) { + hideBG = true; + hideBtn = true; + bgAnimation.progress = 0; + bgAnimation.openAdventure = true; + } else { + hideBtn = true; animateLogo = true; bgAnimation.progress = 0; bgAnimation.openAdventure = true; @@ -178,11 +230,13 @@ public class SplashScreen extends FContainer { btnHome.setCommand(new FEvent.FEventHandler() { @Override public void handleEvent(FEvent e) { - if (FSkin.hdLogo == null) - Forge.openHomeDefault(); - else { - btnAdventure.setVisible(false); - btnHome.setVisible(false); + if (FSkin.hdLogo == null) { + hideBG = true; + hideBtn = true; + bgAnimation.progress = 0; + bgAnimation.openAdventure = false; + } else { + hideBtn = true; animateLogo = true; bgAnimation.progress = 0; bgAnimation.openAdventure = false; @@ -198,12 +252,16 @@ public class SplashScreen extends FContainer { add(btnHome); btnAdventure.setBounds(btn_x, btn_y+height+padding/2, btn_w, height); add(btnAdventure); - init = true; } } - private void showSplash(Graphics g) { + private void showSplash(Graphics g, float alpha) { + float oldAlpha = g.getfloatAlphaComposite(); + g.setAlphaComposite(alpha); + drawDisclaimer(g); + g.setAlphaComposite(oldAlpha); + } + void drawDisclaimer(Graphics g) { if (background == null) { return; } - g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight()); float x, y, w, h; @@ -214,8 +272,7 @@ public class SplashScreen extends FContainer { w = getWidth(); h = getWidth() * backgroundRatio; y = (getHeight() - h) / 2; - } - else { + } else { y = 0; h = getHeight(); w = getHeight() / backgroundRatio;