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);
|
int minPlayers = Throw400IfNullOrNonInteger("minPlayers", minPlayersStr);
|
||||||
boolean manualKickoff = ParseBoolean("manualKickoff", manualKickoffStr, false);
|
boolean manualKickoff = ParseBoolean("manualKickoff", manualKickoffStr, false);
|
||||||
|
|
||||||
if(wc) {
|
if (wc) {
|
||||||
tournamentId = DateUtils.Now().getYear() + "-wc-" + tournamentId;
|
tournamentId = DateUtils.Now().getYear() + "-wc-" + tournamentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1071,6 +1071,10 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
|
|||||||
params.minimumPlayers = minPlayers;
|
params.minimumPlayers = minPlayers;
|
||||||
params.manualKickoff = manualKickoff;
|
params.manualKickoff = manualKickoff;
|
||||||
|
|
||||||
|
if (wc) {
|
||||||
|
params.wc = true;
|
||||||
|
}
|
||||||
|
|
||||||
TournamentInfo info;
|
TournamentInfo info;
|
||||||
|
|
||||||
if(type == Tournament.TournamentType.SEALED) {
|
if(type == Tournament.TournamentType.SEALED) {
|
||||||
|
|||||||
@@ -404,7 +404,7 @@ var GempLotrHallUI = Class.extend({
|
|||||||
for (var i = 0; i < queues.length; i++) {
|
for (var i = 0; i < queues.length; i++) {
|
||||||
var queue = queues[i];
|
var queue = queues[i];
|
||||||
var id = queue.getAttribute("id");
|
var id = queue.getAttribute("id");
|
||||||
var isWC = id.toLowerCase().includes("wc");
|
var isWC = queue.getAttribute("wc") == "true";
|
||||||
var action = queue.getAttribute("action");
|
var action = queue.getAttribute("action");
|
||||||
if (action == "add" || action == "update") {
|
if (action == "add" || action == "update") {
|
||||||
var actionsField = $("<td></td>");
|
var actionsField = $("<td></td>");
|
||||||
@@ -660,7 +660,7 @@ var GempLotrHallUI = Class.extend({
|
|||||||
for (var i = 0; i < tournaments.length; i++) {
|
for (var i = 0; i < tournaments.length; i++) {
|
||||||
var tournament = tournaments[i];
|
var tournament = tournaments[i];
|
||||||
var id = tournament.getAttribute("id");
|
var id = tournament.getAttribute("id");
|
||||||
var isWC = id.toLowerCase().includes("wc");
|
var isWC = tournament.getAttribute("wc") == "true";
|
||||||
var action = tournament.getAttribute("action");
|
var action = tournament.getAttribute("action");
|
||||||
var type = tournament.getAttribute("type");
|
var type = tournament.getAttribute("type");
|
||||||
if(type !== null)
|
if(type !== null)
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ public class HallCommunicationChannel implements LongPollableResource {
|
|||||||
@Override
|
@Override
|
||||||
public void visitTournamentQueue(String tournamentQueueKey, int cost, String collectionName, String formatName, String type, String tournamentQueueName,
|
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,
|
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<>();
|
Map<String, String> props = new HashMap<>();
|
||||||
props.put("cost", String.valueOf(cost));
|
props.put("cost", String.valueOf(cost));
|
||||||
props.put("collection", collectionName);
|
props.put("collection", collectionName);
|
||||||
@@ -124,6 +124,7 @@ public class HallCommunicationChannel implements LongPollableResource {
|
|||||||
props.put("startable", String.valueOf(startable));
|
props.put("startable", String.valueOf(startable));
|
||||||
props.put("readyCheckSecsRemaining", String.valueOf(readyCheckSecsRemaining));
|
props.put("readyCheckSecsRemaining", String.valueOf(readyCheckSecsRemaining));
|
||||||
props.put("confirmedReadyCheck", String.valueOf(confirmedReadyCheck));
|
props.put("confirmedReadyCheck", String.valueOf(confirmedReadyCheck));
|
||||||
|
props.put("wc", String.valueOf(wc));
|
||||||
if (tournamentQueueKey.contains("table")) {
|
if (tournamentQueueKey.contains("table")) {
|
||||||
props.put("draftCode", tournamentQueueKey.replace("_queue", ""));
|
props.put("draftCode", tournamentQueueKey.replace("_queue", ""));
|
||||||
}
|
}
|
||||||
@@ -134,7 +135,7 @@ public class HallCommunicationChannel implements LongPollableResource {
|
|||||||
@Override
|
@Override
|
||||||
public void visitTournament(String tournamentKey, String collectionName, String formatName, String tournamentName, String type, String pairingDescription,
|
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,
|
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<>();
|
Map<String, String> props = new HashMap<>();
|
||||||
props.put("collection", collectionName);
|
props.put("collection", collectionName);
|
||||||
props.put("format", formatName);
|
props.put("format", formatName);
|
||||||
@@ -148,6 +149,7 @@ public class HallCommunicationChannel implements LongPollableResource {
|
|||||||
props.put("signedUp", String.valueOf(playerInCompetition));
|
props.put("signedUp", String.valueOf(playerInCompetition));
|
||||||
props.put("abandoned", String.valueOf(abandoned));
|
props.put("abandoned", String.valueOf(abandoned));
|
||||||
props.put("joinable", String.valueOf(joinable));
|
props.put("joinable", String.valueOf(joinable));
|
||||||
|
props.put("wc", String.valueOf(wc));
|
||||||
if (secsRemaining >= 0) {
|
if (secsRemaining >= 0) {
|
||||||
props.put("timeRemaining", DateUtils.HumanDuration(Duration.ofSeconds(secsRemaining)));
|
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,
|
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,
|
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,
|
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,
|
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);
|
public void runningPlayerGame(String gameId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -911,9 +911,7 @@ public class HallServer extends AbstractServer {
|
|||||||
public class HallTournamentCallback implements TournamentCallback {
|
public class HallTournamentCallback implements TournamentCallback {
|
||||||
private final String tournamentId;
|
private final String tournamentId;
|
||||||
private final String tournamentName;
|
private final String tournamentName;
|
||||||
private final GameSettings tournamentGameSettings;
|
private final GameSettings gameSettings;
|
||||||
|
|
||||||
private final GameSettings wcGameSettings;
|
|
||||||
|
|
||||||
private HallTournamentCallback(Tournament tournament) {
|
private HallTournamentCallback(Tournament tournament) {
|
||||||
tournamentId = tournament.getTournamentId();
|
tournamentId = tournament.getTournamentId();
|
||||||
@@ -921,13 +919,16 @@ public class HallServer extends AbstractServer {
|
|||||||
// Tournaments with no prizes and no entry are not competitive
|
// Tournaments with no prizes and no entry are not competitive
|
||||||
boolean casual = tournament.getInfo().Parameters().prizes == Tournament.PrizeType.NONE
|
boolean casual = tournament.getInfo().Parameters().prizes == Tournament.PrizeType.NONE
|
||||||
&& tournament.getInfo().Parameters().cost == 0;
|
&& 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()),
|
if (tournament.isWC()) {
|
||||||
tournamentId, null, null, true, true, false,
|
gameSettings = new GameSettings(null, _formatLibrary.getFormat(tournament.getFormatCode()),
|
||||||
false, GameTimer.CHAMPIONSHIP_TIMER, null);
|
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
|
@Override
|
||||||
@@ -942,11 +943,7 @@ public class HallServer extends AbstractServer {
|
|||||||
_hallDataAccessLock.writeLock().lock();
|
_hallDataAccessLock.writeLock().lock();
|
||||||
try {
|
try {
|
||||||
if (!_shutdown) {
|
if (!_shutdown) {
|
||||||
var settings = tournamentGameSettings;
|
final GameTable gameTable = tableHolder.setupTournamentTable(gameSettings, participants);
|
||||||
if (tournamentId.toLowerCase().contains("wc")) {
|
|
||||||
settings = wcGameSettings;
|
|
||||||
}
|
|
||||||
final GameTable gameTable = tableHolder.setupTournamentTable(settings, participants);
|
|
||||||
final LotroGameMediator mediator = createGameMediator(participants,
|
final LotroGameMediator mediator = createGameMediator(participants,
|
||||||
new GameResultListener() {
|
new GameResultListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -958,7 +955,7 @@ public class HallServer extends AbstractServer {
|
|||||||
public void gameCancelled() {
|
public void gameCancelled() {
|
||||||
createGameInternal(participants);
|
createGameInternal(participants);
|
||||||
}
|
}
|
||||||
}, tournamentName, settings);
|
}, tournamentName, gameSettings);
|
||||||
gameTable.startGame(mediator);
|
gameTable.startGame(mediator);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -395,4 +395,9 @@ public abstract class AbstractTournamentQueue implements TournamentQueue {
|
|||||||
readyCheckTask = null;
|
readyCheckTask = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWC() {
|
||||||
|
return _tournamentInfo._params.wc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -558,4 +558,9 @@ public abstract class BaseTournament implements Tournament {
|
|||||||
writeLock.unlock();
|
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)
|
getTournamentStage() == Tournament.Stage.PAUSED || getTournamentStage() == Tournament.Stage.AWAITING_KICKOFF)
|
||||||
&& (maximumPlayers > activePlayers.size() || maximumPlayers < 0);
|
&& (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
|
@Override
|
||||||
public boolean isJoinable() {
|
public boolean isJoinable() {
|
||||||
var window = _signupTimeBeforeStart;
|
var window = _signupTimeBeforeStart;
|
||||||
if (_tournamentInfo.Parameters().tournamentId.toLowerCase().contains("wc")) {
|
if (isWC()) {
|
||||||
window = _wcSignupTimeBeforeStart;
|
window = _wcSignupTimeBeforeStart;
|
||||||
}
|
}
|
||||||
return DateUtils.Now().isAfter(_startTime.minus(window)) && (maximumPlayers < 0 || _players.size() < maximumPlayers);
|
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);
|
boolean join(String playerName, LotroDeck lotroDeck);
|
||||||
long getSecondsRemaining() throws IllegalStateException;
|
long getSecondsRemaining() throws IllegalStateException;
|
||||||
String getTableDescription();
|
String getTableDescription();
|
||||||
|
|
||||||
|
boolean isWC();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package com.gempukku.lotro.tournament;
|
package com.gempukku.lotro.tournament;
|
||||||
|
|
||||||
import com.gempukku.lotro.game.LotroFormat;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
|
|
||||||
public class TournamentParams {
|
public class TournamentParams {
|
||||||
public String tournamentId;
|
public String tournamentId;
|
||||||
@@ -21,6 +18,8 @@ public class TournamentParams {
|
|||||||
public int maximumPlayers = -1; // Negative value = no maximum set
|
public int maximumPlayers = -1; // Negative value = no maximum set
|
||||||
public Tournament.PrizeType prizes = Tournament.PrizeType.NONE;
|
public Tournament.PrizeType prizes = Tournament.PrizeType.NONE;
|
||||||
|
|
||||||
|
public boolean wc = false;
|
||||||
|
|
||||||
public Tournament.Stage getInitialStage() {
|
public Tournament.Stage getInitialStage() {
|
||||||
if(manualKickoff)
|
if(manualKickoff)
|
||||||
return Tournament.Stage.AWAITING_KICKOFF;
|
return Tournament.Stage.AWAITING_KICKOFF;
|
||||||
|
|||||||
@@ -50,4 +50,6 @@ public interface TournamentQueue {
|
|||||||
boolean confirmReadyCheck(String player);
|
boolean confirmReadyCheck(String player);
|
||||||
|
|
||||||
boolean hasConfirmedReadyCheck(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(),
|
formatLibrary.getFormat(queue.getFormatCode()).getName(), queue.getInfo().Parameters().type.toString(), queue.getTournamentQueueName(),
|
||||||
queue.getPrizesDescription(), queue.getPairingDescription(), queue.getStartCondition(),
|
queue.getPrizesDescription(), queue.getPairingDescription(), queue.getStartCondition(),
|
||||||
queue.getPlayerCount(), queue.getPlayerList(), queue.isPlayerSignedUp(player.getName()), queue.isJoinable(), queue.isStartable(player.getName()),
|
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()) {
|
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(),
|
formatLibrary.getFormat(tournament.getFormatCode()).getName(), tournament.getTournamentName(), tournament.getInfo().Parameters().type.toString(), tournament.getPlayOffSystem(),
|
||||||
tournament.getTournamentStage().getHumanReadable(),
|
tournament.getTournamentStage().getHumanReadable(),
|
||||||
tournament.getCurrentRound(), tournament.getPlayersInCompetitionCount(), tournament.getPlayerList(), tournament.isPlayerInCompetition(player.getName()), tournament.isPlayerAbandoned(player.getName()),
|
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