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.setLifeLostLastTurn(origPlayer.getLifeLostLastTurn());
|
||||||
newPlayer.setLifeLostThisTurn(origPlayer.getLifeLostThisTurn());
|
newPlayer.setLifeLostThisTurn(origPlayer.getLifeLostThisTurn());
|
||||||
newPlayer.setLifeGainedThisTurn(origPlayer.getLifeGainedThisTurn());
|
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
|
// TODO creatureAttackedThisTurn
|
||||||
for (Mana m : origPlayer.getManaPool()) {
|
for (Mana m : origPlayer.getManaPool()) {
|
||||||
newPlayer.getManaPool().addMana(m, false);
|
newPlayer.getManaPool().addMana(m, false);
|
||||||
@@ -117,6 +126,20 @@ public class GameCopier {
|
|||||||
p.setCommanders(commanders);
|
p.setCommanders(commanders);
|
||||||
((PlayerZoneBattlefield) p.getZone(ZoneType.Battlefield)).setTriggers(true);
|
((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);
|
newGame.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
||||||
|
|
||||||
for (Card c : newGame.getCardsInGame()) {
|
for (Card c : newGame.getCardsInGame()) {
|
||||||
@@ -211,9 +234,21 @@ public class GameCopier {
|
|||||||
|
|
||||||
// TODO countersAddedThisTurn
|
// TODO countersAddedThisTurn
|
||||||
|
|
||||||
|
if (origGame.getStartingPlayer() != null) {
|
||||||
|
newGame.setStartingPlayer(origGame.getStartingPlayer());
|
||||||
|
}
|
||||||
if (origGame.getMonarch() != null) {
|
if (origGame.getMonarch() != null) {
|
||||||
newGame.setMonarch(playerMap.get(origGame.getMonarch()));
|
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 (ZoneType zone : ZONES) {
|
||||||
for (Card card : origGame.getCardsIn(zone)) {
|
for (Card card : origGame.getCardsIn(zone)) {
|
||||||
|
|||||||
@@ -691,8 +691,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
&& !this.getGame().getRules().hasAppliedVariant(GameType.Brawl)) {
|
&& !this.getGame().getRules().hasAppliedVariant(GameType.Brawl)) {
|
||||||
// In case that commander is merged permanent, get the real commander card
|
// In case that commander is merged permanent, get the real commander card
|
||||||
final Card realCommander = source.getRealCommander();
|
final Card realCommander = source.getRealCommander();
|
||||||
int damage = getCommanderDamage(realCommander) + amount;
|
addCommanderDamage(realCommander, amount);
|
||||||
commanderDamage.put(realCommander, damage);
|
|
||||||
view.updateCommanderDamage(this);
|
view.updateCommanderDamage(this);
|
||||||
if (realCommander != source) {
|
if (realCommander != source) {
|
||||||
view.updateMergedCommanderDamage(source, realCommander);
|
view.updateMergedCommanderDamage(source, realCommander);
|
||||||
@@ -2675,6 +2674,9 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
Integer damage = commanderDamage.get(commander);
|
Integer damage = commanderDamage.get(commander);
|
||||||
return damage == null ? 0 : damage.intValue();
|
return damage == null ? 0 : damage.intValue();
|
||||||
}
|
}
|
||||||
|
public void addCommanderDamage(Card commander, int damage) {
|
||||||
|
commanderDamage.merge(commander, damage, Integer::sum);
|
||||||
|
}
|
||||||
|
|
||||||
public ColorSet getCommanderColorID() {
|
public ColorSet getCommanderColorID() {
|
||||||
if (commanders.isEmpty()) {
|
if (commanders.isEmpty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user