mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +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
|
// if the key already exists - merge entries
|
||||||
final KeywordsChange cks = changedCardKeywords.get(timestamp);
|
final KeywordsChange cks = changedCardKeywords.get(timestamp);
|
||||||
if (cks != null) {
|
if (cks != null) {
|
||||||
|
cks.removeKeywords(this);
|
||||||
List<String> kws = new ArrayList<>(keywords);
|
List<String> kws = new ArrayList<>(keywords);
|
||||||
List<String> rkws = new ArrayList<>(removeKeywords);
|
List<String> rkws = new ArrayList<>(removeKeywords);
|
||||||
boolean remAll = removeAllKeywords;
|
boolean remAll = removeAllKeywords;
|
||||||
kws.addAll(cks.getKeywords());
|
kws.addAll(cks.getKeywords());
|
||||||
rkws.addAll(cks.getRemoveKeywords());
|
rkws.addAll(cks.getRemoveKeywords());
|
||||||
remAll |= cks.isRemoveAllKeywords();
|
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 {
|
else {
|
||||||
|
final KeywordsChange newCks = new KeywordsChange(keywords, removeKeywords, removeAllKeywords);
|
||||||
|
newCks.addKeywordsToCard(this);
|
||||||
|
changedCardKeywords.put(timestamp, newCks);
|
||||||
changedCardKeywords.put(timestamp, new KeywordsChange(keywords, removeKeywords, removeAllKeywords));
|
changedCardKeywords.put(timestamp, new KeywordsChange(keywords, removeKeywords, removeAllKeywords));
|
||||||
}
|
}
|
||||||
currentState.getView().updateKeywords(this, currentState);
|
currentState.getView().updateKeywords(this, currentState);
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ import forge.game.card.CardPredicates.Presets;
|
|||||||
import forge.game.cost.Cost;
|
import forge.game.cost.Cost;
|
||||||
import forge.game.cost.CostPayment;
|
import forge.game.cost.CostPayment;
|
||||||
import forge.game.event.GameEventCardStatsChanged;
|
import forge.game.event.GameEventCardStatsChanged;
|
||||||
|
import forge.game.keyword.KeywordsChange;
|
||||||
import forge.game.phase.PhaseHandler;
|
import forge.game.phase.PhaseHandler;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.replacement.ReplacementEffect;
|
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.
|
* TODO: Write javadoc for this method.
|
||||||
* @param card
|
* @param card
|
||||||
|
|||||||
@@ -21,6 +21,11 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
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>
|
* <p>
|
||||||
* Card_Keywords class.
|
* Card_Keywords class.
|
||||||
@@ -34,6 +39,8 @@ public class KeywordsChange {
|
|||||||
private final List<String> removeKeywords;
|
private final List<String> removeKeywords;
|
||||||
private final boolean removeAllKeywords;
|
private final boolean removeAllKeywords;
|
||||||
|
|
||||||
|
private List<Trigger> triggers = Lists.<Trigger>newArrayList();
|
||||||
|
private List<ReplacementEffect> replacements = Lists.<ReplacementEffect>newArrayList();
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Construct a new {@link KeywordsChange}.
|
* Construct a new {@link KeywordsChange}.
|
||||||
@@ -86,4 +93,28 @@ public class KeywordsChange {
|
|||||||
&& this.keywords.isEmpty()
|
&& this.keywords.isEmpty()
|
||||||
&& this.removeKeywords.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