mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Card & CardFactoryUtil & KeywordsChange: now adding Keywords to card, does add Trigger and Replacement effects into it.
This commit is contained in:
@@ -3004,15 +3004,21 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
// if the key already exists - merge entries
|
||||
final KeywordsChange cks = changedCardKeywords.get(timestamp);
|
||||
if (cks != null) {
|
||||
cks.removeKeywords(this);
|
||||
List<String> kws = new ArrayList<>(keywords);
|
||||
List<String> rkws = new ArrayList<>(removeKeywords);
|
||||
boolean remAll = removeAllKeywords;
|
||||
kws.addAll(cks.getKeywords());
|
||||
rkws.addAll(cks.getRemoveKeywords());
|
||||
remAll |= cks.isRemoveAllKeywords();
|
||||
changedCardKeywords.put(timestamp, new KeywordsChange(kws, rkws, remAll));
|
||||
final KeywordsChange newCks = new KeywordsChange(kws, rkws, remAll);
|
||||
newCks.addKeywordsToCard(this);
|
||||
changedCardKeywords.put(timestamp, newCks);
|
||||
}
|
||||
else {
|
||||
final KeywordsChange newCks = new KeywordsChange(keywords, removeKeywords, removeAllKeywords);
|
||||
newCks.addKeywordsToCard(this);
|
||||
changedCardKeywords.put(timestamp, newCks);
|
||||
changedCardKeywords.put(timestamp, new KeywordsChange(keywords, removeKeywords, removeAllKeywords));
|
||||
}
|
||||
currentState.getView().updateKeywords(this, currentState);
|
||||
|
||||
@@ -53,6 +53,7 @@ import forge.game.card.CardPredicates.Presets;
|
||||
import forge.game.cost.Cost;
|
||||
import forge.game.cost.CostPayment;
|
||||
import forge.game.event.GameEventCardStatsChanged;
|
||||
import forge.game.keyword.KeywordsChange;
|
||||
import forge.game.phase.PhaseHandler;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.replacement.ReplacementEffect;
|
||||
@@ -2909,6 +2910,13 @@ public class CardFactoryUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static void addTriggerAbility(final String keyword, final Card card, final KeywordsChange kws) {
|
||||
|
||||
}
|
||||
|
||||
public static void addReplacementEffect(final String keyword, final Card card, final KeywordsChange kws) {
|
||||
|
||||
}
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param card
|
||||
|
||||
@@ -21,6 +21,11 @@ import java.util.List;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardFactoryUtil;
|
||||
import forge.game.replacement.ReplacementEffect;
|
||||
import forge.game.trigger.Trigger;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Card_Keywords class.
|
||||
@@ -34,6 +39,8 @@ public class KeywordsChange {
|
||||
private final List<String> removeKeywords;
|
||||
private final boolean removeAllKeywords;
|
||||
|
||||
private List<Trigger> triggers = Lists.<Trigger>newArrayList();
|
||||
private List<ReplacementEffect> replacements = Lists.<ReplacementEffect>newArrayList();
|
||||
/**
|
||||
*
|
||||
* Construct a new {@link KeywordsChange}.
|
||||
@@ -86,4 +93,28 @@ public class KeywordsChange {
|
||||
&& this.keywords.isEmpty()
|
||||
&& this.removeKeywords.isEmpty();
|
||||
}
|
||||
|
||||
public final void addKeywordsToCard(final Card host) {
|
||||
for (String k : keywords) {
|
||||
CardFactoryUtil.addTriggerAbility(k, host, this);
|
||||
CardFactoryUtil.addReplacementEffect(k, host, this);
|
||||
}
|
||||
}
|
||||
|
||||
public final void removeKeywords(final Card host) {
|
||||
for (Trigger t : triggers) {
|
||||
host.removeTrigger(t);
|
||||
}
|
||||
for (ReplacementEffect r : replacements) {
|
||||
host.removeReplacementEffect(r);
|
||||
}
|
||||
}
|
||||
|
||||
public final void addTrigger(final Trigger trg) {
|
||||
triggers.add(trg);
|
||||
}
|
||||
|
||||
public final void addReplacement(final ReplacementEffect trg) {
|
||||
replacements.add(trg);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user