From b1eba473f11514e659f61d10ec3b37a405251245 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Fri, 18 Jan 2013 19:11:22 +0000 Subject: [PATCH] Notify of changes to tournament. --- .../src/main/java/com/gempukku/lotro/hall/HallServer.java | 6 +++--- .../com/gempukku/lotro/tournament/DefaultTournament.java | 8 +++++++- .../java/com/gempukku/lotro/tournament/Tournament.java | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java index 483588ef0..d1c3bf086 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java @@ -689,11 +689,11 @@ public class HallServer extends AbstractServer { for (Map.Entry tournamentEntry : new HashMap(_runningTournaments).entrySet()) { Tournament runningTournament = tournamentEntry.getValue(); - runningTournament.advanceTournament(new HallTournamentCallback(runningTournament), _collectionsManager); - if (runningTournament.getTournamentStage() == Tournament.Stage.FINISHED) { + boolean changed = runningTournament.advanceTournament(new HallTournamentCallback(runningTournament), _collectionsManager); + if (runningTournament.getTournamentStage() == Tournament.Stage.FINISHED) _runningTournaments.remove(tournamentEntry.getKey()); + if (changed) hallChanged(); - } } if (_tickCounter == 60) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/DefaultTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/DefaultTournament.java index f2414ccf1..e358e7a7f 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/DefaultTournament.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/DefaultTournament.java @@ -226,9 +226,10 @@ public class DefaultTournament implements Tournament { } @Override - public void advanceTournament(TournamentCallback tournamentCallback, CollectionsManager collectionsManager) { + public boolean advanceTournament(TournamentCallback tournamentCallback, CollectionsManager collectionsManager) { _lock.writeLock().lock(); try { + boolean result = false; if (_nextTask == null) { if (_tournamentStage == Stage.DRAFT) { _draft.advanceDraft(tournamentCallback); @@ -238,6 +239,7 @@ public class DefaultTournament implements Tournament { _tournamentService.updateTournamentStage(_tournamentId, _tournamentStage); _deckBuildStartTime = System.currentTimeMillis(); _draft = null; + result = true; } } if (_tournamentStage == Stage.DECK_BUILDING) { @@ -245,6 +247,7 @@ public class DefaultTournament implements Tournament { || _playerDecks.size() == _players.size()) { _tournamentStage = Stage.PLAYING_GAMES; _tournamentService.updateTournamentStage(_tournamentId, _tournamentStage); + result = true; } } if (_tournamentStage == Stage.PLAYING_GAMES) { @@ -255,6 +258,7 @@ public class DefaultTournament implements Tournament { tournamentCallback.broadcastMessage("Tournament " + _tournamentName + " will start round "+(_tournamentRound+1)+" in 2 minutes"); _nextTask = new PairPlayers(); } + result = true; } } } @@ -262,7 +266,9 @@ public class DefaultTournament implements Tournament { TournamentTask task = _nextTask; _nextTask = null; task.executeTask(tournamentCallback, collectionsManager); + result = true; } + return result; } finally { _lock.writeLock().unlock(); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/Tournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/Tournament.java index dae21862c..5cbbb59d5 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/Tournament.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/Tournament.java @@ -33,7 +33,7 @@ public interface Tournament { public int getCurrentRound(); public int getPlayersInCompetitionCount(); - public void advanceTournament(TournamentCallback tournamentCallback, CollectionsManager collectionsManager); + public boolean advanceTournament(TournamentCallback tournamentCallback, CollectionsManager collectionsManager); public void reportGameFinished(String winner, String loser);