forked from External/mage
Costs Tag Tracking part 2: Tag system and X values, reworked deep copy code (#11406)
* Implement Costs Tag Map system * Use Costs Tag Map system to store X value for spells, abilities, and resolving permanents * Store Bestow without target's tags Change functions for getting tags and storing the tags of a new permanent * Create and use deep copy function in CardUtil, add Copyable<T> to many classes * Fix Hall Of the Bandit Lord infinite loop * Add additional comments * Don't store null/empty costs tags maps (saves memory) * Fix two more Watchers with Ability variable * Add check for exact collection types during deep copy * Use generics instead of pure type erasure during deep copy * convert more code to using deep copy helper, everything use Object copier, add EnumMap * fix documentation * Don't need the separate null checks anymore (handled in deepCopyObject) * Minor cleanup
This commit is contained in:
parent
72e30f1574
commit
bea33c7493
29 changed files with 458 additions and 338 deletions
|
|
@ -2,6 +2,7 @@ package mage.game;
|
|||
|
||||
import mage.MageItem;
|
||||
import mage.MageObject;
|
||||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.ActivatedAbility;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
|
|
@ -118,6 +119,12 @@ public interface Game extends MageItem, Serializable, Copyable<Game> {
|
|||
Map<UUID, Permanent> getPermanentsEntering();
|
||||
|
||||
Map<Zone, Map<UUID, MageObject>> getLKI();
|
||||
Map<MageObjectReference, Map<String, Object>> getPermanentCostsTags();
|
||||
|
||||
/**
|
||||
* Take the source's Costs Tags and store it for later access through the MOR.
|
||||
*/
|
||||
void storePermanentCostsTags(MageObjectReference permanentMOR, Ability source);
|
||||
|
||||
// Result must be checked for null. Possible errors search pattern: (\S*) = game.getCard.+\n(?!.+\1 != null)
|
||||
Card getCard(UUID cardId);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue