1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-05 09:12:29 -09:00

added cardutil method for incrementing map values

This commit is contained in:
Evan Kranzler 2021-11-29 21:34:04 -05:00
parent 90ae244fa5
commit e3b2ac15ba
28 changed files with 57 additions and 30 deletions

View file

@ -18,6 +18,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import mage.watchers.common.CastFromHandWatcher;
@ -147,7 +148,7 @@ class ChainerNightmareAdeptWatcher extends Watcher {
source.getSourceId(), source.getSourceObjectZoneChangeCounter(), game
);
morMap.computeIfAbsent(mor, m -> new HashMap<>())
.compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
.compute(source.getControllerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -17,6 +17,7 @@ import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game;
import mage.game.permanent.token.Construct4Token;
import mage.util.CardUtil;
import java.util.HashMap;
import java.util.Map;
@ -75,6 +76,6 @@ enum ChromeReplicatorCondition implements Condition {
.map(MageObject::getName)
.filter(Objects::nonNull)
.filter(s -> !s.isEmpty())
.anyMatch(s -> nameMap.compute(s, (x, i) -> i == null ? 1 : Integer.sum(i, 1)) >= 2);
.anyMatch(s -> nameMap.compute(s, CardUtil::setOrIncrementValue) >= 2);
}
}

View file

@ -16,6 +16,7 @@ import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetControlledPermanent;
import mage.util.CardUtil;
import java.util.*;
import java.util.stream.Collectors;
@ -115,7 +116,7 @@ class ClarionUltimatumTarget extends TargetCardInLibrary {
}
private void populateNameMap(Set<String> names) {
names.stream().forEach(name -> this.nameMap.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
names.stream().forEach(name -> this.nameMap.compute(name, CardUtil::setOrIncrementValue));
}
@Override
@ -133,7 +134,7 @@ class ClarionUltimatumTarget extends TargetCardInLibrary {
.map(game::getCard)
.filter(Objects::nonNull)
.map(MageObject::getName)
.forEach(name -> alreadyChosen.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
.forEach(name -> alreadyChosen.compute(name, CardUtil::setOrIncrementValue));
return nameMap.getOrDefault(card.getName(), 0)
> alreadyChosen.getOrDefault(card.getName(), 0);
}

View file

@ -19,6 +19,7 @@ import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -128,7 +129,7 @@ class ConfoundingConundrumWatcher extends Watcher {
}
Permanent permanent = game.getPermanent(event.getTargetId());
if (permanent != null && permanent.isLand(game)) {
playerMap.compute(permanent.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(permanent.getControllerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -126,7 +126,7 @@ class DargoTheShipwreckerWatcher extends Watcher {
}
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
if (permanent != null && (permanent.isCreature(game) || permanent.isArtifact(game))) {
sacMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
sacMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -15,6 +15,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
import mage.util.CardUtil;
import java.util.*;
import java.util.stream.Collectors;
@ -109,7 +110,7 @@ class DoublingChantTarget extends TargetCardInLibrary {
}
private void populateNameMap(Set<String> names) {
names.stream().forEach(name -> this.nameMap.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
names.stream().forEach(name -> this.nameMap.compute(name, CardUtil::setOrIncrementValue));
}
@Override
@ -127,7 +128,7 @@ class DoublingChantTarget extends TargetCardInLibrary {
.map(game::getCard)
.filter(Objects::nonNull)
.map(MageObject::getName)
.forEach(name -> alreadyChosen.compute(name, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
.forEach(name -> alreadyChosen.compute(name, CardUtil::setOrIncrementValue));
return nameMap.getOrDefault(card.getName(), 0)
> alreadyChosen.getOrDefault(card.getName(), 0);
}

View file

@ -18,6 +18,7 @@ import mage.game.permanent.token.FractalToken;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
import mage.target.targetpointer.FixedTarget;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -114,7 +115,7 @@ class EmergentSequenceWatcher extends Watcher {
public void watch(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD
&& ((EntersTheBattlefieldEvent) event).getTarget().isLand(game)) {
playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -17,6 +17,7 @@ import mage.game.Controllable;
import mage.game.Game;
import mage.game.permanent.token.SalamnderWarriorToken;
import mage.game.permanent.token.Token;
import mage.util.CardUtil;
import java.util.HashMap;
import java.util.Map;
@ -95,7 +96,7 @@ class GorMuldrakAmphinologistEffect extends OneShotEffect {
).stream()
.filter(Objects::nonNull)
.map(Controllable::getControllerId)
.forEach(uuid -> creatureMap.compute(uuid, (u, i) -> i == null ? 1 : Integer.sum(i, 1)));
.forEach(uuid -> creatureMap.compute(uuid, CardUtil::setOrIncrementValue));
int minValue = creatureMap.values().stream().mapToInt(x -> x).min().orElse(0);
minValue = Math.max(minValue, 0);
Token token = new SalamnderWarriorToken();

View file

@ -27,6 +27,7 @@ import mage.game.permanent.PermanentToken;
import mage.game.permanent.token.FoodToken;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -118,7 +119,7 @@ class GyomeMasterChefWatcher extends Watcher {
if (permanent == null || permanent instanceof PermanentToken || !permanent.isCreature(game)) {
return;
}
playerMap.compute(event.getPlayerId(), (u, i) -> i != null ? Integer.sum(i, 1) : 1);
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
@Override

View file

@ -16,6 +16,7 @@ import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -90,7 +91,7 @@ class HawkinsNationalLaboratoryWatcher extends Watcher {
if (permanent == null || !permanent.hasSubtype(SubType.CLUE, game)) {
return;
}
playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
@Override

View file

@ -12,6 +12,7 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetPlayer;
import mage.util.CardUtil;
import java.util.HashMap;
import java.util.Map;
@ -70,7 +71,7 @@ class HintOfInsanityEffect extends OneShotEffect {
.getCards(game)
.stream()
.map(MageObject::getName)
.forEach(s -> nameCounts.compute(s, (u, i) -> i == null ? 1 : Integer.sum(i, 1)));
.forEach(s -> nameCounts.compute(s, CardUtil::setOrIncrementValue));
Cards cards = new CardsImpl(
player.getHand()
.getCards(game)

View file

@ -19,6 +19,7 @@ import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.*;
@ -275,6 +276,6 @@ class IdolOfEnduranceWatcher extends Watcher {
source.getSourceId(), source.getSourceObjectZoneChangeCounter(), game
);
morMap.computeIfAbsent(mor, m -> new HashMap<>())
.compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
.compute(source.getControllerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -149,7 +149,7 @@ class InvasionOfTheGiantsWatcher extends Watcher {
}
Spell spell = game.getSpell(event.getSourceId());
if (spell != null && spell.hasSubtype(SubType.GIANT, game)) {
playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -16,6 +16,7 @@ import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.InsectToken;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -92,7 +93,7 @@ class IridescentHornbeetleWatcher extends Watcher {
|| !event.getData().equals(CounterType.P1P1.getName())) {
return;
}
playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
@Override

View file

@ -141,7 +141,7 @@ class KazaRoilChaserWatcher extends Watcher {
}
Spell spell = game.getSpell(event.getSourceId());
if (spell != null && spell.isInstantOrSorcery(game)) {
playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -15,6 +15,7 @@ import mage.constants.WatcherScope;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -89,7 +90,7 @@ class LilianasStandardBearerWatcher extends Watcher {
}
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.isDiesEvent() && zEvent.getTarget().isCreature(game)) {
playerMap.compute(zEvent.getTarget().getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(zEvent.getTarget().getControllerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -126,7 +126,7 @@ class MaelstromMuseWatcher extends Watcher {
}
Spell spell = game.getSpell(event.getSourceId());
if (spell != null && spell.isInstantOrSorcery(game)) {
playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -16,6 +16,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.stack.Spell;
import mage.target.TargetPermanent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -121,7 +122,7 @@ class RionyaFireDancerWatcher extends Watcher {
}
Spell spell = game.getSpell(event.getTargetId());
if (spell != null && spell.isInstantOrSorcery(game)) {
playerMap.compute(spell.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(spell.getControllerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -18,6 +18,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.*;
@ -185,6 +186,6 @@ class SerpentsSoulJarWatcher extends Watcher {
source.getSourceId(), source.getSourceObjectZoneChangeCounter(), game
);
morMap.computeIfAbsent(mor, m -> new HashMap<>())
.compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
.compute(source.getControllerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -27,6 +27,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.stack.Spell;
import mage.players.Player;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -182,7 +183,7 @@ class SorcererClassWatcher extends Watcher {
if (spell == null || !spell.isInstantOrSorcery(game)) {
return;
}
spellMap.compute(spell.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
spellMap.compute(spell.getControllerId(), CardUtil::setOrIncrementValue);
}
@Override

View file

@ -14,6 +14,7 @@ import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.SpiritWhiteToken;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -93,7 +94,7 @@ class ThalisseReverentMediumWatcher extends Watcher {
if (event.getType() != GameEvent.EventType.CREATED_TOKEN) {
return;
}
tokenMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
tokenMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
@Override

View file

@ -19,6 +19,7 @@ import mage.constants.*;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -103,7 +104,7 @@ class TheSpaceFamilyGoblinsonWatcher extends Watcher {
@Override
public void watch(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.DIE_ROLLED) {
map.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
map.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -16,6 +16,7 @@ import mage.game.events.GameEvent;
import mage.game.permanent.token.HumanSoldierToken;
import mage.game.stack.StackAbility;
import mage.game.stack.StackObject;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -114,7 +115,7 @@ class ValiantRescuerWatcher extends Watcher {
&& item.getStackAbility() instanceof CyclingAbility) {
playerMap.computeIfAbsent(event.getPlayerId(), u -> new HashMap<>());
playerMap.get(event.getPlayerId()).compute(
event.getSourceId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1)
event.getSourceId(), CardUtil::setOrIncrementValue
);
}
}

View file

@ -15,6 +15,7 @@ import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.players.ManaPoolItem;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -189,6 +190,6 @@ class WhispersteelDaggerWatcher extends Watcher {
);
morMap.computeIfAbsent(mor, m -> new HashMap<>())
.computeIfAbsent(ownerId, m -> new HashMap<>())
.compute(source.getControllerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
.compute(source.getControllerId(), CardUtil::setOrIncrementValue);
}
}

View file

@ -10,6 +10,7 @@ import mage.constants.SubTypeSet;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.util.CardUtil;
import java.util.*;
@ -43,7 +44,7 @@ public enum GreatestSharedCreatureTypeCount implements DynamicValue {
.map(permanent -> permanent.getSubtype(game))
.flatMap(Collection::stream)
.filter(subType -> subType.getSubTypeSet() == SubTypeSet.CreatureType)
.forEach(subType -> typeMap.compute(subType, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
.forEach(subType -> typeMap.compute(subType, CardUtil::setOrIncrementValue));
return changelings
+ typeMap
.values()

View file

@ -6,6 +6,7 @@ import mage.game.Game;
import mage.game.events.VoteEvent;
import mage.game.events.VotedEvent;
import mage.players.Player;
import mage.util.CardUtil;
import java.util.*;
import java.util.stream.Collectors;
@ -86,7 +87,7 @@ public abstract class VoteHandler<T> {
.stream()
.flatMap(votesList -> votesList.getValue().stream())
.forEach(vote -> {
totalVotes.compute(vote, (u, i) -> i == null ? 1 : Integer.sum(i, 1));
totalVotes.compute(vote, CardUtil::setOrIncrementValue);
});
Set<T> winners = this.getMostVoted();
@ -157,7 +158,7 @@ public abstract class VoteHandler<T> {
.values()
.stream()
.flatMap(Collection::stream)
.forEach(t -> map.compute(t, (s, i) -> i == null ? 1 : Integer.sum(i, 1)));
.forEach(t -> map.compute(t, CardUtil::setOrIncrementValue));
int max = map.values().stream().mapToInt(x -> x).max().orElse(0);
return map
.entrySet()

View file

@ -1452,4 +1452,8 @@ public final class CardUtil {
effect.apply(game, source);
return true;
}
public static <T> int setOrIncrementValue(T u, Integer i) {
return i == null ? 1 : Integer.sum(i, 1);
}
}

View file

@ -3,6 +3,7 @@ package mage.watchers.common;
import mage.constants.WatcherScope;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.util.CardUtil;
import mage.watchers.Watcher;
import java.util.HashMap;
@ -23,7 +24,7 @@ public class DiscardedCardWatcher extends Watcher {
@Override
public void watch(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.DISCARDED_CARD) {
playerMap.compute(event.getPlayerId(), (u, i) -> i == null ? 1 : Integer.sum(i, 1));
playerMap.compute(event.getPlayerId(), CardUtil::setOrIncrementValue);
}
}