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 @Override
public Void visit(GameEventDuelOutcome ev, Void params) { public Void visit(GameEventDuelOutcome ev, Void params) {
FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { 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; return null;
} }

View File

@@ -39,6 +39,7 @@ import forge.card.spellability.SpellAbilityStackInstance;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.event.GameEvent; import forge.game.event.GameEvent;
import forge.game.event.GameEventDuelOutcome;
import forge.game.phase.Cleanup; import forge.game.phase.Cleanup;
import forge.game.phase.Combat; import forge.game.phase.Combat;
import forge.game.phase.EndOfCombat; import forge.game.phase.EndOfCombat;
@@ -311,7 +312,14 @@ public class GameState {
for (Player p : roIngamePlayers) { for (Player p : roIngamePlayers) {
p.onGameOver(); 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) { public Zone getZoneOf(final Card c) {

View File

@@ -10,8 +10,6 @@ import com.google.common.collect.Lists;
import forge.Card; import forge.Card;
import forge.Singletons; import forge.Singletons;
import forge.game.event.GameEventAnteCardsSelected; import forge.game.event.GameEventAnteCardsSelected;
import forge.game.event.GameEventDuelFinished;
import forge.game.event.GameEventDuelOutcome;
import forge.game.event.GameEventFlipCoin; import forge.game.event.GameEventFlipCoin;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.game.player.Player; import forge.game.player.Player;
@@ -72,23 +70,11 @@ public class MatchState {
return gamesToWinMatch; return gamesToWinMatch;
} }
/** public void addGamePlayed(GameOutcome outcome) {
* TODO: Write javadoc for this method. if (!currentGame.isGameOver()) {
* @param reason throw new IllegalStateException("Game is not over yet.");
*
* @param game
*/
public void addGamePlayed(GameEndReason reason, GameState game) {
if (!game.isGameOver()) {
throw new RuntimeException("Game is not over yet.");
} }
gamesPlayed.add(outcome);
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));
} }