GUI: added card hints in choose replacement effect dialog

This commit is contained in:
Oleg Agafonov 2024-07-19 00:05:57 +04:00
parent 67ff2da060
commit 7b2e9b390c
7 changed files with 50 additions and 26 deletions

View file

@ -868,7 +868,10 @@ public class ContinuousEffects implements Serializable {
} else {
//20100716 - 616.1c
Player player = game.getPlayer(event.getPlayerId());
index = player.chooseReplacementEffect(getReplacementEffectsTexts(rEffects, game), game);
Map<String, String> effectsMap = new LinkedHashMap<>();
Map<String, MageObject> objectsMap = new LinkedHashMap<>();
prepareReplacementEffectMaps(rEffects, game, effectsMap, objectsMap);
index = player.chooseReplacementEffect(effectsMap, objectsMap, game);
}
// get the selected effect
int checked = 0;
@ -1317,18 +1320,26 @@ public class ContinuousEffects implements Serializable {
}
}
public Map<String, String> getReplacementEffectsTexts(Map<ReplacementEffect, Set<Ability>> rEffects, Game game) {
public void prepareReplacementEffectMaps(Map<ReplacementEffect, Set<Ability>> rEffects, Game game,
Map<String, String> effectsMap, Map<String, MageObject> objectsMap) {
// warning, autoSelectReplacementEffects uses [object id] in texts as different settings,
// so if you change keys or texts logic then don't forget to change auto-choose too
Map<String, String> texts = new LinkedHashMap<>();
if (!(effectsMap instanceof LinkedHashMap) || !(objectsMap instanceof LinkedHashMap)) {
throw new IllegalArgumentException("Wrong code usage: must use LinkedHashMap only");
}
effectsMap.clear();
objectsMap.clear();
for (Map.Entry<ReplacementEffect, Set<Ability>> entry : rEffects.entrySet()) {
if (entry.getValue() != null) {
for (Ability ability : entry.getValue()) {
MageObject object = game.getObject(ability.getSourceId());
String key = ability.getId().toString() + '_' + entry.getKey().getId().toString();
if (object != null) {
texts.put(ability.getId().toString() + '_' + entry.getKey().getId().toString(), object.getIdName() + ": " + ability.getRule(object.getName()));
effectsMap.put(key, object.getIdName() + ": " + ability.getRule(object.getName()));
objectsMap.put(key, object);
} else {
texts.put(ability.getId().toString() + '_' + entry.getKey().getId().toString(), entry.getKey().getText(null));
effectsMap.put(key, entry.getKey().getText(null));
objectsMap.put(key, null);
}
}
} else {
@ -1337,7 +1348,6 @@ public class ContinuousEffects implements Serializable {
}
}
}
return texts;
}
public boolean existRequirementEffects() {