Bugfix - max player validation; Added - weekly draft tournament; Removed - immediately recurring constructed queues
This commit is contained in:
@@ -249,7 +249,7 @@ public class TournamentRequestHandler extends LotroServerRequestHandler implemen
|
|||||||
var tableDraftDefinition = _tableDraftLibrary.getTableDraftDefinition(tableDraftFormatCodeStr);
|
var tableDraftDefinition = _tableDraftLibrary.getTableDraftDefinition(tableDraftFormatCodeStr);
|
||||||
Throw400IfValidationFails("tableDraftFormatCode", tableDraftFormatCodeStr,tableDraftDefinition != null);
|
Throw400IfValidationFails("tableDraftFormatCode", tableDraftFormatCodeStr,tableDraftDefinition != null);
|
||||||
//Check if all players can get to one table
|
//Check if all players can get to one table
|
||||||
Throw400IfValidationFails("maxPlayers", maxPlayersStr, tableDraftDefinition.getMaxPlayers() > maxPlayers);
|
Throw400IfValidationFails("maxPlayers", maxPlayersStr, tableDraftDefinition.getMaxPlayers() >= maxPlayers);
|
||||||
tableDraftParams.tableDraftFormatCode = tableDraftFormatCodeStr;
|
tableDraftParams.tableDraftFormatCode = tableDraftFormatCodeStr;
|
||||||
tableDraftParams.format = tableDraftDefinition.getFormat();
|
tableDraftParams.format = tableDraftDefinition.getFormat();
|
||||||
tableDraftParams.draftTimerType = DraftTimer.getTypeFromString(tableDraftTimer);
|
tableDraftParams.draftTimerType = DraftTimer.getTypeFromString(tableDraftTimer);
|
||||||
|
|||||||
@@ -915,6 +915,7 @@ var GempLotrHallUI = Class.extend({
|
|||||||
startTd +
|
startTd +
|
||||||
systemTd +
|
systemTd +
|
||||||
playersTd +
|
playersTd +
|
||||||
|
costPrizesTds +
|
||||||
"</tr>";
|
"</tr>";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -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 wc) {
|
boolean joinable, boolean startable, int readyCheckSecsRemaining, boolean confirmedReadyCheck, boolean wc, String draftCode) {
|
||||||
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);
|
||||||
@@ -125,8 +125,8 @@ public class HallCommunicationChannel implements LongPollableResource {
|
|||||||
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));
|
props.put("wc", String.valueOf(wc));
|
||||||
if (tournamentQueueKey.contains("table")) {
|
if (draftCode != null) {
|
||||||
props.put("draftCode", tournamentQueueKey.replace("_queue", ""));
|
props.put("draftCode", draftCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
tournamentQueuesOnServer.put(tournamentQueueKey, props);
|
tournamentQueuesOnServer.put(tournamentQueueKey, props);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ 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, boolean wc);
|
int readyCheckSecsRemaining, boolean confirmedReadyCheck, boolean wc, String draftCode);
|
||||||
|
|
||||||
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,
|
||||||
|
|||||||
@@ -420,4 +420,12 @@ public abstract class AbstractTournamentQueue implements TournamentQueue {
|
|||||||
public boolean isWC() {
|
public boolean isWC() {
|
||||||
return _tournamentInfo._params.wc;
|
return _tournamentInfo._params.wc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDraftCode() {
|
||||||
|
if (_tournamentInfo instanceof TableDraftTournamentInfo) {
|
||||||
|
return ((TableDraftTournamentInfo) _tournamentInfo).tableDraftDefinition.getCode();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,4 +54,6 @@ public interface TournamentQueue {
|
|||||||
boolean hasConfirmedReadyCheck(String player);
|
boolean hasConfirmedReadyCheck(String player);
|
||||||
|
|
||||||
boolean isWC();
|
boolean isWC();
|
||||||
|
|
||||||
|
String getDraftCode();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.gempukku.lotro.common.DBDefs;
|
|||||||
import com.gempukku.lotro.db.GameHistoryDAO;
|
import com.gempukku.lotro.db.GameHistoryDAO;
|
||||||
import com.gempukku.lotro.db.vo.CollectionType;
|
import com.gempukku.lotro.db.vo.CollectionType;
|
||||||
import com.gempukku.lotro.draft2.SoloDraftDefinitions;
|
import com.gempukku.lotro.draft2.SoloDraftDefinitions;
|
||||||
|
import com.gempukku.lotro.draft3.TableDraftDefinition;
|
||||||
import com.gempukku.lotro.draft3.TableDraftDefinitions;
|
import com.gempukku.lotro.draft3.TableDraftDefinitions;
|
||||||
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
|
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
|
||||||
import com.gempukku.lotro.game.Player;
|
import com.gempukku.lotro.game.Player;
|
||||||
@@ -71,16 +72,6 @@ public class TournamentService {
|
|||||||
return Tournament.getPairingMechanism(pairing);
|
return Tournament.getPairingMechanism(pairing);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addImmediateRecurringQueue(String queueId, String queueName, String prefix, String formatCode) {
|
|
||||||
TournamentQueueCallback callback = tournament -> _activeTournaments.put(tournament.getTournamentId(), tournament);
|
|
||||||
|
|
||||||
_tournamentQueues.put(queueId, new ImmediateRecurringQueue(this, queueId, queueName,
|
|
||||||
new TournamentInfo(this, _productLibrary, _formatLibrary, DateUtils.Today(),
|
|
||||||
new TournamentParams(prefix, queueName, formatCode, 1500, 4, Tournament.PairingType.SINGLE_ELIMINATION, Tournament.PrizeType.ON_DEMAND)),
|
|
||||||
callback, _collectionsManager)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addRecurringScheduledQueue(String queueId, String queueName, String time, String prefix, String formatCode) {
|
private void addRecurringScheduledQueue(String queueId, String queueName, String time, String prefix, String formatCode) {
|
||||||
TournamentQueueCallback callback = tournament -> _activeTournaments.put(tournament.getTournamentId(), tournament);
|
TournamentQueueCallback callback = tournament -> _activeTournaments.put(tournament.getTournamentId(), tournament);
|
||||||
|
|
||||||
@@ -90,6 +81,35 @@ public class TournamentService {
|
|||||||
_tournamentRepeatPeriod, callback, _collectionsManager));
|
_tournamentRepeatPeriod, callback, _collectionsManager));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addRecurringScheduledTableDraft(String queueId, String queueName, String time, Duration repeatPeriod, String prefix, String formatCode, int minPlayers) {
|
||||||
|
TournamentQueueCallback callback = tournament -> _activeTournaments.put(tournament.getTournamentId(), tournament);
|
||||||
|
|
||||||
|
TableDraftTournamentParams draftParams = new TableDraftTournamentParams();
|
||||||
|
draftParams.type = Tournament.TournamentType.TABLE_DRAFT;
|
||||||
|
|
||||||
|
draftParams.deckbuildingDuration = 15;
|
||||||
|
draftParams.turnInDuration = 2;
|
||||||
|
|
||||||
|
TableDraftDefinition tableDraft = _tableDraftLibrary.getTableDraftDefinition(formatCode);
|
||||||
|
draftParams.tableDraftFormatCode = formatCode;
|
||||||
|
draftParams.format = tableDraft.getFormat();
|
||||||
|
draftParams.draftTimerType = tableDraft.getRecommendedTimer();
|
||||||
|
draftParams.requiresDeck = false;
|
||||||
|
|
||||||
|
draftParams.tournamentId = prefix;
|
||||||
|
draftParams.name = queueName;
|
||||||
|
draftParams.cost = 0;
|
||||||
|
draftParams.minimumPlayers = minPlayers;
|
||||||
|
draftParams.maximumPlayers = tableDraft.getMaxPlayers();
|
||||||
|
draftParams.playoff = Tournament.PairingType.SWISS_3;
|
||||||
|
draftParams.prizes = Tournament.PrizeType.DAILY;
|
||||||
|
|
||||||
|
_tournamentQueues.put(queueId, new RecurringScheduledQueue(this, queueId, queueName,
|
||||||
|
new TableDraftTournamentInfo(this, _productLibrary, _formatLibrary, DateUtils.ParseStringDate(time),
|
||||||
|
draftParams, _tableDraftLibrary), repeatPeriod, callback, _collectionsManager)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public void reloadTournaments(TableHolder tables) {
|
public void reloadTournaments(TableHolder tables) {
|
||||||
_tables = tables;
|
_tables = tables;
|
||||||
reloadQueues();
|
reloadQueues();
|
||||||
@@ -108,6 +128,9 @@ public class TournamentService {
|
|||||||
addRecurringScheduledQueue("movie_daily_eu", "Daily Movie Block", "2013-01-16 19:30:00", "movieDailyEu-", "movie");
|
addRecurringScheduledQueue("movie_daily_eu", "Daily Movie Block", "2013-01-16 19:30:00", "movieDailyEu-", "movie");
|
||||||
addRecurringScheduledQueue("movie_daily_us", "Daily Movie Block", "2013-01-17 00:30:00", "movieDailyUs-", "movie");
|
addRecurringScheduledQueue("movie_daily_us", "Daily Movie Block", "2013-01-17 00:30:00", "movieDailyUs-", "movie");
|
||||||
|
|
||||||
|
addRecurringScheduledTableDraft("weekly_fotr_draft", "Weekly FotR Live Draft", "2025-06-14 17:00:00",
|
||||||
|
Duration.ofDays(7), "weeklyFotrDraft-", "fotr_power_table_draft", 4);
|
||||||
|
|
||||||
} catch (DateTimeParseException exp) {
|
} catch (DateTimeParseException exp) {
|
||||||
// Ignore, can't happen
|
// Ignore, can't happen
|
||||||
System.out.println(exp);
|
System.out.println(exp);
|
||||||
@@ -136,7 +159,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.isWC());
|
queue.getSecondsRemainingForReadyCheck(), queue.hasConfirmedReadyCheck(player.getName()), queue.isWC(), queue.getDraftCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var entry : _activeTournaments.entrySet()) {
|
for (var entry : _activeTournaments.entrySet()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user