Modified - wc attribute is now part of TournamentParams
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 = $("<td></td>");
|
||||
@@ -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)
|
||||
|
||||
@@ -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<String, String> 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<String, String> 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)));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -395,4 +395,9 @@ public abstract class AbstractTournamentQueue implements TournamentQueue {
|
||||
readyCheckTask = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWC() {
|
||||
return _tournamentInfo._params.wc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -558,4 +558,9 @@ public abstract class BaseTournament implements Tournament {
|
||||
writeLock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWC() {
|
||||
return _tournamentInfo._params.wc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -209,4 +209,6 @@ public interface Tournament {
|
||||
boolean join(String playerName, LotroDeck lotroDeck);
|
||||
long getSecondsRemaining() throws IllegalStateException;
|
||||
String getTableDescription();
|
||||
|
||||
boolean isWC();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -50,4 +50,6 @@ public interface TournamentQueue {
|
||||
boolean confirmReadyCheck(String player);
|
||||
|
||||
boolean hasConfirmedReadyCheck(String player);
|
||||
|
||||
boolean isWC();
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user