public void updateDeck(Deck deck) { if (this.deck != null) { // preserver deck name, important for Tiny Leaders format deck.setName(this.getDeck().getName()); // preserve the original deck hash code before sideboarding to give no information if cards were swapped deck.setDeckHashCode(this.getDeck().getDeckHashCode()); } this.deck = deck; }
@Override public void submitDeck(UUID playerId, Deck deck) { MatchPlayer player = getPlayer(playerId); if (player != null) { // make sure the deck name (needed for Tiny Leaders) won't get lost by sideboarding deck.setName(player.getDeck().getName()); deck.setDeckHashCode(player.getDeck().getDeckHashCode()); player.submitDeck(deck); } synchronized (this) { this.notifyAll(); } }
protected String createGameStartMessage() { StringBuilder sb = new StringBuilder(); sb.append("<br/><b>Match score:</b><br/>"); for (MatchPlayer mp : this.getPlayers()) { sb.append(" ").append(mp.getPlayer().getLogName()); sb.append(" - ").append(mp.getWins()).append(mp.getWins() == 1 ? " win" : " wins"); if (mp.hasQuit()) { sb.append(" QUITTED"); } sb.append("<br/>"); if (mp.getDeck() != null) { sb.append("DeckHash: ").append(mp.getDeck().getDeckHashCode()).append("<br/>"); } } if (getDraws() > 0) { sb.append(" Draws: ").append(getDraws()).append("<br/>"); } if (options.getRange() != null) { sb.append(" Range: ").append(options.getRange().toString()).append("<br/>"); } sb.append("<br/>").append("Match is ").append(this.getOptions().isRated() ? "" : "not ").append("rated<br/>"); sb.append("You have to win ").append(this.getWinsNeeded()).append(this.getWinsNeeded() == 1 ? " game" : " games").append(" to win the complete match<br/>"); sb.append("<br/>Game has started<br/><br/>"); return sb.toString(); }
private void viewLimitedDeck(UUID userIdRequester, UUID origId) { Player viewLimitedDeckPlayer = game.getPlayer(userIdRequester); if (viewLimitedDeckPlayer != null) { if (viewLimitedDeckPlayer.isHuman()) { for (MatchPlayer p : TableManager.instance.getTable(tableId).getMatch().getPlayers()) { if (p.getPlayer().getId().equals(userIdRequester)) { Optional<User> u = UserManager.instance.getUser(origId); if (u.isPresent() && p.getDeck() != null) { u.get().ccViewLimitedDeck(p.getDeck(), tableId, requestsOpen, true); } } } } } }
@Override public boolean updateDeck(UUID playerId, Deck deck) { boolean validDeck = true; MatchPlayer player = getPlayer(playerId); if (player != null) { // Check if the cards included in the deck are the same as in the original deck validDeck = (player.getDeck().getDeckCompleteHashCode() == deck.getDeckCompleteHashCode()); if (validDeck == false) { deck.getCards().clear(); // Clear the deck so the player cheating looses the game } player.updateDeck(deck); } return validDeck; }
@Override public void sideboard() { for (MatchPlayer player : this.players) { if (!player.hasQuit()) { if (player.getDeck() != null) { player.setSideboarding(); player.getPlayer().sideboard(this, player.getDeck()); } else { logger.error("Player " + player.getName() + " has no deck: " + player.getPlayer().getId()); } } } synchronized (this) { while (!isDoneSideboarding()) { try { this.wait(); } catch (InterruptedException ex) { } } } }
protected void initGame(Game game) throws GameException { addGame(); // raises only the number shufflePlayers(); for (MatchPlayer matchPlayer : this.players) { if (!matchPlayer.hasQuit() && matchPlayer.getDeck() != null) { matchPlayer.getPlayer().init(game); game.loadCards(matchPlayer.getDeck().getCards(), matchPlayer.getPlayer().getId()); game.loadCards(matchPlayer.getDeck().getSideboard(), matchPlayer.getPlayer().getId()); game.addPlayer(matchPlayer.getPlayer(), matchPlayer.getDeck()); // set the priority time left for the match if (games.isEmpty()) { // first game full time matchPlayer.getPlayer().setPriorityTimeLeft(options.getPriorityTime()); } else { if (matchPlayer.getPriorityTimeLeft() > 0) { matchPlayer.getPlayer().setPriorityTimeLeft(matchPlayer.getPriorityTimeLeft()); } } } else { if (matchPlayer.getDeck() == null) { logger.error("Match: " + this.getId() + " " + matchPlayer.getName() + " has no deck."); } } } game.setPriorityTime(options.getPriorityTime()); }
MatchPlayer mPlayer = table.getMatch().getPlayer(playerId); if (mPlayer != null) { deck.setName(mPlayer.getDeck().getName());
if (!matchPlayer.isDoneSideboarding()) { matchPlayer.submitDeck(matchPlayer.getDeck());
Player player = getPlayer(playerId); if (player != null) { Card commander = getCommanderCard(player.getMatchPlayer().getDeck().getName(), player.getId()); if (commander != null) { Set<Card> cards = new HashSet<>(); watcher.addCardInfoToCommander(this); } else { throw new UnknownError("Commander card could not be created. Name: [" + player.getMatchPlayer().getDeck().getName() + ']');