small nonfunctional cleanup to continuous effects handling

This commit is contained in:
Evan Kranzler 2022-02-17 08:19:52 -05:00
parent e532cfddcd
commit 9c8943384a
2 changed files with 18 additions and 32 deletions

View file

@ -1288,45 +1288,36 @@ public class ContinuousEffects implements Serializable {
switch (effect.getEffectType()) { switch (effect.getEffectType()) {
case REPLACEMENT: case REPLACEMENT:
case REDIRECTION: case REDIRECTION:
ReplacementEffect newReplacementEffect = (ReplacementEffect) effect; replacementEffects.addEffect((ReplacementEffect) effect, source);
replacementEffects.addEffect(newReplacementEffect, source);
break; break;
case PREVENTION: case PREVENTION:
PreventionEffect newPreventionEffect = (PreventionEffect) effect; preventionEffects.addEffect((PreventionEffect) effect, source);
preventionEffects.addEffect(newPreventionEffect, source);
break; break;
case RESTRICTION: case RESTRICTION:
RestrictionEffect newRestrictionEffect = (RestrictionEffect) effect; restrictionEffects.addEffect((RestrictionEffect) effect, source);
restrictionEffects.addEffect(newRestrictionEffect, source);
break; break;
case RESTRICTION_UNTAP_NOT_MORE_THAN: case RESTRICTION_UNTAP_NOT_MORE_THAN:
RestrictionUntapNotMoreThanEffect newRestrictionUntapNotMoreThanEffect = (RestrictionUntapNotMoreThanEffect) effect; restrictionUntapNotMoreThanEffects.addEffect((RestrictionUntapNotMoreThanEffect) effect, source);
restrictionUntapNotMoreThanEffects.addEffect(newRestrictionUntapNotMoreThanEffect, source);
break; break;
case REQUIREMENT: case REQUIREMENT:
RequirementEffect newRequirementEffect = (RequirementEffect) effect; requirementEffects.addEffect((RequirementEffect) effect, source);
requirementEffects.addEffect(newRequirementEffect, source);
break; break;
case ASTHOUGH: case ASTHOUGH:
AsThoughEffect newAsThoughEffect = (AsThoughEffect) effect; AsThoughEffect newAsThoughEffect = (AsThoughEffect) effect;
if (!asThoughEffectsMap.containsKey(newAsThoughEffect.getAsThoughEffectType())) { asThoughEffectsMap.computeIfAbsent(newAsThoughEffect.getAsThoughEffectType(), x -> {
ContinuousEffectsList<AsThoughEffect> list = new ContinuousEffectsList<>(); ContinuousEffectsList<AsThoughEffect> list = new ContinuousEffectsList<>();
allEffectsLists.add(list); allEffectsLists.add(list);
asThoughEffectsMap.put(newAsThoughEffect.getAsThoughEffectType(), list); return list;
} }).addEffect(newAsThoughEffect, source);
asThoughEffectsMap.get(newAsThoughEffect.getAsThoughEffectType()).addEffect(newAsThoughEffect, source);
break; break;
case COSTMODIFICATION: case COSTMODIFICATION:
CostModificationEffect newCostModificationEffect = (CostModificationEffect) effect; costModificationEffects.addEffect((CostModificationEffect) effect, source);
costModificationEffects.addEffect(newCostModificationEffect, source);
break; break;
case SPLICE: case SPLICE:
SpliceCardEffect newSpliceCardEffect = (SpliceCardEffect) effect; spliceCardEffects.addEffect((SpliceCardEffect) effect, source);
spliceCardEffects.addEffect(newSpliceCardEffect, source);
break; break;
case CONTINUOUS_RULE_MODIFICATION: case CONTINUOUS_RULE_MODIFICATION:
ContinuousRuleModifyingEffect newContinuousRuleModifiyingEffect = (ContinuousRuleModifyingEffect) effect; continuousRuleModifyingEffects.addEffect((ContinuousRuleModifyingEffect) effect, source);
continuousRuleModifyingEffects.addEffect(newContinuousRuleModifiyingEffect, source);
break; break;
default: default:
layeredEffects.addEffect(effect, source); layeredEffects.addEffect(effect, source);

View file

@ -192,24 +192,19 @@ public class ContinuousEffectsList<T extends ContinuousEffect> extends ArrayList
* @param source - connected ability * @param source - connected ability
*/ */
public void addEffect(T effect, Ability source) { public void addEffect(T effect, Ability source) {
if (effectAbilityMap.containsKey(effect.getId())) { Set<Ability> set = effectAbilityMap.computeIfAbsent(effect.getId(), x -> new HashSet<>());
Set<Ability> set = effectAbilityMap.get(effect.getId()); if (set.stream()
for (Ability ability : set) { .filter(ability -> ability.getId().equals(source.getId()))
if (ability.getId().equals(source.getId()) && ability.getSourceId().equals(source.getSourceId())) { .map(Ability::getId)
.anyMatch(source.getId()::equals)) {
return; return;
} }
}
set.add(source); set.add(source);
return;
}
Set<Ability> set = new HashSet<>();
set.add(source);
this.effectAbilityMap.put(effect.getId(), set);
this.add(effect); this.add(effect);
} }
public Set<Ability> getAbility(UUID effectId) { public Set<Ability> getAbility(UUID effectId) {
return effectAbilityMap.getOrDefault(effectId, new HashSet<>()); return effectAbilityMap.computeIfAbsent(effectId, x -> new HashSet<>());
} }
public void removeTemporaryEffects() { public void removeTemporaryEffects() {
@ -230,7 +225,7 @@ public class ContinuousEffectsList<T extends ContinuousEffect> extends ArrayList
@Override @Override
public boolean contains(Object object) { public boolean contains(Object object) {
if (object == null || !(object instanceof ContinuousEffect)) { if (!(object instanceof ContinuousEffect)) {
return false; return false;
} }