From 060fcba17d50ffa900480e89a978bcf7460e2452 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 23 Nov 2014 05:29:28 +0000 Subject: [PATCH] Fix load conquests screen Prevent crash if you pause during startup --- .../planarconquest/ConquestMapScreen.java | 2 +- .../planarconquest/LoadConquestScreen.java | 31 ++++++++++++++++--- .../src/main/java/forge/match/MatchUtil.java | 6 +++- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java index d16fbda0343..aa2e32f33c5 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java @@ -48,7 +48,7 @@ public class ConquestMapScreen extends LaunchScreen { } public void update() { - setHeaderCaption(FModel.getConquest().getName() + "\n" + FModel.getConquest().getCurrentPlane()); + setHeaderCaption(FModel.getConquest().getName() + " - " + FModel.getConquest().getCurrentPlane()); } @Override diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/LoadConquestScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/LoadConquestScreen.java index 9f4211120d7..a1b52d68cbe 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/LoadConquestScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/LoadConquestScreen.java @@ -9,6 +9,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment; import forge.FThreads; @@ -31,6 +32,7 @@ import forge.screens.settings.SettingsScreen; import forge.toolbox.FButton; import forge.toolbox.FEvent; import forge.toolbox.FList; +import forge.toolbox.FTextArea; import forge.toolbox.FEvent.FEventHandler; import forge.util.ThreadUtil; import forge.util.Utils; @@ -38,8 +40,10 @@ import forge.util.gui.SOptionPane; public class LoadConquestScreen extends FScreen { private static final float PADDING = Utils.AVG_FINGER_HEIGHT * 0.1f; + private static final FSkinColor OLD_CONQUESTS_BACK_COLOR = FSkinColor.get(Colors.CLR_INACTIVE).getContrastColor(20); private static final FSkinColor SEL_COLOR = FSkinColor.get(Colors.CLR_ACTIVE); + private final FTextArea lblOldConquests = add(new FTextArea(false, "Loading Existing Conquests...")); private final ConquestFileLister lstConquests = add(new ConquestFileLister()); private final FButton btnNewConquest = add(new FButton("New")); private final FButton btnRenameConquest = add(new FButton("Rename")); @@ -48,6 +52,9 @@ public class LoadConquestScreen extends FScreen { public LoadConquestScreen() { super("Load Planar Conquest"); + lblOldConquests.setFont(FSkinFont.get(12)); + lblOldConquests.setAlignment(HAlignment.CENTER); + btnNewConquest.setFont(FSkinFont.get(16)); btnNewConquest.setCommand(new FEventHandler() { @Override @@ -110,10 +117,25 @@ public class LoadConquestScreen extends FScreen { else { qc.load(null); } + Gdx.app.postRunnable(new Runnable() { + @Override + public void run() { + lblOldConquests.setText("Old conquest data? Put into \"" + + ForgeConstants.CONQUEST_SAVE_DIR.replace('\\', '/') + "\" and restart Forge."); + revalidate(); + } + }); } }); } + @Override + protected void drawBackground(Graphics g) { + super.drawBackground(g); + float y = getHeader().getBottom(); + g.fillRect(OLD_CONQUESTS_BACK_COLOR, 0, y, getWidth(), lstConquests.getTop() - y); + } + @Override protected void drawOverlay(Graphics g) { float y = lstConquests.getTop(); @@ -126,6 +148,8 @@ public class LoadConquestScreen extends FScreen { float buttonHeight = btnNewConquest.getAutoSizeBounds().height * 1.2f; float y = startY + 2 * PADDING; + lblOldConquests.setBounds(0, y, width, lblOldConquests.getPreferredHeight(width)); + y += lblOldConquests.getHeight() + PADDING; lstConquests.setBounds(0, y, width, height - y - buttonHeight - 2 * PADDING); y += lstConquests.getHeight() + PADDING; @@ -152,14 +176,14 @@ public class LoadConquestScreen extends FScreen { String questName; String oldConquestName = quest.getName(); while (true) { - questName = SOptionPane.showInputDialog("Enter new name for quest:", "Rename Conquest", null, oldConquestName); + questName = SOptionPane.showInputDialog("Enter new name for conquest:", "Rename Conquest", null, oldConquestName); if (questName == null) { return; } questName = QuestUtil.cleanString(questName); if (questName.equals(oldConquestName)) { return; } //quit if chose same name if (questName.isEmpty()) { - SOptionPane.showMessageDialog("Please specify a quest name."); + SOptionPane.showMessageDialog("Please specify a conquest name."); continue; } @@ -171,7 +195,7 @@ public class LoadConquestScreen extends FScreen { } } if (exists) { - SOptionPane.showMessageDialog("A quest already exists with that name. Please pick another quest name."); + SOptionPane.showMessageDialog("A conquest already exists with that name. Please pick another quest name."); continue; } break; @@ -251,7 +275,6 @@ public class LoadConquestScreen extends FScreen { float cardsWidth = font.getBounds(cards).width + iconSize + SettingsScreen.SETTING_PADDING; g.drawImage(FSkinImage.HAND, x + w - cardsWidth + iconOffset, y - SettingsScreen.SETTING_PADDING, iconSize, iconSize); g.drawText(cards, font, SettingsScreen.DESC_COLOR, x + w - cardsWidth + iconSize + SettingsScreen.SETTING_PADDING, y, w, h, false, HAlignment.LEFT, false); - g.drawImage(FSkinImage.QUEST_COINSTACK, x + w + iconOffset, y - SettingsScreen.SETTING_PADDING, iconSize, iconSize); } }); } diff --git a/forge-gui/src/main/java/forge/match/MatchUtil.java b/forge-gui/src/main/java/forge/match/MatchUtil.java index d4b7c896490..45004f814aa 100644 --- a/forge-gui/src/main/java/forge/match/MatchUtil.java +++ b/forge-gui/src/main/java/forge/match/MatchUtil.java @@ -41,6 +41,7 @@ import forge.model.FModel; import forge.player.GamePlayerUtil; import forge.player.LobbyPlayerHuman; import forge.player.PlayerControllerHuman; +import forge.properties.ForgePreferences; import forge.properties.ForgePreferences.FPref; import forge.quest.QuestController; import forge.sound.MusicPlaylist; @@ -396,9 +397,12 @@ public class MatchUtil { } public static void pause() { + ForgePreferences prefs = FModel.getPreferences(); + if (prefs == null) { return; } //do nothing if prefs haven't been initialized yet + SoundSystem.instance.pause(); //pause playback if needed - if (FModel.getPreferences().getPrefBoolean(FPref.UI_PAUSE_WHILE_MINIMIZED)) { + if (prefs.getPrefBoolean(FPref.UI_PAUSE_WHILE_MINIMIZED)) { InputQueue inputQueue = getInputQueue(); if (inputQueue != null && inputQueue.getInput() instanceof InputPlaybackControl) { ((InputPlaybackControl) inputQueue.getInput()).pause();