had to make a different event to ensure it is fired after log has composed all strings.

PhaseHandler: passPriority is never called from non-EDT, simplifying code here.
This commit is contained in:
Maxmtg
2013-05-25 23:44:54 +00:00
parent c282b3e28a
commit 3e641685a4
6 changed files with 18 additions and 19 deletions

1
.gitattributes vendored
View File

@@ -14241,6 +14241,7 @@ src/main/java/forge/game/event/CardsAntedEvent.java -text
src/main/java/forge/game/event/CounterAddedEvent.java -text src/main/java/forge/game/event/CounterAddedEvent.java -text
src/main/java/forge/game/event/CounterRemovedEvent.java -text src/main/java/forge/game/event/CounterRemovedEvent.java -text
src/main/java/forge/game/event/DrawCardEvent.java -text src/main/java/forge/game/event/DrawCardEvent.java -text
src/main/java/forge/game/event/DuelFinishedEvent.java -text
src/main/java/forge/game/event/DuelOutcomeEvent.java -text src/main/java/forge/game/event/DuelOutcomeEvent.java -text
src/main/java/forge/game/event/EndOfTurnEvent.java -text src/main/java/forge/game/event/EndOfTurnEvent.java -text
src/main/java/forge/game/event/Event.java -text src/main/java/forge/game/event/Event.java -text

View File

@@ -43,7 +43,7 @@ import forge.control.KeyboardShortcuts.Shortcut;
import forge.game.GameState; import forge.game.GameState;
import forge.game.ai.AiProfileUtil; import forge.game.ai.AiProfileUtil;
import forge.game.event.CardsAntedEvent; import forge.game.event.CardsAntedEvent;
import forge.game.event.DuelOutcomeEvent; import forge.game.event.DuelFinishedEvent;
import forge.game.event.Event; import forge.game.event.Event;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.game.player.Player; import forge.game.player.Player;
@@ -394,7 +394,7 @@ public enum FControl {
@Subscribe @Subscribe
public void receiveGameEvent(Event ev) { public void receiveGameEvent(Event ev) {
if( ev instanceof DuelOutcomeEvent ) { if( ev instanceof DuelFinishedEvent ) {
FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() {
new ViewWinLose(game.getMatch()); new ViewWinLose(game.getMatch());
SOverlayUtils.showOverlay(); SOverlayUtils.showOverlay();

View File

@@ -13,6 +13,7 @@ import forge.Singletons;
import forge.control.FControl; import forge.control.FControl;
import forge.error.BugReporter; import forge.error.BugReporter;
import forge.game.event.CardsAntedEvent; import forge.game.event.CardsAntedEvent;
import forge.game.event.DuelFinishedEvent;
import forge.game.event.DuelOutcomeEvent; import forge.game.event.DuelOutcomeEvent;
import forge.game.event.FlipCoinEvent; import forge.game.event.FlipCoinEvent;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
@@ -91,6 +92,9 @@ public class MatchController {
// The log shall listen to events and generate text internally // The log shall listen to events and generate text internally
game.getEvents().post(new DuelOutcomeEvent(result, gamesPlayedRo)); game.getEvents().post(new DuelOutcomeEvent(result, gamesPlayedRo));
// will pull UI
game.getEvents().post(new DuelFinishedEvent());
} }

View File

@@ -57,9 +57,9 @@ public class AiInputCommon extends InputPassPriorityBase implements AiInput {
/* /*
* //put this back in ButtonUtil.disableAll(); * //put this back in ButtonUtil.disableAll();
* AllZone.getDisplay().showMessage("Phase: " + * AllZone.getDisplay().showMessage("Phase: " +
* Singletons.getModel().getGameState().getPhaseHandler().getPhase() + "\nAn error may have occurred. Please * Singletons.getModel().getGameState().getPhaseHandler().getPhase() +
* send the \"Stack Report\" and the * "\nAn error may have occurred. Please send the \"Stack Report\" and
* \"Detailed Error Trace\" to the Forge forum."); * the \"Detailed Error Trace\" to the Forge forum.");
*/ */
computer.getGame().getInputQueue().LockAndInvokeGameAction(aiActions); computer.getGame().getInputQueue().LockAndInvokeGameAction(aiActions);

View File

@@ -0,0 +1,3 @@
package forge.game.event;
public class DuelFinishedEvent extends Event {} // need this class to launch after log was built via previous event

View File

@@ -752,17 +752,8 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
nextPhase(); nextPhase();
return; return;
} else if (!game.getStack().hasSimultaneousStackEntries()) { } else if (!game.getStack().hasSimultaneousStackEntries()) {
Runnable proc = new Runnable(){ game.getStack().resolveStack();
@Override public void run() { game.getStack().chooseOrderOfSimultaneousStackEntryAll();
game.getStack().resolveStack();
game.getStack().chooseOrderOfSimultaneousStackEntryAll();
}
};
if ( FThreads.isEDT() )
game.getInputQueue().LockAndInvokeGameAction(proc);
else
proc.run();
} }
} else { } else {
// pass the priority to other player // pass the priority to other player