From 3d57a98d3cfae7e594043a7a2eaeb0d0a3ebdc92 Mon Sep 17 00:00:00 2001 From: Hellfish Date: Tue, 2 Apr 2013 06:15:58 +0000 Subject: [PATCH] *Some Commander infrastructure added --- src/main/java/forge/Card.java | 17 +++++++++++------ src/main/java/forge/deck/CardCollections.java | 13 +++++++++++-- src/main/java/forge/game/GameType.java | 3 ++- src/main/java/forge/game/MatchStartHelper.java | 10 ++++++++++ src/main/java/forge/game/player/Player.java | 2 +- .../java/forge/properties/NewConstants.java | 1 + 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index ad0eeb19c50..e3b599575be 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -133,6 +133,7 @@ public class Card extends GameEntity implements Comparable { private List blockedThisTurn = null; private List blockedByThisTurn = null; + private boolean isCommander = false; private boolean startsGameInPlay = false; private boolean drawnThisTurn = false; private boolean tapped = false; @@ -7320,6 +7321,10 @@ public class Card extends GameEntity implements Comparable { if (!this.isType(source.getChosenType())) { return false; } + } else if (property.equals("IsCommander")) { + if(!this.isCommander) { + return false; + } } else { if (!this.isType(property)) { return false; @@ -9139,13 +9144,13 @@ public class Card extends GameEntity implements Comparable { cardRules = r; } - /** - * TODO: Write javadoc for this method. - * @return - */ - public boolean isEdhGeneral() { + public boolean isCommander() { // TODO - have a field - return false; + return this.isCommander; + } + + public void setCommander(boolean b) { + this.isCommander = b; } } // end Card class diff --git a/src/main/java/forge/deck/CardCollections.java b/src/main/java/forge/deck/CardCollections.java index ae30b624c1b..e456b8f6831 100644 --- a/src/main/java/forge/deck/CardCollections.java +++ b/src/main/java/forge/deck/CardCollections.java @@ -40,6 +40,7 @@ public class CardCollections { private final IStorage cube; private final IStorage scheme; private final IStorage plane; + private final IStorage commander; /** * TODO: Write javadoc for Constructor. @@ -56,9 +57,10 @@ public class CardCollections { this.cube = new StorageImmediatelySerialized(new DeckSerializer(new File(NewConstants.DECK_CUBE_DIR))); this.scheme = new StorageImmediatelySerialized(new DeckSerializer(new File(NewConstants.DECK_SCHEME_DIR))); this.plane = new StorageImmediatelySerialized(new DeckSerializer(new File(NewConstants.DECK_PLANE_DIR))); - + this.commander = new StorageImmediatelySerialized(new DeckSerializer(new File(NewConstants.DECK_COMMANDER_DIR))); + sw.stop(); - System.out.printf("Read decks (%d ms): %d constructed, %d sealed, %d draft, %d cubes, %d scheme, %d planar.%n", sw.getTime(), constructed.size(), sealed.size(), draft.size(), cube.size(), scheme.size(), plane.size()); + System.out.printf("Read decks (%d ms): %d constructed, %d sealed, %d draft, %d cubes, %d scheme, %d planar, %d commander.%n", sw.getTime(), constructed.size(), sealed.size(), draft.size(), cube.size(), scheme.size(), plane.size(),commander.size()); // int sum = constructed.size() + sealed.size() + draft.size() + cube.size() + scheme.size() + plane.size(); // FSkin.setProgessBarMessage(String.format("Loaded %d decks in %f sec", sum, sw.getTime() / 1000f )); // remove this after most people have been switched to new layout @@ -116,5 +118,12 @@ public class CardCollections { public IStorage getPlane() { return plane; } + + /** + * @return the plane + */ + public IStorage getCommander() { + return commander; + } } diff --git a/src/main/java/forge/game/GameType.java b/src/main/java/forge/game/GameType.java index c6cbf5230e1..3342002eb00 100644 --- a/src/main/java/forge/game/GameType.java +++ b/src/main/java/forge/game/GameType.java @@ -16,7 +16,8 @@ public enum GameType { Constructed ( DeckFormat.Constructed, false, true ), Archenemy ( DeckFormat.Archenemy, false, false ), Planechase ( DeckFormat.Planechase, false, false ), - Vanguard ( DeckFormat.Vanguard, true, true ); + Vanguard ( DeckFormat.Vanguard, true, true ), + Commander ( DeckFormat.Commander, false, false); private final DeckFormat decksFormat; private final boolean bCardpoolLimited; diff --git a/src/main/java/forge/game/MatchStartHelper.java b/src/main/java/forge/game/MatchStartHelper.java index add9e4f39e8..e9b75c6d4ca 100644 --- a/src/main/java/forge/game/MatchStartHelper.java +++ b/src/main/java/forge/game/MatchStartHelper.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.Map; import forge.deck.Deck; +import forge.deck.DeckSection; import forge.game.player.LobbyPlayer; import forge.item.CardPrinted; @@ -33,6 +34,15 @@ public class MatchStartHelper { players.put(player, start); } + + public void addCommanderPlayer(final LobbyPlayer player, final Deck deck) + { + PlayerStartConditions start = new PlayerStartConditions(deck); + start.setStartingLife(40); + start.setCardsInCommand(deck.get(DeckSection.Commander).toFlatList()); + + players.put(player, start); + } public void addArchenemy(final LobbyPlayer player, final Deck deck, final Iterable schemes) { PlayerStartConditions start = new PlayerStartConditions(deck); diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 4f9538a2fde..a9e2798fe1f 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -644,7 +644,7 @@ public abstract class Player extends GameEntity implements Comparable { } this.assignedDamage.put(source, damageToDo); - if(source.isEdhGeneral()) + if(source.isCommander()) this.edhGeneralDamage+= damageToDo; GameActionUtil.executeDamageDealingEffects(source, damageToDo); diff --git a/src/main/java/forge/properties/NewConstants.java b/src/main/java/forge/properties/NewConstants.java index 3a387fef040..c9bb7dd5fe8 100644 --- a/src/main/java/forge/properties/NewConstants.java +++ b/src/main/java/forge/properties/NewConstants.java @@ -75,6 +75,7 @@ public final class NewConstants { public static final String DECK_SEALED_DIR = DECK_BASE_DIR + "sealed/"; public static final String DECK_SCHEME_DIR = DECK_BASE_DIR + "scheme/"; public static final String DECK_PLANE_DIR = DECK_BASE_DIR + "planar/"; + public static final String DECK_COMMANDER_DIR = DECK_BASE_DIR + "commander/"; public static final String QUEST_SAVE_DIR = USER_QUEST_DIR + "saves/"; public static final String MAIN_PREFS_FILE = USER_PREFS_DIR + "forge.preferences"; public static final String QUEST_PREFS_FILE = USER_PREFS_DIR + "quest.preferences";