mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
GameCopier: Handle copying of more game and player properties.
This commit is contained in:
@@ -91,6 +91,15 @@ public class GameCopier {
|
||||
newPlayer.setLifeLostLastTurn(origPlayer.getLifeLostLastTurn());
|
||||
newPlayer.setLifeLostThisTurn(origPlayer.getLifeLostThisTurn());
|
||||
newPlayer.setLifeGainedThisTurn(origPlayer.getLifeGainedThisTurn());
|
||||
newPlayer.setBlessing(origPlayer.hasBlessing());
|
||||
newPlayer.setRevolt(origPlayer.hasRevolt());
|
||||
newPlayer.setLibrarySearched(origPlayer.getLibrarySearched());
|
||||
newPlayer.setSpellsCastLastTurn(origPlayer.getSpellsCastLastTurn());
|
||||
for (int j = 0; j < origPlayer.getSpellsCastThisTurn(); j++) {
|
||||
newPlayer.addSpellCastThisTurn();
|
||||
}
|
||||
newPlayer.setMaxHandSize(origPlayer.getMaxHandSize());
|
||||
newPlayer.setUnlimitedHandSize(origPlayer.isUnlimitedHandSize());
|
||||
// TODO creatureAttackedThisTurn
|
||||
for (Mana m : origPlayer.getManaPool()) {
|
||||
newPlayer.getManaPool().addMana(m, false);
|
||||
@@ -117,6 +126,20 @@ public class GameCopier {
|
||||
p.setCommanders(commanders);
|
||||
((PlayerZoneBattlefield) p.getZone(ZoneType.Battlefield)).setTriggers(true);
|
||||
}
|
||||
for (Player origPlayer : playerMap.keySet()) {
|
||||
Player newPlayer = playerMap.get(origPlayer);
|
||||
for (final Card c : origPlayer.getCommanders()) {
|
||||
Card newCommander = gameObjectMap.map(c);
|
||||
int castTimes = origPlayer.getCommanderCast(c);
|
||||
for (int i = 0; i < castTimes; i++) {
|
||||
newPlayer.incCommanderCast(newCommander);
|
||||
}
|
||||
}
|
||||
for (Map.Entry<Card, Integer> entry : origPlayer.getCommanderDamage()) {
|
||||
Card newCommander = gameObjectMap.map(entry.getKey());
|
||||
newPlayer.addCommanderDamage(newCommander, entry.getValue());
|
||||
}
|
||||
}
|
||||
newGame.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
||||
|
||||
for (Card c : newGame.getCardsInGame()) {
|
||||
@@ -211,9 +234,21 @@ public class GameCopier {
|
||||
|
||||
// TODO countersAddedThisTurn
|
||||
|
||||
if (origGame.getStartingPlayer() != null) {
|
||||
newGame.setStartingPlayer(origGame.getStartingPlayer());
|
||||
}
|
||||
if (origGame.getMonarch() != null) {
|
||||
newGame.setMonarch(playerMap.get(origGame.getMonarch()));
|
||||
}
|
||||
if (origGame.getMonarchBeginTurn() != null) {
|
||||
newGame.setMonarchBeginTurn(playerMap.get(origGame.getMonarchBeginTurn()));
|
||||
}
|
||||
if (origGame.getHasInitiative() != null) {
|
||||
newGame.setHasInitiative(playerMap.get(origGame.getHasInitiative()));
|
||||
}
|
||||
if (origGame.getDayTime() != null) {
|
||||
newGame.setDayTime(origGame.getDayTime());
|
||||
}
|
||||
|
||||
for (ZoneType zone : ZONES) {
|
||||
for (Card card : origGame.getCardsIn(zone)) {
|
||||
|
||||
@@ -691,8 +691,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
&& !this.getGame().getRules().hasAppliedVariant(GameType.Brawl)) {
|
||||
// In case that commander is merged permanent, get the real commander card
|
||||
final Card realCommander = source.getRealCommander();
|
||||
int damage = getCommanderDamage(realCommander) + amount;
|
||||
commanderDamage.put(realCommander, damage);
|
||||
addCommanderDamage(realCommander, amount);
|
||||
view.updateCommanderDamage(this);
|
||||
if (realCommander != source) {
|
||||
view.updateMergedCommanderDamage(source, realCommander);
|
||||
@@ -2675,6 +2674,9 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
Integer damage = commanderDamage.get(commander);
|
||||
return damage == null ? 0 : damage.intValue();
|
||||
}
|
||||
public void addCommanderDamage(Card commander, int damage) {
|
||||
commanderDamage.merge(commander, damage, Integer::sum);
|
||||
}
|
||||
|
||||
public ColorSet getCommanderColorID() {
|
||||
if (commanders.isEmpty()) {
|
||||
|
||||
Reference in New Issue
Block a user