From ed4fef0a25a539c7df3646bc6205e7b9be029c47 Mon Sep 17 00:00:00 2001 From: Hellfish Date: Fri, 30 Nov 2012 20:33:08 +0000 Subject: [PATCH] *Added [avatar] decksection (for deck-default vanguard avatars) --- src/main/java/forge/deck/Deck.java | 18 +++++++++ .../gui/home/variant/CSubmenuVanguard.java | 40 ++++++++++++++----- .../gui/home/variant/VSubmenuVanguard.java | 9 +++++ 3 files changed, 58 insertions(+), 9 deletions(-) diff --git a/src/main/java/forge/deck/Deck.java b/src/main/java/forge/deck/Deck.java index d25756ef0bf..65282633cec 100644 --- a/src/main/java/forge/deck/Deck.java +++ b/src/main/java/forge/deck/Deck.java @@ -63,6 +63,7 @@ public class Deck extends DeckBase { private final DeckSection main; private final DeckSection sideboard; + private CardPrinted avatar; private CardPrinted commander; private final DeckSection planes; private final DeckSection schemes; @@ -86,6 +87,7 @@ public class Deck extends DeckBase { super(name0); this.main = new DeckSection(); this.sideboard = new DeckSection(); + this.avatar = null; this.commander = null; this.planes = new DeckSection(); this.schemes = new DeckSection(); @@ -150,6 +152,8 @@ public class Deck extends DeckBase { final Deck result = (Deck) clone; result.main.addAll(this.main); result.sideboard.addAll(this.sideboard); + result.avatar = this.avatar; + result.commander = this.commander; } /* @@ -207,6 +211,9 @@ public class Deck extends DeckBase { List cmd = Deck.readCardList(sections.get("commander")); String cmdName = cmd.isEmpty() ? null : cmd.get(0); d.commander = CardDb.instance().isCardSupported(cmdName) ? CardDb.instance().getCard(cmdName) : null; + List av = Deck.readCardList(sections.get("avatar")); + String avName = av.isEmpty() ? null : av.get(0); + d.avatar = CardDb.instance().isCardSupported(avName) ? CardDb.instance().getCard(avName) : null; d.getPlanes().set(Deck.readCardList(sections.get("planes"))); d.getSchemes().set(Deck.readCardList(sections.get("schemes"))); return d; @@ -290,6 +297,10 @@ public class Deck extends DeckBase { out.add(String.format("%s", "[commander]")); out.add(Deck.serializeSingleCard(getCommander(), 1)); } + if (getAvatar() != null) { + out.add(String.format("%s", "[avatar]")); + out.add(Deck.serializeSingleCard(getAvatar(), 1)); + } out.add(String.format("%s", "[planes]")); out.addAll(Deck.writeCardPool(this.getPlanes())); @@ -424,6 +435,13 @@ public class Deck extends DeckBase { return schemes; } + /** + * @return the avatar + */ + public CardPrinted getAvatar() { + return avatar; + } + public static final Function FN_NAME_SELECTOR = new Function() { @Override public String apply(Deck arg1) { diff --git a/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java b/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java index 43bb1418776..4f183162366 100644 --- a/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java +++ b/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java @@ -115,6 +115,9 @@ public enum CSubmenuVanguard implements ICDoc { @Override public Object doInBackground() { Random rnd = new Random(); + String nl = System.getProperty("line.separator"); + boolean usedDefaults = false; + StringBuilder defaultAvatarInfo = new StringBuilder("The following decks will use a default avatar:" + nl); List playerDecks = new ArrayList(); for (int i = 0; i < view.getNumPlayers(); i++) { @@ -132,17 +135,31 @@ public enum CSubmenuVanguard implements ICDoc { for (int i = 0; i < view.getNumPlayers(); i++) { CardPrinted avatar = null; Object obj = view.getAvatarLists().get(i).getSelectedValue(); - if (obj instanceof String) { - //Random is the only string in the list so grab a random avatar. - if (i == 0) { - //HUMAN - avatar = Iterables.get(view.getAllAvatars(), rnd.nextInt(Iterables.size(view.getNonRandomHumanAvatars()))); + + boolean useDefault = VSubmenuVanguard.SINGLETON_INSTANCE.getCbDefaultAvatars().isSelected(); + useDefault &= playerDecks.get(i).getAvatar() != null; + + if(useDefault) + { + avatar = playerDecks.get(i).getAvatar(); + defaultAvatarInfo.append("Player " + (i+1) + ": "); + defaultAvatarInfo.append(avatar.getName() + nl); + usedDefaults = true; + } + else + { + if (obj instanceof String) { + //Random is the only string in the list so grab a random avatar. + if (i == 0) { + //HUMAN + avatar = Iterables.get(view.getAllAvatars(), rnd.nextInt(Iterables.size(view.getNonRandomHumanAvatars()))); + } else { + //AI + avatar = Iterables.get(view.getAllAiAvatars(), rnd.nextInt(Iterables.size(view.getNonRandomAiAvatars()))); + } } else { - //AI - avatar = Iterables.get(view.getAllAiAvatars(), rnd.nextInt(Iterables.size(view.getNonRandomAiAvatars()))); + avatar = (CardPrinted) obj; } - } else { - avatar = (CardPrinted) obj; } if (avatar == null) { //ERROR! @@ -151,6 +168,11 @@ public enum CSubmenuVanguard implements ICDoc { } playerAvatars.add(avatar); } + + if(usedDefaults) + { + GameActionUtil.showInfoDialg(defaultAvatarInfo.toString()); + } Lobby lobby = Singletons.getControl().getLobby(); MatchStartHelper helper = new MatchStartHelper(); diff --git a/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java b/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java index 98b780dc0d2..e2093e5f738 100644 --- a/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java +++ b/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java @@ -77,6 +77,7 @@ public enum VSubmenuVanguard implements IVSubmenu { private final List fieldRadios = new ArrayList(); private final ButtonGroup grpFields = new ButtonGroup(); + private final FCheckBox cbDefaultAvatars = new FCheckBox("Use deck-default avatars if possible."); private int currentNumTabsShown = 8; ////////////////////////////// @@ -140,6 +141,7 @@ public enum VSubmenuVanguard implements IVSubmenu { } settingsPanel.add(radioPane); settingsPanel.add(new FLabel.Builder().text("Set number of opponents").build()); + settingsPanel.add(cbDefaultAvatars); tabPane.add("Settings", settingsPanel); //Player panels (Human + 7 AIs) @@ -351,4 +353,11 @@ public enum VSubmenuVanguard implements IVSubmenu { public List getNonRandomAiAvatars() { return nonRandomAiAvatars; } + + /** + * @return the cbDefaultAvatars + */ + public FCheckBox getCbDefaultAvatars() { + return cbDefaultAvatars; + } }