mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
- Initial checkin for Tournaments with a (currently disabled) flag to make use of it in Quest Draft
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package forge.screens.home.quest;
|
||||
|
||||
import com.beust.jcommander.internal.Lists;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import forge.GuiBase;
|
||||
import forge.Singletons;
|
||||
@@ -36,6 +37,9 @@ import forge.toolbox.FOptionPane;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.toolbox.JXButtonPanel;
|
||||
import forge.tournament.system.TournamentBracket;
|
||||
import forge.tournament.system.TournamentPairing;
|
||||
import forge.tournament.system.TournamentPlayer;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.*;
|
||||
@@ -438,13 +442,17 @@ public enum CSubmenuQuestDraft implements ICDoc {
|
||||
}
|
||||
|
||||
private void updateTournamentActive() {
|
||||
|
||||
final VSubmenuQuestDraft view = VSubmenuQuestDraft.SINGLETON_INSTANCE;
|
||||
|
||||
if (FModel.getQuest().getAchievements().getCurrentDraft() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (QuestDraftUtils.TOURNAMENT_TOGGLE) {
|
||||
updateTournamentActiveForBracket();
|
||||
return;
|
||||
}
|
||||
|
||||
final VSubmenuQuestDraft view = VSubmenuQuestDraft.SINGLETON_INSTANCE;
|
||||
|
||||
for (int i = 0; i < 15; i++) {
|
||||
|
||||
String playerID = FModel.getQuest().getAchievements().getCurrentDraft().getStandings()[i];
|
||||
@@ -493,6 +501,82 @@ public enum CSubmenuQuestDraft implements ICDoc {
|
||||
|
||||
}
|
||||
|
||||
private void updateTournamentBoxLabel(String playerID, int iconID, int box, boolean first) {
|
||||
final VSubmenuQuestDraft view = VSubmenuQuestDraft.SINGLETON_INSTANCE;
|
||||
|
||||
SkinImage icon = FSkin.getAvatars().get(iconID);
|
||||
|
||||
if (icon == null) {
|
||||
icon = FSkin.getAvatars().get(0);
|
||||
}
|
||||
|
||||
if (first) {
|
||||
view.getLblsMatchups()[box].setPlayerOne(playerID, icon);
|
||||
} else {
|
||||
view.getLblsMatchups()[box].setPlayerTwo(playerID, icon);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateTournamentActiveForBracket() {
|
||||
final VSubmenuQuestDraft view = VSubmenuQuestDraft.SINGLETON_INSTANCE;
|
||||
|
||||
QuestEventDraft draft = FModel.getQuest().getAchievements().getCurrentDraft();
|
||||
TournamentBracket bracket = draft.getBracket();
|
||||
|
||||
if (bracket == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Combine finished pairings with active round pairings
|
||||
List<TournamentPairing> allPairings = Lists.newArrayList();
|
||||
allPairings.addAll(bracket.getCompletedPairings());
|
||||
allPairings.addAll(bracket.getActivePairings());
|
||||
|
||||
int count = 0;
|
||||
int playerCount = 0;
|
||||
int lastWinner = 0;
|
||||
for(TournamentPairing tp : allPairings) {
|
||||
boolean first = true;
|
||||
String playerID = "Undetermined";
|
||||
int iconID = 0;
|
||||
for(TournamentPlayer player : tp.getPairedPlayers()) {
|
||||
if (player.getIndex() == -1) {
|
||||
playerID = FModel.getPreferences().getPref(FPref.PLAYER_NAME);
|
||||
if (FModel.getPreferences().getPref(FPref.UI_AVATARS).split(",").length > 0) {
|
||||
iconID = Integer.parseInt(FModel.getPreferences().getPref(FPref.UI_AVATARS).split(",")[0]);
|
||||
}
|
||||
}
|
||||
else{
|
||||
playerID = player.getPlayer().getName();
|
||||
iconID = player.getIndex();
|
||||
}
|
||||
updateTournamentBoxLabel(playerID, iconID, count, first);
|
||||
|
||||
if (tp.getWinner() != null && tp.getWinner().equals(player)) {
|
||||
// Temporarily fill in winner box
|
||||
lastWinner = playerCount;
|
||||
updateTournamentBoxLabel(player.getPlayer().getName(), player.getIndex(), playerCount/4 + 4, count%2 == 0);
|
||||
}
|
||||
first = false;
|
||||
playerCount++;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
if (!bracket.isTournamentOver()) {
|
||||
for (int i = lastWinner/2+9 ; i < 15; i++) {
|
||||
String playerID = "Undetermined";
|
||||
int iconID = GuiBase.getInterface().getAvatarCount() - 1;
|
||||
updateTournamentBoxLabel(playerID, iconID, i / 2, i%2 == 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (draft.playerHasMatchesLeft()) {
|
||||
view.getBtnLeaveTournament().setText("Leave Tournament");
|
||||
} else {
|
||||
view.getBtnLeaveTournament().setText("Collect Prizes");
|
||||
}
|
||||
}
|
||||
|
||||
public void setCompletedDraft(final DeckGroup finishedDraft) {
|
||||
|
||||
QuestDraftUtils.completeDraft(finishedDraft);
|
||||
@@ -587,7 +671,6 @@ public enum CSubmenuQuestDraft implements ICDoc {
|
||||
|
||||
gui = GuiBase.getInterface().getNewGuiGame();
|
||||
QuestDraftUtils.startNextMatch(gui);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ public class QuestDraftWinLose extends ControlWinLose {
|
||||
final String winner = lastGame.getWinningPlayerName();
|
||||
quest.getAchievements().getCurrentDraft().setWinner(winner);
|
||||
quest.save();
|
||||
VSubmenuQuestDraft.SINGLETON_INSTANCE.populate();
|
||||
}
|
||||
|
||||
if (!gameHadHumanPlayer) {
|
||||
|
||||
Reference in New Issue
Block a user