mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Fix commander casting which I broke in r32823.
Revert to the original implementation of adding the ability to the Game cache in clone(), but now update this in setHostCard() if the new card comes from a different Game object.
This commit is contained in:
@@ -193,8 +193,11 @@ public class Game {
|
||||
public SpellAbility getSpellAbility(final SpellAbilityView view) {
|
||||
return spabCache.get(view);
|
||||
}
|
||||
public void addSpellAbility(int id, SpellAbility spellAbility) {
|
||||
spabCache.put(Integer.valueOf(id), spellAbility);
|
||||
public void addSpellAbility(SpellAbility spellAbility) {
|
||||
spabCache.put(spellAbility.getId(), spellAbility);
|
||||
}
|
||||
public void removeSpellAbility(SpellAbility spellAbility) {
|
||||
spabCache.remove(spellAbility.getId());
|
||||
}
|
||||
|
||||
public Game(List<RegisteredPlayer> players0, GameRules rules0, Match match0) { /* no more zones to map here */
|
||||
|
||||
@@ -13,6 +13,10 @@ public class GameEntityCache<Entity extends IIdentifiable, View extends Trackabl
|
||||
entityCache.put(id, entity);
|
||||
}
|
||||
|
||||
public void remove(Integer id) {
|
||||
entityCache.remove(id);
|
||||
}
|
||||
|
||||
public Entity get(View entityView) {
|
||||
if (entityView == null) { return null; }
|
||||
return entityCache.get(entityView.getId());
|
||||
|
||||
@@ -2068,9 +2068,6 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
|
||||
public final void addSpellAbility(final SpellAbility a) {
|
||||
a.setHostCard(this);
|
||||
if (game != null) {
|
||||
game.addSpellAbility(a.getId(), a);
|
||||
}
|
||||
currentState.addSpellAbility(a);
|
||||
currentState.getView().updateAbilityText(this, currentState);
|
||||
}
|
||||
|
||||
@@ -183,12 +183,12 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
||||
}
|
||||
view = view0;
|
||||
if (hostCard != null && hostCard.getGame() != null) {
|
||||
hostCard.getGame().addSpellAbility(id, this);
|
||||
hostCard.getGame().addSpellAbility(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
public final int getId() {
|
||||
return id;
|
||||
}
|
||||
@Override
|
||||
@@ -204,6 +204,12 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
||||
public void setHostCard(final Card c) {
|
||||
if (hostCard == c) { return; }
|
||||
super.setHostCard(c);
|
||||
Game oldGame = hostCard != null ? hostCard.getGame() : null;
|
||||
Game newGame = c != null ? c.getGame() : null;
|
||||
if (oldGame != newGame) {
|
||||
if (oldGame != null) { oldGame.removeSpellAbility(this); }
|
||||
if (newGame != null) { newGame.addSpellAbility(this); }
|
||||
}
|
||||
|
||||
if (subAbility != null) {
|
||||
subAbility.setHostCard(c);
|
||||
@@ -760,7 +766,9 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
||||
clone = (SpellAbility) clone();
|
||||
clone.id = nextId();
|
||||
clone.view = new SpellAbilityView(clone);
|
||||
|
||||
if (hostCard != null && hostCard.getGame() != null) {
|
||||
hostCard.getGame().addSpellAbility(clone);
|
||||
}
|
||||
// need to clone the maps too so they can be changed
|
||||
clone.originalMapParams = Maps.newHashMap(this.originalMapParams);
|
||||
clone.mapParams = Maps.newHashMap(this.mapParams);
|
||||
|
||||
Reference in New Issue
Block a user