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/CounterRemovedEvent.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/EndOfTurnEvent.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.ai.AiProfileUtil;
import forge.game.event.CardsAntedEvent;
import forge.game.event.DuelOutcomeEvent;
import forge.game.event.DuelFinishedEvent;
import forge.game.event.Event;
import forge.game.player.LobbyPlayer;
import forge.game.player.Player;
@@ -394,7 +394,7 @@ public enum FControl {
@Subscribe
public void receiveGameEvent(Event ev) {
if( ev instanceof DuelOutcomeEvent ) {
if( ev instanceof DuelFinishedEvent ) {
FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() {
new ViewWinLose(game.getMatch());
SOverlayUtils.showOverlay();

View File

@@ -13,6 +13,7 @@ import forge.Singletons;
import forge.control.FControl;
import forge.error.BugReporter;
import forge.game.event.CardsAntedEvent;
import forge.game.event.DuelFinishedEvent;
import forge.game.event.DuelOutcomeEvent;
import forge.game.event.FlipCoinEvent;
import forge.game.player.LobbyPlayer;
@@ -91,6 +92,9 @@ public class MatchController {
// The log shall listen to events and generate text internally
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();
* AllZone.getDisplay().showMessage("Phase: " +
* Singletons.getModel().getGameState().getPhaseHandler().getPhase() + "\nAn error may have occurred. Please
* send the \"Stack Report\" and the
* \"Detailed Error Trace\" to the Forge forum.");
* Singletons.getModel().getGameState().getPhaseHandler().getPhase() +
* "\nAn error may have occurred. Please send the \"Stack Report\" and
* the \"Detailed Error Trace\" to the Forge forum.");
*/
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();
return;
} else if (!game.getStack().hasSimultaneousStackEntries()) {
Runnable proc = new Runnable(){
@Override public void run() {
game.getStack().resolveStack();
game.getStack().chooseOrderOfSimultaneousStackEntryAll();
}
};
if ( FThreads.isEDT() )
game.getInputQueue().LockAndInvokeGameAction(proc);
else
proc.run();
game.getStack().resolveStack();
game.getStack().chooseOrderOfSimultaneousStackEntryAll();
}
} else {
// pass the priority to other player