Splitting the Keyword ModifierEffect into 3 to speed up querying.

This commit is contained in:
marcins78@gmail.com
2011-12-04 05:41:31 +00:00
parent fb887994b4
commit 0f364aa6fe
5 changed files with 12 additions and 10 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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
}

View File

@@ -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;
}

View File

@@ -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;
}