*Added [avatar] decksection (for deck-default vanguard avatars)

This commit is contained in:
Hellfish
2012-11-30 20:33:08 +00:00
parent 4846abb166
commit ed4fef0a25
3 changed files with 58 additions and 9 deletions

View File

@@ -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<String> 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<String> 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<Deck, String> FN_NAME_SELECTOR = new Function<Deck, String>() {
@Override
public String apply(Deck arg1) {

View File

@@ -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<Deck> playerDecks = new ArrayList<Deck>();
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();

View File

@@ -77,6 +77,7 @@ public enum VSubmenuVanguard implements IVSubmenu<CSubmenuVanguard> {
private final List<JRadioButton> fieldRadios = new ArrayList<JRadioButton>();
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<CSubmenuVanguard> {
}
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<CSubmenuVanguard> {
public List<CardPrinted> getNonRandomAiAvatars() {
return nonRandomAiAvatars;
}
/**
* @return the cbDefaultAvatars
*/
public FCheckBox getCbDefaultAvatars() {
return cbDefaultAvatars;
}
}