mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Fix some more places where gaame elements were reusing old game versions
This commit is contained in:
@@ -401,7 +401,7 @@ public class Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final PlayerCollection getPlayersInTurnOrder(Player p) {
|
public final PlayerCollection getPlayersInTurnOrder(Player p) {
|
||||||
PlayerCollection players = getPlayersInTurnOrder();
|
final PlayerCollection players = new PlayerCollection(getPlayersInTurnOrder());
|
||||||
|
|
||||||
int i = players.indexOf(p);
|
int i = players.indexOf(p);
|
||||||
Collections.rotate(players, -i);
|
Collections.rotate(players, -i);
|
||||||
|
|||||||
@@ -194,12 +194,23 @@ public class GameSnapshot {
|
|||||||
Game toGame = toPlayer.getGame();
|
Game toGame = toPlayer.getGame();
|
||||||
toPlayer.getManaPool().resetPool();
|
toPlayer.getManaPool().resetPool();
|
||||||
for (Mana m : fromPlayer.getManaPool()) {
|
for (Mana m : fromPlayer.getManaPool()) {
|
||||||
// TODO the mana object here needs to be copied to the new game
|
toPlayer.getManaPool().addMana(copyMana(m, toGame), false);
|
||||||
toPlayer.getManaPool().addMana(m, false);
|
|
||||||
}
|
}
|
||||||
toPlayer.updateManaForView();
|
toPlayer.updateManaForView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Mana copyMana(Mana m, Game toGame) {
|
||||||
|
Card fromCard = m.getSourceCard();
|
||||||
|
Card toCard = findBy(toGame, fromCard);
|
||||||
|
// Are we copying over mana abilities properly?
|
||||||
|
if (toCard == null) {
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
Mana newMana = new Mana(m.getColor(), toCard, m.getManaAbility());
|
||||||
|
newMana.getManaAbility().setSourceCard(toCard);
|
||||||
|
return newMana;
|
||||||
|
}
|
||||||
|
|
||||||
private void copyStack(Game fromGame, Game toGame, boolean restore) {
|
private void copyStack(Game fromGame, Game toGame, boolean restore) {
|
||||||
// Try to match the StackInstance ID. If we don't find it, generate a new stack instance that matches
|
// Try to match the StackInstance ID. If we don't find it, generate a new stack instance that matches
|
||||||
// If we do find it, we may need to alter the existing stack instance
|
// If we do find it, we may need to alter the existing stack instance
|
||||||
|
|||||||
@@ -34,6 +34,11 @@ import forge.game.spellability.SpellAbility;
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class Mana {
|
public class Mana {
|
||||||
|
|
||||||
|
private byte color;
|
||||||
|
private Card sourceCard = null;
|
||||||
|
private AbilityManaPart manaAbility = null;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
final int prime = 31;
|
final int prime = 31;
|
||||||
@@ -82,10 +87,6 @@ public class Mana {
|
|||||||
return mp == mp2 || (mp.getManaRestrictions().equals(mp2.getManaRestrictions()) && mp.getExtraManaRestriction().equals(mp2.getExtraManaRestriction()));
|
return mp == mp2 || (mp.getManaRestrictions().equals(mp2.getManaRestrictions()) && mp.getExtraManaRestriction().equals(mp2.getExtraManaRestriction()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte color;
|
|
||||||
private Card sourceCard = null;
|
|
||||||
private AbilityManaPart manaAbility = null;
|
|
||||||
|
|
||||||
public Mana(final byte color, final Card source, final AbilityManaPart manaAbility) {
|
public Mana(final byte color, final Card source, final AbilityManaPart manaAbility) {
|
||||||
this.color = color;
|
this.color = color;
|
||||||
this.manaAbility = manaAbility;
|
this.manaAbility = manaAbility;
|
||||||
|
|||||||
@@ -82,14 +82,10 @@ public class AbilityManaPart implements java.io.Serializable {
|
|||||||
|
|
||||||
// Spells paid with this mana spell can't be countered.
|
// Spells paid with this mana spell can't be countered.
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Dev Mode Constructor for AbilityMana.
|
* Dev Mode Constructor for AbilityMana.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
|
||||||
* @param sourceCard
|
|
||||||
* a {@link forge.game.card.Card} object.
|
|
||||||
*/
|
*/
|
||||||
public AbilityManaPart(final SpellAbility sourceSA, final Map<String, String> params) {
|
public AbilityManaPart(final SpellAbility sourceSA, final Map<String, String> params) {
|
||||||
this(sourceSA.getHostCard(), params);
|
this(sourceSA.getHostCard(), params);
|
||||||
@@ -110,6 +106,20 @@ public class AbilityManaPart implements java.io.Serializable {
|
|||||||
this.persistentMana = null != params.get("PersistentMana") && "True".equalsIgnoreCase(params.get("PersistentMana"));
|
this.persistentMana = null != params.get("PersistentMana") && "True".equalsIgnoreCase(params.get("PersistentMana"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AbilityManaPart(final Card newSource, AbilityManaPart oldMana) {
|
||||||
|
this.sourceCard = newSource;
|
||||||
|
this.origProduced = oldMana.origProduced;
|
||||||
|
this.manaRestrictions = oldMana.manaRestrictions;
|
||||||
|
this.cannotCounterSpell = oldMana.cannotCounterSpell;
|
||||||
|
this.addsKeywords = oldMana.addsKeywords;
|
||||||
|
this.addsKeywordsType = oldMana.addsKeywordsType;
|
||||||
|
this.addsKeywordsUntil = oldMana.addsKeywordsUntil;
|
||||||
|
this.addsCounters = oldMana.addsCounters;
|
||||||
|
this.triggersWhenSpent = oldMana.triggersWhenSpent;
|
||||||
|
this.persistentMana = oldMana.persistentMana;
|
||||||
|
// Do we need to copy over last mana produced somehow? Its kinda gross
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* produceMana.
|
* produceMana.
|
||||||
|
|||||||
@@ -536,7 +536,7 @@ public class SpellAbilityPickerSimulationTest extends SimulationTest {
|
|||||||
AssertJUnit.assertTrue(saDesc, saDesc.startsWith("Lightning Bolt deals 3 damage to any target."));
|
AssertJUnit.assertTrue(saDesc, saDesc.startsWith("Lightning Bolt deals 3 damage to any target."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(enabled = false)
|
@Test(enabled = true)
|
||||||
public void testPlayingPumpSpellsAfterBlocks() {
|
public void testPlayingPumpSpellsAfterBlocks() {
|
||||||
Game game = initAndCreateGame();
|
Game game = initAndCreateGame();
|
||||||
Player p = game.getPlayers().get(1);
|
Player p = game.getPlayers().get(1);
|
||||||
|
|||||||
Reference in New Issue
Block a user