GUI: introduced default card hints:

* refactor: added helper emblems instead rad counter's inherent emblems (use initGameDefaultHelperEmblems to define new card hints or other fake objects);
* refactor: added card hints support for emblems, planes and other command objects;
* GUI: added storm counter as default card hint (use hints tool to see it, closes #12360);
This commit is contained in:
Oleg Agafonov 2024-07-27 09:40:41 +04:00
parent 83823acec7
commit 521a0f6e32
36 changed files with 234 additions and 144 deletions

View file

@ -1,5 +1,6 @@
package mage.abilities;
import mage.MageObject;
import mage.abilities.common.ZoneChangeTriggeredAbility;
import mage.abilities.costs.Cost;
import mage.abilities.keyword.ProtectionAbility;
@ -7,6 +8,7 @@ import mage.abilities.mana.ActivatedManaAbilityImpl;
import mage.abilities.mana.ManaAbility;
import mage.constants.Zone;
import mage.game.Game;
import mage.util.CardUtil;
import mage.util.ThreadLocalStringBuilder;
import org.apache.log4j.Logger;
@ -44,12 +46,12 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
}
@Override
public List<String> getRules(String source) {
return getRules(source, true);
public List<String> getRules() {
return getRules(true);
}
@Override
public List<String> getRules(String source, boolean capitalize) {
public List<String> getRules(boolean capitalize) {
List<String> rules = new ArrayList<>();
for (T ability : this) {
@ -102,6 +104,12 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
return rules;
}
@Override
public List<String> getRules(Game game, MageObject object) {
Abilities<Ability> sourceAbilities = this.getAllAbilities();
return CardUtil.getCardRulesWithAdditionalInfo(game, object, sourceAbilities, sourceAbilities);
}
/**
* Activated Ability in the engine are broader than in the rules.
* Notably SpellAbility & PlayLandAbility are ActivatedAbility,
@ -193,6 +201,11 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
.collect(Collectors.toCollection(AbilitiesImpl::new));
}
@Override
public Abilities<Ability> getAllAbilities() {
return stream().collect(Collectors.toCollection(AbilitiesImpl::new));
}
@Override
public void setControllerId(UUID controllerId) {
for (Ability ability : this) {