Splitting the Keyword ModifierEffect into 3 to speed up querying.
This commit is contained in:
@@ -13,7 +13,7 @@ public class CancelKeywordBonusModifier extends AbstractModifier implements Keyw
|
||||
private Keyword _keyword;
|
||||
|
||||
public CancelKeywordBonusModifier(PhysicalCard source, Keyword keyword, Filter affectFilter) {
|
||||
super(source, "Cancel " + keyword.getHumanReadable() + " keyword", affectFilter, ModifierEffect.KEYWORD_MODIFIER);
|
||||
super(source, "Cancel " + keyword.getHumanReadable() + " keyword", affectFilter, ModifierEffect.CANCEL_KEYWORD_BONUS_MODIFIER);
|
||||
_keyword = keyword;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class KeywordModifier extends AbstractModifier implements KeywordAffectin
|
||||
}
|
||||
|
||||
public KeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Condition condition, Keyword keyword, Evaluator evaluator) {
|
||||
super(physicalCard, null, affectFilter, condition, ModifierEffect.KEYWORD_MODIFIER);
|
||||
super(physicalCard, null, affectFilter, condition, ModifierEffect.GIVE_KEYWORD_MODIFIER);
|
||||
_keyword = keyword;
|
||||
_evaluator = evaluator;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
public enum ModifierEffect {
|
||||
SIGNET_MODIFIER, KEYWORD_MODIFIER, STRENGTH_MODIFIER, VITALITY_MODIFIER, RESISTANCE_MODIFIER, SITE_NUMBER_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER,
|
||||
SIGNET_MODIFIER, STRENGTH_MODIFIER, VITALITY_MODIFIER, RESISTANCE_MODIFIER, SITE_NUMBER_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER,
|
||||
WOUND_MODIFIER, BURDEN_MODIFIER, THREAT_MODIFIER,
|
||||
PRESENCE_MODIFIER, ARCHERY_MODIFIER, MOVE_LIMIT_MODIFIER, ACTION_MODIFIER, ASSIGNMENT_MODIFIER, DISCARD_FROM_PLAY_MODIFIER, DISCARD_NOT_FROM_PLAY,
|
||||
LOOK_OR_REVEAL_MODIFIER, SPOT_MODIFIER, TARGET_MODIFIER,
|
||||
|
||||
EXTRA_ACTION_MODIFIER, INITIATIVE_MODIFIER, TEXT_MODIFIER,
|
||||
|
||||
SPECIAL_FLAG_MODIFIER
|
||||
SPECIAL_FLAG_MODIFIER,
|
||||
|
||||
REMOVE_KEYWORD_MODIFIER, GIVE_KEYWORD_MODIFIER, CANCEL_KEYWORD_BONUS_MODIFIER
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
if (isCandidateForKeywordRemovalWithTextRemoval(gameState, physicalCard, keyword) && hasTextRemoved(gameState, physicalCard))
|
||||
return false;
|
||||
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.REMOVE_KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
if (modifier.isKeywordRemoved(gameState, this, physicalCard, keyword))
|
||||
return false;
|
||||
}
|
||||
@@ -215,7 +215,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
if (physicalCard.getBlueprint().hasKeyword(keyword))
|
||||
return true;
|
||||
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.GIVE_KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
if (appliesKeywordModifier(gameState, modifier.getSource(), keyword))
|
||||
if (modifier.hasKeyword(gameState, this, physicalCard, keyword))
|
||||
return true;
|
||||
@@ -233,13 +233,13 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
if (isCandidateForKeywordRemovalWithTextRemoval(gameState, physicalCard, keyword) && hasTextRemoved(gameState, physicalCard))
|
||||
return 0;
|
||||
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.REMOVE_KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
if (modifier.isKeywordRemoved(gameState, this, physicalCard, keyword))
|
||||
return 0;
|
||||
}
|
||||
|
||||
int result = physicalCard.getBlueprint().getKeywordCount(keyword);
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.GIVE_KEYWORD_MODIFIER, keyword, physicalCard)) {
|
||||
if (appliesKeywordModifier(gameState, modifier.getSource(), keyword))
|
||||
result += modifier.getKeywordCountModifier(gameState, this, physicalCard, keyword);
|
||||
}
|
||||
@@ -261,7 +261,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
private boolean appliesKeywordModifier(GameState gameState, PhysicalCard modifierSource, Keyword keyword) {
|
||||
if (modifierSource == null)
|
||||
return true;
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.KEYWORD_MODIFIER, keyword, modifierSource)) {
|
||||
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.CANCEL_KEYWORD_BONUS_MODIFIER, keyword, modifierSource)) {
|
||||
if (!modifier.appliesKeywordModifier(gameState, this, modifierSource, keyword))
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ public class RemoveKeywordModifier extends AbstractModifier implements KeywordAf
|
||||
}
|
||||
|
||||
public RemoveKeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Condition condition, Keyword keyword) {
|
||||
super(physicalCard, "Loses " + keyword.getHumanReadable() + " keyword(s)", affectFilter, condition, ModifierEffect.KEYWORD_MODIFIER);
|
||||
super(physicalCard, "Loses " + keyword.getHumanReadable() + " keyword(s)", affectFilter, condition, ModifierEffect.REMOVE_KEYWORD_MODIFIER);
|
||||
_keyword = keyword;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user