Added - tournaments get finished when last player drops

This commit is contained in:
jakub.salavec
2025-04-14 14:51:49 +02:00
parent 3c5fe5d7ce
commit 3e5c46a9ff

View File

@@ -276,6 +276,14 @@ public abstract class BaseTournament implements Tournament {
_tournamentService.recordPlayerTournamentAbandon(_tournamentId, player); _tournamentService.recordPlayerTournamentAbandon(_tournamentId, player);
_droppedPlayers.add(player); _droppedPlayers.add(player);
regeneratePlayerList(); regeneratePlayerList();
// if last player dropped, finish the tournament
Set<String> activePlayers = new HashSet<>(_players);
activePlayers.removeAll(_droppedPlayers);
if (activePlayers.size() == 0) {
finishTournament(null);
}
return "You have successfully dropped from the tournament. Thanks for playing!"; return "You have successfully dropped from the tournament. Thanks for playing!";
} finally { } finally {
writeLock.unlock(); writeLock.unlock();
@@ -300,7 +308,9 @@ public abstract class BaseTournament implements Tournament {
protected TournamentProcessAction finishTournament(CollectionsManager collectionsManager) { protected TournamentProcessAction finishTournament(CollectionsManager collectionsManager) {
_tournamentInfo.Stage = Stage.FINISHED; _tournamentInfo.Stage = Stage.FINISHED;
_tournamentService.recordTournamentStage(_tournamentId, getTournamentStage()); _tournamentService.recordTournamentStage(_tournamentId, getTournamentStage());
awardPrizes(collectionsManager); if (collectionsManager != null) {
awardPrizes(collectionsManager);
}
Set<String> activePlayers = new HashSet<>(_players); Set<String> activePlayers = new HashSet<>(_players);
activePlayers.removeAll(_droppedPlayers); activePlayers.removeAll(_droppedPlayers);
return new BroadcastAction("Tournament " + getTournamentName() + " is finished.", activePlayers); return new BroadcastAction("Tournament " + getTournamentName() + " is finished.", activePlayers);