From 3609f3c735382ca026de64af7fb6a2d38ff4add5 Mon Sep 17 00:00:00 2001 From: "jakub.salavec" Date: Wed, 19 Feb 2025 14:59:58 +0100 Subject: [PATCH] Tournaments 1v1 are not private, and they move to game faster if both players submitted a deck --- .../src/main/web/js/gemp-022/hallUi.js | 6 +++--- .../com/gempukku/lotro/hall/HallServer.java | 4 +++- .../lotro/tournament/SealedTournament.java | 17 +++++++++++++++-- .../lotro/tournament/SoloDraftTournament.java | 17 +++++++++++++++-- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hallUi.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hallUi.js index 4918721cd..01eca77ff 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hallUi.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hallUi.js @@ -416,20 +416,20 @@ var GempLotrHallUI = Class.extend({ if(result) { that.inTournament = true; let message = "You have signed up to participate in the " + queueName - + " tournament.

You will use a snapshot of your '" + deck +"' deck as it is right now. " + + + " tournament.

You will use a snapshot of your '" + deck +"' deck as it is right now. " + "If you need to change or update your deck, you will need to leave the queue and rejoin.

" + "The first game begins at " + queueStart + ". Good luck!"; if(type === "sealed") { message = "You have signed up to participate in the " + queueName - + " tournament.

When the event begins, you will be issued sealed packs to open and make a deck. " + + + " tournament.

When the event begins, you will be issued sealed packs to open and make a deck. " + "At any time during the deckbuilding phase and for a short time after it ends, you will need to lock-in your deck before the tournament begins.

" + "Deckbuilding begins at " + queueStart + ". Good luck!"; } if(type === "solodraft") { message = "You have signed up to participate in the " + queueName - + " tournament.

When the event begins, use the 'Go to Draft' button in the Active Tournaments Section, and then build your deck in the Deck Builder." + + + " tournament.

When the event begins, use the 'Go to Draft' button in the Active Tournaments Section, and then build your deck in the Deck Builder. " + "At any time during the deckbuilding phase and for a short time after it ends, you will need to lock-in your deck before the tournament begins.

" + "Deckbuilding begins at " + queueStart + ". Good luck!"; } 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 7813b19f7..0191e3637 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 @@ -867,8 +867,10 @@ public class HallServer extends AbstractServer { private HallTournamentCallback(Tournament tournament) { tournamentId = tournament.getTournamentId(); tournamentName = tournament.getTournamentName(); + // Tournaments with just 2 players can be spectated + boolean privateGame = tournament.getPlayersInCompetitionCount() != 2; tournamentGameSettings = new GameSettings(null, _formatLibrary.getFormat(tournament.getFormatCode()), - tournamentId, null, null, true, true, false, + tournamentId, null, null, true, privateGame, false, false, GameTimer.TOURNAMENT_TIMER, null); wcGameSettings = new GameSettings(null, _formatLibrary.getFormat(tournament.getFormatCode()), diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SealedTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SealedTournament.java index 9d01f8b6d..10d764c41 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SealedTournament.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SealedTournament.java @@ -7,10 +7,8 @@ import com.gempukku.lotro.draft.Draft; import com.gempukku.lotro.draft2.SoloDraftDefinitions; import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.DefaultCardCollection; -import com.gempukku.lotro.game.Player; import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.hall.TableHolder; -import com.gempukku.lotro.league.LeagueSerieInfo; import com.gempukku.lotro.logic.vo.LotroDeck; import com.gempukku.lotro.packs.ProductLibrary; import com.gempukku.lotro.tournament.action.BroadcastAction; @@ -47,6 +45,21 @@ public class SealedTournament extends BaseTournament implements Tournament { && _players.contains(player)) { _tournamentService.updateRecordedPlayerDeck(_tournamentId, player, deck); _playerDecks.put(player, deck); + + // If 1v1 and both registered the deck, skip the wait and start playing + var players = _tournamentService.retrieveTournamentPlayers(_tournamentId); + boolean everyoneSubmitted = true; + for(var playerName : players) { + var registeredDeck = getPlayerDeck(playerName); + if(registeredDeck == null || StringUtils.isEmpty(registeredDeck.getDeckName())) { + everyoneSubmitted = false; + } + } + if (players.size() == 2 && everyoneSubmitted) { + _tournamentInfo.Stage = _sealedInfo.PostRegistrationStage(); + _tournamentService.recordTournamentStage(_tournamentId, getTournamentStage()); + } + return true; } return false; diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SoloDraftTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SoloDraftTournament.java index e6a4a519d..8d80f7553 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SoloDraftTournament.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SoloDraftTournament.java @@ -27,8 +27,6 @@ public class SoloDraftTournament extends BaseTournament implements Tournament { private static final int HIGH_ENOUGH_PRIME_NUMBER = 8963; private SoloDraftTournamentInfo _soloDraftInfo; - private long _deckBuildStartTime; - public SoloDraftTournament(TournamentService tournamentService, CollectionsManager collectionsManager, ProductLibrary productLibrary, LotroFormatLibrary formatLibrary, SoloDraftDefinitions soloDraftDefinitions, TableHolder tables, String tournamentId) { super(tournamentService, collectionsManager, productLibrary, formatLibrary, soloDraftDefinitions, tables, tournamentId); @@ -51,6 +49,21 @@ public class SoloDraftTournament extends BaseTournament implements Tournament { && _players.contains(player)) { _tournamentService.updateRecordedPlayerDeck(_tournamentId, player, deck); _playerDecks.put(player, deck); + + // If 1v1 and both registered the deck, skip the wait and start playing + var players = _tournamentService.retrieveTournamentPlayers(_tournamentId); + boolean everyoneSubmitted = true; + for(var playerName : players) { + var registeredDeck = getPlayerDeck(playerName); + if(registeredDeck == null || StringUtils.isEmpty(registeredDeck.getDeckName())) { + everyoneSubmitted = false; + } + } + if (players.size() == 2 && everyoneSubmitted) { + _tournamentInfo.Stage = _soloDraftInfo.PostRegistrationStage(); + _tournamentService.recordTournamentStage(_tournamentId, getTournamentStage()); + } + return true; } return false;