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 12e3ef2e2..5639dfc93 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 @@ -65,7 +65,7 @@ public class DefaultTournament implements Tournament { public DefaultTournament(TournamentService tournamentService, String tournamentId, String tournamentName, String format, CollectionType collectionType, - int tournamentRound, Stage tournamentStage, + int tournamentRound, Stage tournamentStage, PairingMechanism pairingMechanism, TournamentPrizes tournamentPrizes, CollectionsManager collectionsManager, ProductLibrary productLibrary, DraftPack draftPack) { _tournamentService = tournamentService; @@ -107,6 +107,8 @@ public class DefaultTournament implements Tournament { _players); } else if (_tournamentStage == Stage.DECK_BUILDING) { _deckBuildStartTime = System.currentTimeMillis(); + } else if (_tournamentStage == Stage.AWAITING_KICKOFF || _tournamentStage == Stage.PAUSED) { + } else if (_tournamentStage == Stage.FINISHED) { _finishedTournamentMatches.addAll(_tournamentService.getMatches(_tournamentId)); } @@ -314,7 +316,12 @@ public class DefaultTournament implements Tournament { result.add(new BroadcastAction("Deck building in tournament " + _tournamentName + " has finished")); } } - if (_tournamentStage == Stage.PLAYING_GAMES) { + if (_tournamentStage == Stage.AWAITING_KICKOFF || _tournamentStage == Stage.PAUSED) { + + } else if (_tournamentStage == Stage.PREPARING) { + _tournamentStage = Stage.PLAYING_GAMES; + _tournamentService.updateTournamentStage(_tournamentId, _tournamentStage); + } else if (_tournamentStage == Stage.PLAYING_GAMES) { if (_currentlyPlayingPlayers.isEmpty()) { if (_pairingMechanism.isFinished(_tournamentRound, _players, _droppedPlayers)) { result.add(finishTournament(collectionsManager)); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ImmediateRecurringQueue.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ImmediateRecurringQueue.java index 1ca7e3553..56e8daed5 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ImmediateRecurringQueue.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ImmediateRecurringQueue.java @@ -46,7 +46,7 @@ public class ImmediateRecurringQueue extends AbstractTournamentQueue implements } var info = new TournamentInfo(tournamentId, null, tournamentName, _format, ZonedDateTime.now(), - _collectionType, Tournament.Stage.PLAYING_GAMES, 0, + _collectionType, Tournament.Stage.PLAYING_GAMES, 0, false, Tournament.getPairingMechanism("singleElimination"), _tournamentPrizes); var tournament = _tournamentService.addTournament(info); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/RecurringScheduledQueue.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/RecurringScheduledQueue.java index 6ecba832c..71c472ec1 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/RecurringScheduledQueue.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/RecurringScheduledQueue.java @@ -71,7 +71,7 @@ public class RecurringScheduledQueue extends AbstractTournamentQueue implements _tournamentService.addPlayer(tournamentId, player, _playerDecks.get(player)); var info = new TournamentInfo(tournamentId, null, tournamentName, _format, ZonedDateTime.now(), - _collectionType, Tournament.Stage.PLAYING_GAMES, 0, + _collectionType, Tournament.Stage.PLAYING_GAMES, 0, false, _pairingMechanism, _tournamentPrizes); var tournament = _tournamentService.addTournament(info); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ScheduledTournamentQueue.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ScheduledTournamentQueue.java index 4fe32ee57..7321d5b63 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ScheduledTournamentQueue.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ScheduledTournamentQueue.java @@ -35,7 +35,11 @@ public class ScheduledTournamentQueue extends AbstractTournamentQueue implements _startCondition = "at " + _startTime.format(DateUtils.DateTimeFormat); _minimumPlayers = info.minimum_players; - _stage = Tournament.Stage.PLAYING_GAMES; + if (info.manual_kickoff) { + _stage = Tournament.Stage.AWAITING_KICKOFF; + } else { + _stage = Tournament.Stage.PLAYING_GAMES; + } } @Override @@ -62,7 +66,7 @@ public class ScheduledTournamentQueue extends AbstractTournamentQueue implements _tournamentService.addPlayer(_scheduledTournamentId, player, _playerDecks.get(player)); var info = new TournamentInfo(_scheduledTournamentId, null, _tournamentName, _format, ZonedDateTime.now(), - _collectionType, _stage, 0, + _collectionType, _stage, 0, false, _pairingMechanism, _tournamentPrizes); var tournament = _tournamentService.addTournament(info); 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 c3d7b1f72..1ebb1a679 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 @@ -6,6 +6,9 @@ import com.gempukku.lotro.competitive.PlayerStanding; import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.draft.Draft; import com.gempukku.lotro.game.CardNotFoundException; +import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.gempukku.lotro.game.SortAndFilterCards; +import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.logic.vo.LotroDeck; import com.gempukku.lotro.packs.ProductLibrary; import com.gempukku.lotro.tournament.action.TournamentProcessAction; @@ -16,6 +19,9 @@ public interface Tournament { public enum Stage { DRAFT("Drafting"), DECK_BUILDING("Deck building"), + AWAITING_KICKOFF("Awaiting kickoff"), + PAUSED("Paused"), + PREPARING("Preparing"), PLAYING_GAMES("Playing games"), FINISHED("Finished"); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentInfo.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentInfo.java index 633c02d44..d485d47c2 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentInfo.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentInfo.java @@ -10,21 +10,21 @@ import java.util.List; public record TournamentInfo(String tournamentId, String draftType, String name, String format, ZonedDateTime startDate, CollectionType collectionType, - Tournament.Stage tournamentStage, int round, + Tournament.Stage tournamentStage, int round, boolean manualKickoff, PairingMechanism pairingMechanism, TournamentPrizes prizesScheme ) { public TournamentInfo(ProductLibrary library, DBDefs.Tournament info) { this(info.tournament_id, info.draft_type, info.name, info.format, info.GetUTCStartDate(), CollectionType.parseCollectionCode(info.collection), Tournament.Stage.parseStage(info.stage), - info.round, Tournament.getPairingMechanism(info.pairing), + info.round, info.manual_kickoff, Tournament.getPairingMechanism(info.pairing), Tournament.getTournamentPrizes(library, info.prizes)); } public TournamentInfo(ProductLibrary library, DBDefs.ScheduledTournament info) { this(info.tournament_id, null, info.name, info.format, info.GetUTCStartDate(), - CollectionType.ALL_CARDS, Tournament.Stage.PLAYING_GAMES, - 0, Tournament.getPairingMechanism(info.playoff), + CollectionType.ALL_CARDS, info.manual_kickoff ? Tournament.Stage.AWAITING_KICKOFF : Tournament.Stage.PLAYING_GAMES, + 0, info.manual_kickoff, Tournament.getPairingMechanism(info.playoff), Tournament.getTournamentPrizes(library, info.prizes)); } @@ -38,6 +38,7 @@ public record TournamentInfo(String tournamentId, String draftType, String name, tourney.collection = this.collectionType.getCode(); tourney.stage = this.tournamentStage.getHumanReadable(); tourney.round = this.round; + tourney.manual_kickoff = this.manualKickoff; tourney.pairing = this.pairingMechanism.getRegistryRepresentation(); tourney.prizes = this.prizesScheme.getRegistryRepresentation(); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java index 4ace9a818..c7c3bb8a6 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java @@ -299,8 +299,8 @@ public class TournamentService { private Tournament createTournamentAndStoreInCache(TournamentInfo info) { Tournament tournament; try { - DraftPack draftPack = null; //The below appears to be half-finished and completely pointless +// DraftPack draftPack = null; // String draftType = info.getDraftType(); // if (draftType != null) // _draftPackStorage.getDraftPack(draftType); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/DefaultTournamentTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/DefaultTournamentTest.java index b95f6770b..7243229a8 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/DefaultTournamentTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/DefaultTournamentTest.java @@ -3,9 +3,7 @@ package com.gempukku.lotro.tournament; import com.gempukku.lotro.at.AbstractAtTest; import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.db.vo.CollectionType; -import com.gempukku.lotro.draft.DraftPack; import com.gempukku.lotro.logic.vo.LotroDeck; -import com.gempukku.lotro.packs.ProductLibrary; import com.gempukku.lotro.tournament.action.TournamentProcessAction; import org.junit.Test; import org.mockito.Mockito;