mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Remove old implementation of game state serialization that was never used anyway
This commit is contained in:
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -529,9 +529,6 @@ forge-game/src/main/java/forge/game/event/GameEventTurnPhase.java -text
|
|||||||
forge-game/src/main/java/forge/game/event/GameEventZone.java -text
|
forge-game/src/main/java/forge/game/event/GameEventZone.java -text
|
||||||
forge-game/src/main/java/forge/game/event/IGameEventVisitor.java -text
|
forge-game/src/main/java/forge/game/event/IGameEventVisitor.java -text
|
||||||
forge-game/src/main/java/forge/game/event/package-info.java -text
|
forge-game/src/main/java/forge/game/event/package-info.java -text
|
||||||
forge-game/src/main/java/forge/game/io/GameStateDeserializer.java -text
|
|
||||||
forge-game/src/main/java/forge/game/io/GameStateSerializer.java -text
|
|
||||||
forge-game/src/main/java/forge/game/io/IGameStateObject.java -text
|
|
||||||
forge-game/src/main/java/forge/game/keyword/Cycling.java -text
|
forge-game/src/main/java/forge/game/keyword/Cycling.java -text
|
||||||
forge-game/src/main/java/forge/game/keyword/Keyword.java -text
|
forge-game/src/main/java/forge/game/keyword/Keyword.java -text
|
||||||
forge-game/src/main/java/forge/game/keyword/KeywordCollection.java -text
|
forge-game/src/main/java/forge/game/keyword/KeywordCollection.java -text
|
||||||
|
|||||||
@@ -42,9 +42,6 @@ import forge.game.card.CardPredicates;
|
|||||||
import forge.game.combat.Combat;
|
import forge.game.combat.Combat;
|
||||||
import forge.game.event.GameEvent;
|
import forge.game.event.GameEvent;
|
||||||
import forge.game.event.GameEventGameOutcome;
|
import forge.game.event.GameEventGameOutcome;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.phase.EndOfTurn;
|
import forge.game.phase.EndOfTurn;
|
||||||
import forge.game.phase.Phase;
|
import forge.game.phase.Phase;
|
||||||
import forge.game.phase.PhaseHandler;
|
import forge.game.phase.PhaseHandler;
|
||||||
@@ -67,7 +64,7 @@ import forge.util.Aggregates;
|
|||||||
/**
|
/**
|
||||||
* Represents the state of a <i>single game</i>, a new instance is created for each game.
|
* Represents the state of a <i>single game</i>, a new instance is created for each game.
|
||||||
*/
|
*/
|
||||||
public class Game implements IGameStateObject {
|
public class Game {
|
||||||
private final GameRules rules;
|
private final GameRules rules;
|
||||||
private List<Player> roIngamePlayers;
|
private List<Player> roIngamePlayers;
|
||||||
private List<Player> roIngamePlayersReversed;
|
private List<Player> roIngamePlayersReversed;
|
||||||
@@ -102,57 +99,6 @@ public class Game implements IGameStateObject {
|
|||||||
|
|
||||||
private final GameView view = new GameView();
|
private final GameView view = new GameView();
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
gsd.readObject(rules);
|
|
||||||
gsd.readObject(cleanup);
|
|
||||||
gsd.readObject(endOfTurn);
|
|
||||||
gsd.readObject(endOfCombat);
|
|
||||||
gsd.readObject(untap);
|
|
||||||
gsd.readObject(upkeep);
|
|
||||||
gsd.readObject(stack);
|
|
||||||
gsd.readObject(phaseHandler);
|
|
||||||
gsd.readObject(staticEffects);
|
|
||||||
gsd.readObject(triggerHandler);
|
|
||||||
gsd.readObject(gameLog);
|
|
||||||
gsd.readObject(stackZone);
|
|
||||||
turnOrder = Direction.valueOf(gsd.readString());
|
|
||||||
timestamp = gsd.readLong();
|
|
||||||
age = GameStage.valueOf(gsd.readString());
|
|
||||||
outcome = (GameOutcome)gsd.readObject();
|
|
||||||
gsd.readPlayerList(allPlayers);
|
|
||||||
gsd.readPlayerList(ingamePlayers);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
gss.write(rules);
|
|
||||||
gss.write(cleanup);
|
|
||||||
gss.write(endOfTurn);
|
|
||||||
gss.write(endOfCombat);
|
|
||||||
gss.write(untap);
|
|
||||||
gss.write(upkeep);
|
|
||||||
gss.write(stack);
|
|
||||||
gss.write(phaseHandler);
|
|
||||||
gss.write(staticEffects);
|
|
||||||
gss.write(triggerHandler);
|
|
||||||
gss.write(replacementHandler);
|
|
||||||
gss.write(gameLog);
|
|
||||||
gss.write(stackZone);
|
|
||||||
gss.write(turnOrder.name());
|
|
||||||
gss.write(timestamp);
|
|
||||||
gss.write(age.name());
|
|
||||||
gss.write(outcome);
|
|
||||||
gss.writePlayerList(allPlayers);
|
|
||||||
gss.writePlayerList(ingamePlayers);
|
|
||||||
roIngamePlayers = Collections.unmodifiableList(ingamePlayers);
|
|
||||||
roIngamePlayersReversed = Lists.reverse(roIngamePlayers); // reverse of unmodifiable list is also unmodifiable
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
* @param match0
|
|
||||||
*/
|
|
||||||
public Game(List<RegisteredPlayer> players0, GameRules rules0, Match match0) { /* no more zones to map here */
|
public Game(List<RegisteredPlayer> players0, GameRules rules0, Match match0) { /* no more zones to map here */
|
||||||
rules = rules0;
|
rules = rules0;
|
||||||
match = match0;
|
match = match0;
|
||||||
|
|||||||
@@ -15,13 +15,9 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package forge.game;
|
package forge.game;
|
||||||
|
|
||||||
import forge.game.event.IGameEventVisitor;
|
import forge.game.event.IGameEventVisitor;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -34,10 +30,11 @@ import java.util.Observable;
|
|||||||
* @author Forge
|
* @author Forge
|
||||||
* @version $Id: GameLog.java 12297 2011-11-28 19:56:47Z slapshot5 $
|
* @version $Id: GameLog.java 12297 2011-11-28 19:56:47Z slapshot5 $
|
||||||
*/
|
*/
|
||||||
public class GameLog extends Observable implements IGameStateObject {
|
public class GameLog extends Observable {
|
||||||
private List<GameLogEntry> log = new ArrayList<GameLogEntry>();
|
private List<GameLogEntry> log = new ArrayList<GameLogEntry>();
|
||||||
|
|
||||||
private GameLogFormatter formatter = new GameLogFormatter(this);
|
private GameLogFormatter formatter = new GameLogFormatter(this);
|
||||||
|
|
||||||
/** Logging level:
|
/** Logging level:
|
||||||
* 0 - Turn
|
* 0 - Turn
|
||||||
* 2 - Stack items
|
* 2 - Stack items
|
||||||
@@ -46,30 +43,9 @@ public class GameLog extends Observable implements IGameStateObject {
|
|||||||
* 6 - All Phase information
|
* 6 - All Phase information
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
gss.writeList(log);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new game log.
|
|
||||||
*/
|
|
||||||
public GameLog() {
|
public GameLog() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds the.
|
|
||||||
*
|
|
||||||
* @param type the type
|
|
||||||
* @param message the message
|
|
||||||
* @param type the level
|
|
||||||
*/
|
|
||||||
public void add(final GameLogEntryType type, final String message) {
|
public void add(final GameLogEntryType type, final String message) {
|
||||||
add(new GameLogEntry(type, message));
|
add(new GameLogEntry(type, message));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package forge.game;
|
package forge.game;
|
||||||
|
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
|
|
||||||
public class GameLogEntry implements IGameStateObject {
|
public class GameLogEntry {
|
||||||
public final String message;
|
public final String message;
|
||||||
public final GameLogEntryType type;
|
public final GameLogEntryType type;
|
||||||
// might add here date and some other fields
|
// might add here date and some other fields
|
||||||
@@ -19,16 +16,4 @@ public class GameLogEntry implements IGameStateObject {
|
|||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return type.getCaption() + ": " + message;
|
return type.getCaption() + ": " + message;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
gss.write(type.name());
|
|
||||||
gss.write(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -18,9 +18,6 @@
|
|||||||
package forge.game;
|
package forge.game;
|
||||||
|
|
||||||
import forge.LobbyPlayer;
|
import forge.LobbyPlayer;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.player.PlayerOutcome;
|
import forge.game.player.PlayerOutcome;
|
||||||
import forge.game.player.PlayerStatistics;
|
import forge.game.player.PlayerStatistics;
|
||||||
@@ -43,7 +40,7 @@ import java.util.Map.Entry;
|
|||||||
// This class might be divided in two parts: the very summary (immutable with
|
// This class might be divided in two parts: the very summary (immutable with
|
||||||
// only getters) and
|
// only getters) and
|
||||||
// GameObserver class - who should be notified of any considerable ingame event
|
// GameObserver class - who should be notified of any considerable ingame event
|
||||||
public final class GameOutcome implements Iterable<Pair<LobbyPlayer, PlayerStatistics>>, IGameStateObject {
|
public final class GameOutcome implements Iterable<Pair<LobbyPlayer, PlayerStatistics>> {
|
||||||
public static class AnteResult {
|
public static class AnteResult {
|
||||||
public final List<PaperCard> lostCards;
|
public final List<PaperCard> lostCards;
|
||||||
public final List<PaperCard> wonCards;
|
public final List<PaperCard> wonCards;
|
||||||
@@ -79,20 +76,6 @@ public final class GameOutcome implements Iterable<Pair<LobbyPlayer, PlayerStati
|
|||||||
public final Map<Player, AnteResult> anteResult = new TreeMap<>();
|
public final Map<Player, AnteResult> anteResult = new TreeMap<>();
|
||||||
private GameEndReason winCondition;
|
private GameEndReason winCondition;
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
lastTurnNumber = gsd.readInt();
|
|
||||||
lifeDelta = gsd.readInt();
|
|
||||||
winCondition = GameEndReason.valueOf(gsd.readString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
gss.write(lastTurnNumber);
|
|
||||||
gss.write(lifeDelta);
|
|
||||||
gss.write(winCondition.name());
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameOutcome(GameEndReason reason, final Iterable<Player> list) {
|
public GameOutcome(GameEndReason reason, final Iterable<Player> list) {
|
||||||
winCondition = reason;
|
winCondition = reason;
|
||||||
players = list;
|
players = list;
|
||||||
|
|||||||
@@ -3,11 +3,7 @@ package forge.game;
|
|||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import forge.game.io.GameStateDeserializer;
|
public class GameRules {
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
|
|
||||||
public class GameRules implements IGameStateObject {
|
|
||||||
private GameType gameType;
|
private GameType gameType;
|
||||||
private boolean manaBurn;
|
private boolean manaBurn;
|
||||||
private int poisonCountersToLose = 10; // is commonly 10, but turns into 15 for 2HG
|
private int poisonCountersToLose = 10; // is commonly 10, but turns into 15 for 2HG
|
||||||
@@ -20,41 +16,6 @@ public class GameRules implements IGameStateObject {
|
|||||||
// it's a preference, not rule... but I could hardly find a better place for it
|
// it's a preference, not rule... but I could hardly find a better place for it
|
||||||
public boolean canCloneUseTargetsImage;
|
public boolean canCloneUseTargetsImage;
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
gameType = GameType.valueOf(gsd.readString());
|
|
||||||
manaBurn = gsd.readBoolean();
|
|
||||||
poisonCountersToLose = gsd.readInt();
|
|
||||||
gamesPerMatch = gsd.readInt();
|
|
||||||
gamesToWinMatch = gsd.readInt();
|
|
||||||
playForAnte = gsd.readBoolean();
|
|
||||||
matchAnteRarity = gsd.readBoolean();
|
|
||||||
canCloneUseTargetsImage = gsd.readBoolean();
|
|
||||||
|
|
||||||
int variantCount = gsd.readInt();
|
|
||||||
appliedVariants.clear();
|
|
||||||
for (int i = 0; i < variantCount; i++) {
|
|
||||||
appliedVariants.add(GameType.valueOf(gsd.readString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
gss.write(gameType.name());
|
|
||||||
gss.write(manaBurn);
|
|
||||||
gss.write(poisonCountersToLose);
|
|
||||||
gss.write(gamesPerMatch);
|
|
||||||
gss.write(gamesToWinMatch);
|
|
||||||
gss.write(playForAnte);
|
|
||||||
gss.write(matchAnteRarity);
|
|
||||||
gss.write(canCloneUseTargetsImage);
|
|
||||||
|
|
||||||
gss.write(appliedVariants.size());
|
|
||||||
for (GameType variant : appliedVariants) {
|
|
||||||
gss.write(variant.name());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameRules(GameType type) {
|
public GameRules(GameType type) {
|
||||||
this.gameType = type;
|
this.gameType = type;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,4 +47,21 @@ public class GameView {
|
|||||||
CardView.getCollection(blockers));
|
CardView.getCollection(blockers));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void serialize() {
|
||||||
|
/*try {
|
||||||
|
GameStateSerializer serializer = new GameStateSerializer(filename);
|
||||||
|
game.saveState(serializer);
|
||||||
|
serializer.writeEndOfFile();
|
||||||
|
serializer.bw.close();
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deserialize() {
|
||||||
|
/*GameStateDeserializer deserializer = new GameStateDeserializer();
|
||||||
|
deserializer.readObject();*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,6 @@ package forge.game;
|
|||||||
|
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.card.CardUtil;
|
import forge.game.card.CardUtil;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.replacement.ReplacementEffect;
|
import forge.game.replacement.ReplacementEffect;
|
||||||
import forge.game.spellability.AbilityStatic;
|
import forge.game.spellability.AbilityStatic;
|
||||||
@@ -38,7 +35,7 @@ import java.util.*;
|
|||||||
* @author Forge
|
* @author Forge
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class StaticEffects implements IGameStateObject {
|
public class StaticEffects {
|
||||||
|
|
||||||
// **************** StaticAbility system **************************
|
// **************** StaticAbility system **************************
|
||||||
private final ArrayList<StaticEffect> staticEffects = new ArrayList<StaticEffect>();
|
private final ArrayList<StaticEffect> staticEffects = new ArrayList<StaticEffect>();
|
||||||
@@ -264,20 +261,4 @@ public class StaticEffects implements IGameStateObject {
|
|||||||
se.clearTimestamps();
|
se.clearTimestamps();
|
||||||
return affectedCards;
|
return affectedCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// **************** End StaticAbility system **************************
|
|
||||||
|
|
||||||
|
|
||||||
} // end class StaticEffects
|
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
package forge.game.io;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.ObjectInputStream;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
import forge.game.Game;
|
|
||||||
import forge.game.card.Card;
|
|
||||||
import forge.game.player.Player;
|
|
||||||
import forge.item.PaperCard;
|
|
||||||
import forge.util.FileUtil;
|
|
||||||
|
|
||||||
public class GameStateDeserializer {
|
|
||||||
private int index;
|
|
||||||
private final String[] pieces;
|
|
||||||
|
|
||||||
public static void loadGameState(Game game, String filename) {
|
|
||||||
GameStateDeserializer deserializer = new GameStateDeserializer(filename);
|
|
||||||
deserializer.readObject(game);
|
|
||||||
}
|
|
||||||
|
|
||||||
private GameStateDeserializer(String filename) {
|
|
||||||
pieces = FileUtil.readFileToString(filename).split(String.valueOf(GameStateSerializer.DELIMITER));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String readString() {
|
|
||||||
return pieces[index++];
|
|
||||||
}
|
|
||||||
public boolean readBoolean() {
|
|
||||||
return readString().equals("1");
|
|
||||||
}
|
|
||||||
public int readInt() {
|
|
||||||
return Integer.parseInt(readString());
|
|
||||||
}
|
|
||||||
public long readLong() {
|
|
||||||
return Long.parseLong(readString());
|
|
||||||
}
|
|
||||||
public float readFloat() {
|
|
||||||
return Float.parseFloat(readString());
|
|
||||||
}
|
|
||||||
public double readDouble() {
|
|
||||||
return Double.parseDouble(readString());
|
|
||||||
}
|
|
||||||
public IGameStateObject readObject() {
|
|
||||||
IGameStateObject obj = null;
|
|
||||||
try {
|
|
||||||
obj = (IGameStateObject)Class.forName(readString()).newInstance();
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
if (obj != null) {
|
|
||||||
obj.loadState(this);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
public void readObject(IGameStateObject obj) { //read into existing object
|
|
||||||
if (obj != null && obj.getClass().getName().equals(readString())) {
|
|
||||||
obj.loadState(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public Card readCard() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
public PaperCard readPaperCard() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
public Player readPlayer() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
public void readCardList(Collection<Card> value) {
|
|
||||||
if (value == null) { return; }
|
|
||||||
value.clear();
|
|
||||||
int count = readInt();
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
value.add(readCard());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void readPaperCardList(Collection<PaperCard> value) {
|
|
||||||
if (value == null) { return; }
|
|
||||||
value.clear();
|
|
||||||
int count = readInt();
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
value.add(readPaperCard());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void readPlayerList(Collection<Player> value) {
|
|
||||||
if (value == null) { return; }
|
|
||||||
value.clear();
|
|
||||||
int count = readInt();
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
value.add(readPlayer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public Object deserialize() {
|
|
||||||
ObjectInputStream ois;
|
|
||||||
try {
|
|
||||||
ois = new ObjectInputStream(new ByteArrayInputStream(readString().getBytes()));
|
|
||||||
Object obj = ois.readObject();
|
|
||||||
ois.close();
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
package forge.game.io;
|
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import forge.game.Game;
|
|
||||||
import forge.game.card.Card;
|
|
||||||
import forge.game.player.Player;
|
|
||||||
|
|
||||||
public class GameStateSerializer {
|
|
||||||
public final static char DELIMITER = (char)5;
|
|
||||||
|
|
||||||
private final Map<Integer, Card> cards = new HashMap<Integer, Card>();
|
|
||||||
private final List<Player> players = new ArrayList<Player>();
|
|
||||||
private final BufferedWriter bw;
|
|
||||||
|
|
||||||
public static void saveGameState(Game game, String filename) {
|
|
||||||
GameStateSerializer serializer = null;
|
|
||||||
try {
|
|
||||||
serializer = new GameStateSerializer(filename);
|
|
||||||
game.saveState(serializer);
|
|
||||||
serializer.writeEndOfFile();
|
|
||||||
serializer.bw.close();
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private GameStateSerializer(String filename) throws IOException {
|
|
||||||
bw = new BufferedWriter(new FileWriter(filename));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void writeEndOfFile() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void write(String value) {
|
|
||||||
try {
|
|
||||||
bw.write(value + DELIMITER);
|
|
||||||
}
|
|
||||||
catch (Exception e) {}
|
|
||||||
}
|
|
||||||
public void write(IGameStateObject value) {
|
|
||||||
if (value == null) { return; }
|
|
||||||
write(value.getClass().getName()); //needed so state object can be initialized
|
|
||||||
value.saveState(this);
|
|
||||||
}
|
|
||||||
public void write(Card card) {
|
|
||||||
if (card == null) { return; }
|
|
||||||
|
|
||||||
int key = card.getId();
|
|
||||||
cards.put(key, card);
|
|
||||||
write(key); //only write info for each card once at end of file
|
|
||||||
}
|
|
||||||
public void write(Player player) {
|
|
||||||
if (player == null) { return; }
|
|
||||||
|
|
||||||
int key = players.indexOf(player);
|
|
||||||
if (key == -1) {
|
|
||||||
key = players.size();
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
write(key); //only write info for each player once at end of file
|
|
||||||
}
|
|
||||||
public void write(boolean value) {
|
|
||||||
write(value ? "1" : "0");
|
|
||||||
}
|
|
||||||
public void write(int value) {
|
|
||||||
write(String.valueOf(value));
|
|
||||||
}
|
|
||||||
public void write(long value) {
|
|
||||||
write(String.valueOf(value));
|
|
||||||
}
|
|
||||||
public void write(float value) {
|
|
||||||
write(String.valueOf(value));
|
|
||||||
}
|
|
||||||
public void write(double value) {
|
|
||||||
write(String.valueOf(value));
|
|
||||||
}
|
|
||||||
public void writeList(Collection<? extends IGameStateObject> value) {
|
|
||||||
if (value == null) { return; }
|
|
||||||
write(value.size()); //must write size first
|
|
||||||
for (IGameStateObject obj : value) {
|
|
||||||
write(obj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void writeCardList(Collection<Card> value) {
|
|
||||||
if (value == null) { return; }
|
|
||||||
write(value.size()); //must write size first
|
|
||||||
for (Card card : value) {
|
|
||||||
write(card);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void writePlayerList(Collection<Player> value) {
|
|
||||||
if (value == null) { return; }
|
|
||||||
write(value.size()); //must write size first
|
|
||||||
for (Player player : value) {
|
|
||||||
write(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void serialize(Serializable obj) {
|
|
||||||
String str;
|
|
||||||
try {
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
||||||
ObjectOutputStream oos = new ObjectOutputStream(baos);
|
|
||||||
oos.writeObject(obj);
|
|
||||||
oos.close();
|
|
||||||
str = baos.toString();
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
str = ""; //ensure placeholder include in output
|
|
||||||
}
|
|
||||||
write(str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
package forge.game.io;
|
|
||||||
|
|
||||||
public interface IGameStateObject {
|
|
||||||
void loadState(GameStateDeserializer gsd);
|
|
||||||
void saveState(GameStateSerializer gss);
|
|
||||||
}
|
|
||||||
@@ -20,15 +20,11 @@ package forge.game.phase;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import forge.GameCommand;
|
import forge.GameCommand;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,7 +35,7 @@ import java.util.Map.Entry;
|
|||||||
* @author Forge
|
* @author Forge
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class Phase implements java.io.Serializable, IGameStateObject {
|
public class Phase implements java.io.Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 4665309652476851977L;
|
private static final long serialVersionUID = 4665309652476851977L;
|
||||||
|
|
||||||
@@ -55,30 +51,6 @@ public class Phase implements java.io.Serializable, IGameStateObject {
|
|||||||
private final HashMap<Player, ArrayList<GameCommand>> untilEndMap = new HashMap<Player, ArrayList<GameCommand>>();
|
private final HashMap<Player, ArrayList<GameCommand>> untilEndMap = new HashMap<Player, ArrayList<GameCommand>>();
|
||||||
private final HashMap<Player, ArrayList<GameCommand>> registerMap = new HashMap<Player, ArrayList<GameCommand>>();
|
private final HashMap<Player, ArrayList<GameCommand>> registerMap = new HashMap<Player, ArrayList<GameCommand>>();
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
gss.write(type.name());
|
|
||||||
gss.serialize(at);
|
|
||||||
gss.serialize(until);
|
|
||||||
for (Entry<Player, ArrayList<GameCommand>> entry : untilMap.entrySet()) {
|
|
||||||
gss.write(entry.getKey());
|
|
||||||
gss.serialize(entry.getValue());
|
|
||||||
}
|
|
||||||
for (Entry<Player, ArrayList<GameCommand>> entry : untilEndMap.entrySet()) {
|
|
||||||
gss.write(entry.getKey());
|
|
||||||
gss.serialize(entry.getValue());
|
|
||||||
}
|
|
||||||
for (Entry<Player, ArrayList<GameCommand>> entry : registerMap.entrySet()) {
|
|
||||||
gss.write(entry.getKey());
|
|
||||||
gss.serialize(entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Add a hardcoded trigger that will execute "at <phase>".
|
* Add a hardcoded trigger that will execute "at <phase>".
|
||||||
|
|||||||
@@ -32,9 +32,6 @@ import forge.game.combat.Combat;
|
|||||||
import forge.game.combat.CombatUtil;
|
import forge.game.combat.CombatUtil;
|
||||||
import forge.game.cost.Cost;
|
import forge.game.cost.Cost;
|
||||||
import forge.game.event.*;
|
import forge.game.event.*;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.player.PlayerController.BinaryChoiceType;
|
import forge.game.player.PlayerController.BinaryChoiceType;
|
||||||
import forge.game.player.PlayerController.ManaPaymentPurpose;
|
import forge.game.player.PlayerController.ManaPaymentPurpose;
|
||||||
@@ -59,7 +56,7 @@ import java.util.*;
|
|||||||
* @author Forge
|
* @author Forge
|
||||||
* @version $Id: PhaseHandler.java 13001 2012-01-08 12:25:25Z Sloth $
|
* @version $Id: PhaseHandler.java 13001 2012-01-08 12:25:25Z Sloth $
|
||||||
*/
|
*/
|
||||||
public class PhaseHandler implements java.io.Serializable, IGameStateObject {
|
public class PhaseHandler implements java.io.Serializable {
|
||||||
|
|
||||||
/** Constant <code>serialVersionUID=5207222278370963197L</code>. */
|
/** Constant <code>serialVersionUID=5207222278370963197L</code>. */
|
||||||
private static final long serialVersionUID = 5207222278370963197L;
|
private static final long serialVersionUID = 5207222278370963197L;
|
||||||
@@ -1145,18 +1142,4 @@ public class PhaseHandler implements java.io.Serializable, IGameStateObject {
|
|||||||
public void endCombat() {
|
public void endCombat() {
|
||||||
combat = null;
|
combat = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,9 +23,6 @@ import forge.game.GameLogEntryType;
|
|||||||
import forge.game.ability.AbilityFactory;
|
import forge.game.ability.AbilityFactory;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
@@ -35,11 +32,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
public class ReplacementHandler {
|
||||||
* TODO: Write javadoc for this type.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class ReplacementHandler implements IGameStateObject {
|
|
||||||
private final Game game;
|
private final Game game;
|
||||||
/**
|
/**
|
||||||
* ReplacementHandler.
|
* ReplacementHandler.
|
||||||
@@ -301,16 +294,4 @@ public class ReplacementHandler implements IGameStateObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,6 @@ import forge.game.ability.ApiType;
|
|||||||
import forge.game.ability.effects.CharmEffect;
|
import forge.game.ability.effects.CharmEffect;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.card.CardUtil;
|
import forge.game.card.CardUtil;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.phase.PhaseType;
|
import forge.game.phase.PhaseType;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.Ability;
|
import forge.game.spellability.Ability;
|
||||||
@@ -39,7 +36,7 @@ import java.util.*;
|
|||||||
|
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
|
|
||||||
public class TriggerHandler implements IGameStateObject {
|
public class TriggerHandler {
|
||||||
private final ArrayList<TriggerType> suppressedModes = new ArrayList<TriggerType>();
|
private final ArrayList<TriggerType> suppressedModes = new ArrayList<TriggerType>();
|
||||||
private final ArrayList<Trigger> activeTriggers = new ArrayList<Trigger>();
|
private final ArrayList<Trigger> activeTriggers = new ArrayList<Trigger>();
|
||||||
|
|
||||||
@@ -510,18 +507,5 @@ public class TriggerHandler implements IGameStateObject {
|
|||||||
regtrig.getHostCard().getTriggers().remove(regtrig);
|
regtrig.getHostCard().getTriggers().remove(regtrig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,9 +39,6 @@ import forge.game.event.GameEventCardStatsChanged;
|
|||||||
import forge.game.event.GameEventSpellAbilityCast;
|
import forge.game.event.GameEventSpellAbilityCast;
|
||||||
import forge.game.event.GameEventSpellRemovedFromStack;
|
import forge.game.event.GameEventSpellRemovedFromStack;
|
||||||
import forge.game.event.GameEventSpellResolved;
|
import forge.game.event.GameEventSpellResolved;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.player.PlayerController.ManaPaymentPurpose;
|
import forge.game.player.PlayerController.ManaPaymentPurpose;
|
||||||
import forge.game.replacement.ReplacementEffect;
|
import forge.game.replacement.ReplacementEffect;
|
||||||
@@ -64,7 +61,7 @@ import java.util.concurrent.LinkedBlockingDeque;
|
|||||||
* @author Forge
|
* @author Forge
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbilityStackInstance>, IGameStateObject {
|
public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbilityStackInstance> {
|
||||||
private final List<SpellAbility> simultaneousStackEntryList = new ArrayList<SpellAbility>();
|
private final List<SpellAbility> simultaneousStackEntryList = new ArrayList<SpellAbility>();
|
||||||
|
|
||||||
// They don't provide a LIFO queue, so had to use a deque
|
// They don't provide a LIFO queue, so had to use a deque
|
||||||
@@ -975,17 +972,4 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s==%s==%s", simultaneousStackEntryList, frozenStack.toString(), stack.toString());
|
return String.format("%s==%s==%s", simultaneousStackEntryList, frozenStack.toString(), stack.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,9 +25,6 @@ import forge.game.Game;
|
|||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.event.EventValueChangeType;
|
import forge.game.event.EventValueChangeType;
|
||||||
import forge.game.event.GameEventZone;
|
import forge.game.event.GameEventZone;
|
||||||
import forge.game.io.GameStateDeserializer;
|
|
||||||
import forge.game.io.GameStateSerializer;
|
|
||||||
import forge.game.io.IGameStateObject;
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.util.CollectionSuppliers;
|
import forge.util.CollectionSuppliers;
|
||||||
import forge.util.maps.EnumMapOfLists;
|
import forge.util.maps.EnumMapOfLists;
|
||||||
@@ -45,7 +42,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||||||
* @author Forge
|
* @author Forge
|
||||||
* @version $Id: PlayerZone.java 17582 2012-10-19 22:39:09Z Max mtg $
|
* @version $Id: PlayerZone.java 17582 2012-10-19 22:39:09Z Max mtg $
|
||||||
*/
|
*/
|
||||||
public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObject {
|
public class Zone implements java.io.Serializable, Iterable<Card> {
|
||||||
/** Constant <code>serialVersionUID=-5687652485777639176L</code>. */
|
/** Constant <code>serialVersionUID=-5687652485777639176L</code>. */
|
||||||
private static final long serialVersionUID = -5687652485777639176L;
|
private static final long serialVersionUID = -5687652485777639176L;
|
||||||
|
|
||||||
@@ -58,12 +55,10 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
protected final transient MapOfLists<ZoneType, Card> cardsAddedThisTurn = new EnumMapOfLists<>(ZoneType.class, CollectionSuppliers.<Card>arrayLists());
|
protected final transient MapOfLists<ZoneType, Card> cardsAddedThisTurn = new EnumMapOfLists<>(ZoneType.class, CollectionSuppliers.<Card>arrayLists());
|
||||||
protected final transient MapOfLists<ZoneType, Card> cardsAddedLastTurn = new EnumMapOfLists<>(ZoneType.class, CollectionSuppliers.<Card>arrayLists());
|
protected final transient MapOfLists<ZoneType, Card> cardsAddedLastTurn = new EnumMapOfLists<>(ZoneType.class, CollectionSuppliers.<Card>arrayLists());
|
||||||
|
|
||||||
public Zone(final ZoneType zone, Game game) {
|
public Zone(final ZoneType zone0, Game game0) {
|
||||||
this.zoneType = zone;
|
zoneType = zone0;
|
||||||
this.game = game;
|
game = game0;
|
||||||
this.roCardList = Collections.unmodifiableList(cardList);
|
roCardList = Collections.unmodifiableList(cardList);
|
||||||
|
|
||||||
//System.out.println(zoneName + " (ct) " + Integer.toHexString(System.identityHashCode(roCardList)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Player getPlayer() { // generic zones like stack have no player associated
|
public Player getPlayer() { // generic zones like stack have no player associated
|
||||||
@@ -89,24 +84,24 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
c.setZone(this);
|
c.setZone(this);
|
||||||
|
|
||||||
if (index == null) {
|
if (index == null) {
|
||||||
this.cardList.add(c);
|
cardList.add(c);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.cardList.add(index.intValue(), c);
|
cardList.add(index.intValue(), c);
|
||||||
}
|
}
|
||||||
game.fireEvent(new GameEventZone(zoneType, getPlayer(), EventValueChangeType.Added, c));
|
game.fireEvent(new GameEventZone(zoneType, getPlayer(), EventValueChangeType.Added, c));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean contains(final Card c) {
|
public final boolean contains(final Card c) {
|
||||||
return this.cardList.contains(c);
|
return cardList.contains(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean contains(final Predicate<Card> condition) {
|
public final boolean contains(final Predicate<Card> condition) {
|
||||||
return Iterables.any(this.cardList, condition);
|
return Iterables.any(cardList, condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(final Card c) {
|
public void remove(final Card c) {
|
||||||
this.cardList.remove(c);
|
cardList.remove(c);
|
||||||
game.fireEvent(new GameEventZone(zoneType, getPlayer(), EventValueChangeType.Removed, c));
|
game.fireEvent(new GameEventZone(zoneType, getPlayer(), EventValueChangeType.Removed, c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +115,7 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final boolean is(final ZoneType zone) {
|
public final boolean is(final ZoneType zone) {
|
||||||
return zone == this.zoneType;
|
return zone == zoneType;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PlayerZone should override it with a correct implementation
|
// PlayerZone should override it with a correct implementation
|
||||||
@@ -130,25 +125,25 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final ZoneType getZoneType() {
|
public final ZoneType getZoneType() {
|
||||||
return this.zoneType;
|
return zoneType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final int size() {
|
public final int size() {
|
||||||
return this.cardList.size();
|
return cardList.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Card get(final int index) {
|
public final Card get(final int index) {
|
||||||
return this.cardList.get(index);
|
return cardList.get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final List<Card> getCards() {
|
public final List<Card> getCards() {
|
||||||
//System.out.println(zoneName + ": " + Integer.toHexString(System.identityHashCode(roCardList)));
|
//System.out.println(zoneName + ": " + Integer.toHexString(System.identityHashCode(roCardList)));
|
||||||
return this.getCards(true);
|
return getCards(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Card> getCards(final boolean filter) {
|
public List<Card> getCards(final boolean filter) {
|
||||||
// Non-Battlefield PlayerZones don't care about the filter
|
// Non-Battlefield PlayerZones don't care about the filter
|
||||||
return this.roCardList;
|
return roCardList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -158,7 +153,7 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public final boolean isEmpty() {
|
public final boolean isEmpty() {
|
||||||
return this.cardList.isEmpty();
|
return cardList.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -189,7 +184,7 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
* @return a {@link forge.CardList} object.
|
* @return a {@link forge.CardList} object.
|
||||||
*/
|
*/
|
||||||
public final List<Card> getCardsAddedThisTurn(final ZoneType origin) {
|
public final List<Card> getCardsAddedThisTurn(final ZoneType origin) {
|
||||||
//System.out.print("Request cards put into " + this.getZoneType() + " from " + origin + ".Amount: ");
|
//System.out.print("Request cards put into " + getZoneType() + " from " + origin + ".Amount: ");
|
||||||
return getCardsAdded(cardsAddedThisTurn, origin);
|
return getCardsAdded(cardsAddedThisTurn, origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,7 +198,7 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
* @return a {@link forge.CardList} object.
|
* @return a {@link forge.CardList} object.
|
||||||
*/
|
*/
|
||||||
public final List<Card> getCardsAddedLastTurn(final ZoneType origin) {
|
public final List<Card> getCardsAddedLastTurn(final ZoneType origin) {
|
||||||
//System.out.print("Last turn - Request cards put into " + this.getZoneType() + " from " + origin + ".Amount: ");
|
//System.out.print("Last turn - Request cards put into " + getZoneType() + " from " + origin + ".Amount: ");
|
||||||
return getCardsAdded(cardsAddedLastTurn, origin);
|
return getCardsAdded(cardsAddedLastTurn, origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,11 +227,11 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
public final void resetCardsAddedThisTurn() {
|
public final void resetCardsAddedThisTurn() {
|
||||||
this.cardsAddedLastTurn.clear();
|
cardsAddedLastTurn.clear();
|
||||||
for (Entry<ZoneType, Collection<Card>> entry : this.cardsAddedThisTurn.entrySet()) {
|
for (Entry<ZoneType, Collection<Card>> entry : cardsAddedThisTurn.entrySet()) {
|
||||||
this.cardsAddedLastTurn.addAll(entry.getKey(), entry.getValue());
|
cardsAddedLastTurn.addAll(entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
this.cardsAddedThisTurn.clear();
|
cardsAddedThisTurn.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -261,18 +256,6 @@ public class Zone implements java.io.Serializable, Iterable<Card>, IGameStateObj
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return this.zoneType.toString();
|
return zoneType.toString();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(GameStateDeserializer gsd) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveState(GameStateSerializer gss) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user