match cleanup

This commit is contained in:
Maxmtg
2013-05-29 12:51:18 +00:00
parent 4cbe3237af
commit 85fe60c458
3 changed files with 14 additions and 20 deletions

View File

@@ -66,7 +66,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void, Void>
@Override
public Void visit(GameEventDuelOutcome ev, Void params) {
FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() {
fc.getInputQueue().onGameOver();
fc.getInputQueue().onGameOver(); // this will unlock any game threads waiting for inputs to complete
} });
return null;
}

View File

@@ -39,6 +39,7 @@ import forge.card.spellability.SpellAbilityStackInstance;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
import forge.game.event.GameEvent;
import forge.game.event.GameEventDuelOutcome;
import forge.game.phase.Cleanup;
import forge.game.phase.Combat;
import forge.game.phase.EndOfCombat;
@@ -311,7 +312,14 @@ public class GameState {
for (Player p : roIngamePlayers) {
p.onGameOver();
}
match.addGamePlayed(reason, this);
final GameOutcome result = new GameOutcome(reason, getRegisteredPlayers());
result.setTurnsPlayed(getPhaseHandler().getTurn());
match.addGamePlayed(result);
// The log shall listen to events and generate text internally
fireEvent(new GameEventDuelOutcome(result, match.getPlayedGames()));
}
public Zone getZoneOf(final Card c) {

View File

@@ -10,8 +10,6 @@ import com.google.common.collect.Lists;
import forge.Card;
import forge.Singletons;
import forge.game.event.GameEventAnteCardsSelected;
import forge.game.event.GameEventDuelFinished;
import forge.game.event.GameEventDuelOutcome;
import forge.game.event.GameEventFlipCoin;
import forge.game.player.LobbyPlayer;
import forge.game.player.Player;
@@ -72,23 +70,11 @@ public class MatchState {
return gamesToWinMatch;
}
/**
* TODO: Write javadoc for this method.
* @param reason
*
* @param game
*/
public void addGamePlayed(GameEndReason reason, GameState game) {
if (!game.isGameOver()) {
throw new RuntimeException("Game is not over yet.");
public void addGamePlayed(GameOutcome outcome) {
if (!currentGame.isGameOver()) {
throw new IllegalStateException("Game is not over yet.");
}
final GameOutcome result = new GameOutcome(reason, game.getRegisteredPlayers());
result.setTurnsPlayed(game.getPhaseHandler().getTurn());
gamesPlayed.add(result);
// The log shall listen to events and generate text internally
game.fireEvent(new GameEventDuelOutcome(result, gamesPlayedRo));
gamesPlayed.add(outcome);
}