From 69d546b83bbe1792c31f24bc79fc35e4e82218cb Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 30 May 2014 00:05:36 +0000 Subject: [PATCH] Fix so resource files unzipped properly and skin reloaded afterward --- forge-gui-mobile/src/forge/Forge.java | 2 +- .../src/forge/assets/AssetsDownloader.java | 21 ++++++++++++++----- forge-gui-mobile/src/forge/assets/FSkin.java | 6 ++++++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 6211b7c4274..f85cc6e0e2a 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -84,7 +84,7 @@ public class Forge implements ApplicationListener { @Override public void run() { //see if app or assets need updating - AssetsDownloader.checkForUpdates(splashScreen.getProgressBar()); + AssetsDownloader.checkForUpdates(splashScreen); FModel.initialize(splashScreen.getProgressBar()); diff --git a/forge-gui-mobile/src/forge/assets/AssetsDownloader.java b/forge-gui-mobile/src/forge/assets/AssetsDownloader.java index 6e9050a78fc..e48efa0f3bf 100644 --- a/forge-gui-mobile/src/forge/assets/AssetsDownloader.java +++ b/forge-gui-mobile/src/forge/assets/AssetsDownloader.java @@ -21,13 +21,14 @@ import com.esotericsoftware.minlog.Log; import forge.FThreads; import forge.Forge; import forge.properties.ForgeConstants; +import forge.screens.SplashScreen; import forge.toolbox.FProgressBar; import forge.util.FileUtil; import forge.util.TextUtil; public class AssetsDownloader { //if not forge-gui-mobile-dev, check whether assets are up to date - public static void checkForUpdates(final FProgressBar progressBar) { + public static void checkForUpdates(final SplashScreen splashScreen) { //if (Gdx.app.getType() == ApplicationType.Desktop) { return; } //TODO see if app needs updating @@ -48,7 +49,15 @@ public class AssetsDownloader { return; //if version matches what had been previously saved and FSkin isn't requesting assets download, no need to download assets } - downloadAssets(progressBar); + downloadAssets(splashScreen.getProgressBar()); + + //reload light version of skin of assets updated + FThreads.invokeInEdtAndWait(new Runnable() { + @Override + public void run() { + FSkin.reloadAfterAssetsDownload(splashScreen); + } + }); //save version string to file once assets finish downloading //so they don't need to be re-downloaded until you upgrade again @@ -137,15 +146,17 @@ public class AssetsDownloader { while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry)entries.nextElement(); - + + String path = ForgeConstants.ASSETS_DIR + entry.getName(); if (entry.isDirectory()) { - (new File(entry.getName())).mkdir(); + new File(path).mkdir(); continue; } - copyInputStream(zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(entry.getName()))); + copyInputStream(zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(path))); } zipFile.close(); + fileDest.delete(); } catch (Exception e) { // TODO Auto-generated catch block diff --git a/forge-gui-mobile/src/forge/assets/FSkin.java b/forge-gui-mobile/src/forge/assets/FSkin.java index 49834820f66..1681fb5ac87 100644 --- a/forge-gui-mobile/src/forge/assets/FSkin.java +++ b/forge-gui-mobile/src/forge/assets/FSkin.java @@ -238,6 +238,12 @@ public class FSkin { return needReloadAfterAssetsDownloaded; } + public static void reloadAfterAssetsDownload(SplashScreen splashScreen) { + needReloadAfterAssetsDownloaded = false; + allSkins = null; + loadLight(preferredName, splashScreen); + } + /** * Gets the name. *