diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java
index 5a639a5a3..422c16a39 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java
+++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java
@@ -982,7 +982,7 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
int minPlayers = Throw400IfNullOrNonInteger("minPlayers", minPlayersStr);
boolean manualKickoff = ParseBoolean("manualKickoff", manualKickoffStr, false);
- if(wc) {
+ if (wc) {
tournamentId = DateUtils.Now().getYear() + "-wc-" + tournamentId;
}
@@ -1071,6 +1071,10 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
params.minimumPlayers = minPlayers;
params.manualKickoff = manualKickoff;
+ if (wc) {
+ params.wc = true;
+ }
+
TournamentInfo info;
if(type == Tournament.TournamentType.SEALED) {
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 bf2f63f5b..1fe259231 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
@@ -404,7 +404,7 @@ var GempLotrHallUI = Class.extend({
for (var i = 0; i < queues.length; i++) {
var queue = queues[i];
var id = queue.getAttribute("id");
- var isWC = id.toLowerCase().includes("wc");
+ var isWC = queue.getAttribute("wc") == "true";
var action = queue.getAttribute("action");
if (action == "add" || action == "update") {
var actionsField = $("
| ");
@@ -660,7 +660,7 @@ var GempLotrHallUI = Class.extend({
for (var i = 0; i < tournaments.length; i++) {
var tournament = tournaments[i];
var id = tournament.getAttribute("id");
- var isWC = id.toLowerCase().includes("wc");
+ var isWC = tournament.getAttribute("wc") == "true";
var action = tournament.getAttribute("action");
var type = tournament.getAttribute("type");
if(type !== null)
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java
index fc6615151..9a40b261a 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java
@@ -107,7 +107,7 @@ public class HallCommunicationChannel implements LongPollableResource {
@Override
public void visitTournamentQueue(String tournamentQueueKey, int cost, String collectionName, String formatName, String type, String tournamentQueueName,
String tournamentPrizes, String pairingDescription, String startCondition, int playerCount, String playerList, boolean playerSignedUp,
- boolean joinable, boolean startable, int readyCheckSecsRemaining, boolean confirmedReadyCheck) {
+ boolean joinable, boolean startable, int readyCheckSecsRemaining, boolean confirmedReadyCheck, boolean wc) {
Map props = new HashMap<>();
props.put("cost", String.valueOf(cost));
props.put("collection", collectionName);
@@ -124,6 +124,7 @@ public class HallCommunicationChannel implements LongPollableResource {
props.put("startable", String.valueOf(startable));
props.put("readyCheckSecsRemaining", String.valueOf(readyCheckSecsRemaining));
props.put("confirmedReadyCheck", String.valueOf(confirmedReadyCheck));
+ props.put("wc", String.valueOf(wc));
if (tournamentQueueKey.contains("table")) {
props.put("draftCode", tournamentQueueKey.replace("_queue", ""));
}
@@ -134,7 +135,7 @@ public class HallCommunicationChannel implements LongPollableResource {
@Override
public void visitTournament(String tournamentKey, String collectionName, String formatName, String tournamentName, String type, String pairingDescription,
String tournamentStage, int round, int playerCount, String playerList, boolean playerInCompetition, boolean abandoned, boolean joinable,
- long secsRemaining) {
+ long secsRemaining, boolean wc) {
Map props = new HashMap<>();
props.put("collection", collectionName);
props.put("format", formatName);
@@ -148,6 +149,7 @@ public class HallCommunicationChannel implements LongPollableResource {
props.put("signedUp", String.valueOf(playerInCompetition));
props.put("abandoned", String.valueOf(abandoned));
props.put("joinable", String.valueOf(joinable));
+ props.put("wc", String.valueOf(wc));
if (secsRemaining >= 0) {
props.put("timeRemaining", DateUtils.HumanDuration(Duration.ofSeconds(secsRemaining)));
}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallInfoVisitor.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallInfoVisitor.java
index a7abe541a..7e77e1ef8 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallInfoVisitor.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallInfoVisitor.java
@@ -15,11 +15,11 @@ public interface HallInfoVisitor {
public void visitTournamentQueue(String tournamentQueueKey, int cost, String collectionName, String formatName, String type, String tournamentQueueName, String tournamentPrizes,
String pairingDescription, String startCondition, int playerCount, String playerList, boolean playerSignedUp, boolean joinable, boolean startable,
- int readyCheckSecsRemaining, boolean confirmedReadyCheck);
+ int readyCheckSecsRemaining, boolean confirmedReadyCheck, boolean wc);
public void visitTournament(String tournamentKey, String collectionName, String formatName, String tournamentName, String type,
String pairingDescription, String tournamentStage, int round, int playerCount, String playerList, boolean playerInCompetition, boolean abandoned, boolean joinable,
- long secsRemaining);
+ long secsRemaining, boolean wc);
public void runningPlayerGame(String gameId);
}
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 34a0e0a32..127ede121 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
@@ -911,9 +911,7 @@ public class HallServer extends AbstractServer {
public class HallTournamentCallback implements TournamentCallback {
private final String tournamentId;
private final String tournamentName;
- private final GameSettings tournamentGameSettings;
-
- private final GameSettings wcGameSettings;
+ private final GameSettings gameSettings;
private HallTournamentCallback(Tournament tournament) {
tournamentId = tournament.getTournamentId();
@@ -921,13 +919,16 @@ public class HallServer extends AbstractServer {
// Tournaments with no prizes and no entry are not competitive
boolean casual = tournament.getInfo().Parameters().prizes == Tournament.PrizeType.NONE
&& tournament.getInfo().Parameters().cost == 0;
- tournamentGameSettings = new GameSettings(null, _formatLibrary.getFormat(tournament.getFormatCode()),
- tournamentId, null, null, !casual, !casual, false,
- false, GameTimer.TOURNAMENT_TIMER, null);
- wcGameSettings = new GameSettings(null, _formatLibrary.getFormat(tournament.getFormatCode()),
- tournamentId, null, null, true, true, false,
- false, GameTimer.CHAMPIONSHIP_TIMER, null);
+ if (tournament.isWC()) {
+ gameSettings = new GameSettings(null, _formatLibrary.getFormat(tournament.getFormatCode()),
+ tournamentId, null, null, true, true, false,
+ false, GameTimer.CHAMPIONSHIP_TIMER, null);
+ } else {
+ gameSettings = new GameSettings(null, _formatLibrary.getFormat(tournament.getFormatCode()),
+ tournamentId, null, null, !casual, !casual, false,
+ false, GameTimer.TOURNAMENT_TIMER, null);
+ }
}
@Override
@@ -942,11 +943,7 @@ public class HallServer extends AbstractServer {
_hallDataAccessLock.writeLock().lock();
try {
if (!_shutdown) {
- var settings = tournamentGameSettings;
- if (tournamentId.toLowerCase().contains("wc")) {
- settings = wcGameSettings;
- }
- final GameTable gameTable = tableHolder.setupTournamentTable(settings, participants);
+ final GameTable gameTable = tableHolder.setupTournamentTable(gameSettings, participants);
final LotroGameMediator mediator = createGameMediator(participants,
new GameResultListener() {
@Override
@@ -958,7 +955,7 @@ public class HallServer extends AbstractServer {
public void gameCancelled() {
createGameInternal(participants);
}
- }, tournamentName, settings);
+ }, tournamentName, gameSettings);
gameTable.startGame(mediator);
}
} finally {
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournamentQueue.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournamentQueue.java
index c083c1679..1f16a293f 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournamentQueue.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournamentQueue.java
@@ -395,4 +395,9 @@ public abstract class AbstractTournamentQueue implements TournamentQueue {
readyCheckTask = null;
}
}
+
+ @Override
+ public boolean isWC() {
+ return _tournamentInfo._params.wc;
+ }
}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/BaseTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/BaseTournament.java
index e2fa9de02..118a26b5f 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/BaseTournament.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/BaseTournament.java
@@ -558,4 +558,9 @@ public abstract class BaseTournament implements Tournament {
writeLock.unlock();
}
}
+
+ @Override
+ public boolean isWC() {
+ return _tournamentInfo._params.wc;
+ }
}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ConstructedTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ConstructedTournament.java
index cd3f1e69d..3f6de74c0 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ConstructedTournament.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/ConstructedTournament.java
@@ -136,4 +136,12 @@ public class ConstructedTournament extends BaseTournament implements Tournament
getTournamentStage() == Tournament.Stage.PAUSED || getTournamentStage() == Tournament.Stage.AWAITING_KICKOFF)
&& (maximumPlayers > activePlayers.size() || maximumPlayers < 0);
}
+
+ @Override
+ public String getTableDescription() {
+ if (isWC()) {
+ return DateUtils.Now().getYear() + " World Championship";
+ }
+ return null;
+ }
}
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 65e1112e4..c7dd774f3 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
@@ -58,7 +58,7 @@ public class ScheduledTournamentQueue extends AbstractTournamentQueue implements
@Override
public boolean isJoinable() {
var window = _signupTimeBeforeStart;
- if (_tournamentInfo.Parameters().tournamentId.toLowerCase().contains("wc")) {
+ if (isWC()) {
window = _wcSignupTimeBeforeStart;
}
return DateUtils.Now().isAfter(_startTime.minus(window)) && (maximumPlayers < 0 || _players.size() < maximumPlayers);
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 fef2956bd..5dc109074 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
@@ -209,4 +209,6 @@ public interface Tournament {
boolean join(String playerName, LotroDeck lotroDeck);
long getSecondsRemaining() throws IllegalStateException;
String getTableDescription();
+
+ boolean isWC();
}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentParams.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentParams.java
index 8b048bc61..c7c2752cd 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentParams.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentParams.java
@@ -1,9 +1,6 @@
package com.gempukku.lotro.tournament;
-import com.gempukku.lotro.game.LotroFormat;
-
import java.time.LocalDateTime;
-import java.time.ZonedDateTime;
public class TournamentParams {
public String tournamentId;
@@ -21,6 +18,8 @@ public class TournamentParams {
public int maximumPlayers = -1; // Negative value = no maximum set
public Tournament.PrizeType prizes = Tournament.PrizeType.NONE;
+ public boolean wc = false;
+
public Tournament.Stage getInitialStage() {
if(manualKickoff)
return Tournament.Stage.AWAITING_KICKOFF;
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java
index a16642df0..592f6fa4c 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java
@@ -50,4 +50,6 @@ public interface TournamentQueue {
boolean confirmReadyCheck(String player);
boolean hasConfirmedReadyCheck(String player);
+
+ boolean isWC();
}
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 7f67e87e1..8358b3790 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
@@ -253,7 +253,7 @@ public class TournamentService {
formatLibrary.getFormat(queue.getFormatCode()).getName(), queue.getInfo().Parameters().type.toString(), queue.getTournamentQueueName(),
queue.getPrizesDescription(), queue.getPairingDescription(), queue.getStartCondition(),
queue.getPlayerCount(), queue.getPlayerList(), queue.isPlayerSignedUp(player.getName()), queue.isJoinable(), queue.isStartable(player.getName()),
- queue.getSecondsRemainingForReadyCheck(), queue.hasConfirmedReadyCheck(player.getName()));
+ queue.getSecondsRemainingForReadyCheck(), queue.hasConfirmedReadyCheck(player.getName()), queue.isWC());
}
for (var entry : _activeTournaments.entrySet()) {
@@ -269,7 +269,7 @@ public class TournamentService {
formatLibrary.getFormat(tournament.getFormatCode()).getName(), tournament.getTournamentName(), tournament.getInfo().Parameters().type.toString(), tournament.getPlayOffSystem(),
tournament.getTournamentStage().getHumanReadable(),
tournament.getCurrentRound(), tournament.getPlayersInCompetitionCount(), tournament.getPlayerList(), tournament.isPlayerInCompetition(player.getName()), tournament.isPlayerAbandoned(player.getName()),
- tournament.isJoinable(), secsRemaining);
+ tournament.isJoinable(), secsRemaining, tournament.isWC());
}
}