mirror of
https://github.com/correl/mage.git
synced 2024-11-25 03:00:11 +00:00
[AFR] added card icons with class level info (#7808)
This commit is contained in:
parent
20245f32f6
commit
2d8be6663b
8 changed files with 67 additions and 3 deletions
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 16.1 16.1" style="enable-background:new 0 0 16.1 16.1;" xml:space="preserve">
|
||||||
|
<path d="M8.5,0.7c-0.3-0.2-0.6-0.2-0.9,0L1.9,4C1.7,4.2,1.5,4.5,1.5,4.8v6.4c0,0.3,0.2,0.6,0.5,0.8l5.6,3.4c0.3,0.2,0.6,0.2,0.9,0
|
||||||
|
l5.6-3.4c0.3-0.2,0.5-0.5,0.5-0.8V4.8c0-0.3-0.2-0.6-0.5-0.8L8.5,0.7z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 562 B |
|
@ -416,7 +416,7 @@ public class CardView extends SimpleCardView {
|
||||||
|
|
||||||
// card icons for permanents on battlefield
|
// card icons for permanents on battlefield
|
||||||
permanent.getAbilities(game).forEach(ability -> {
|
permanent.getAbilities(game).forEach(ability -> {
|
||||||
this.cardIcons.addAll(ability.getIcons());
|
this.cardIcons.addAll(ability.getIcons(game));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (card.isCopy()) {
|
if (card.isCopy()) {
|
||||||
|
|
|
@ -552,8 +552,21 @@ public interface Ability extends Controllable, Serializable {
|
||||||
|
|
||||||
Ability addHint(Hint hint);
|
Ability addHint(Hint hint);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For abilities with static icons
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
List<CardIcon> getIcons();
|
List<CardIcon> getIcons();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For abilities with dynamic icons
|
||||||
|
*
|
||||||
|
* @param game can be null for static calls like copies
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<CardIcon> getIcons(Game game);
|
||||||
|
|
||||||
Ability addIcon(CardIcon cardIcon);
|
Ability addIcon(CardIcon cardIcon);
|
||||||
|
|
||||||
Ability addCustomOutcome(Outcome customOutcome);
|
Ability addCustomOutcome(Outcome customOutcome);
|
||||||
|
|
|
@ -1342,7 +1342,12 @@ public abstract class AbilityImpl implements Ability {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CardIcon> getIcons() {
|
final public List<CardIcon> getIcons() {
|
||||||
|
return getIcons(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CardIcon> getIcons(Game game) {
|
||||||
return this.icons;
|
return this.icons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package mage.abilities.icon;
|
package mage.abilities.icon;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author JayDi85
|
* @author JayDi85
|
||||||
*/
|
*/
|
||||||
public class CardIconImpl implements CardIcon {
|
public class CardIconImpl implements CardIcon, Serializable {
|
||||||
|
|
||||||
private final CardIconType cardIconType;
|
private final CardIconType cardIconType;
|
||||||
private final String text;
|
private final String text;
|
||||||
|
|
|
@ -29,6 +29,7 @@ public enum CardIconType {
|
||||||
ABILITY_INFECT("prepared/flask.svg", CardIconCategory.ABILITY, 100),
|
ABILITY_INFECT("prepared/flask.svg", CardIconCategory.ABILITY, 100),
|
||||||
ABILITY_INDESTRUCTIBLE("prepared/ankh.svg", CardIconCategory.ABILITY, 100),
|
ABILITY_INDESTRUCTIBLE("prepared/ankh.svg", CardIconCategory.ABILITY, 100),
|
||||||
ABILITY_VIGILANCE("prepared/eye.svg", CardIconCategory.ABILITY, 100),
|
ABILITY_VIGILANCE("prepared/eye.svg", CardIconCategory.ABILITY, 100),
|
||||||
|
ABILITY_CLASS_LEVEL("prepared/hexagon-fill.svg", CardIconCategory.ABILITY, 100),
|
||||||
//
|
//
|
||||||
SYSTEM_COMBINED("prepared/square-fill.svg", CardIconCategory.SYSTEM, 1000), // inner usage, must use last order
|
SYSTEM_COMBINED("prepared/square-fill.svg", CardIconCategory.SYSTEM, 1000), // inner usage, must use last order
|
||||||
SYSTEM_DEBUG("prepared/link.svg", CardIconCategory.SYSTEM, 1000); // used for test render dialog
|
SYSTEM_DEBUG("prepared/link.svg", CardIconCategory.SYSTEM, 1000); // used for test render dialog
|
||||||
|
|
|
@ -2,7 +2,15 @@ package mage.abilities.keyword;
|
||||||
|
|
||||||
import mage.abilities.StaticAbility;
|
import mage.abilities.StaticAbility;
|
||||||
import mage.abilities.hint.common.ClassLevelHint;
|
import mage.abilities.hint.common.ClassLevelHint;
|
||||||
|
import mage.abilities.icon.CardIcon;
|
||||||
|
import mage.abilities.icon.CardIconImpl;
|
||||||
|
import mage.abilities.icon.CardIconType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.permanent.Permanent;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
|
@ -27,4 +35,27 @@ public class ClassReminderAbility extends StaticAbility {
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "<i>(Gain the next level as a sorcery to add its ability.)</i>";
|
return "<i>(Gain the next level as a sorcery to add its ability.)</i>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CardIcon> getIcons(Game game) {
|
||||||
|
if (game == null) {
|
||||||
|
return this.icons;
|
||||||
|
}
|
||||||
|
|
||||||
|
// dynamic GUI icon with current level
|
||||||
|
List<CardIcon> res = new ArrayList<>();
|
||||||
|
Permanent permanent = this.getSourcePermanentOrLKI(game);
|
||||||
|
if (permanent == null) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
CardIcon levelIcon = new CardIconImpl(
|
||||||
|
CardIconType.ABILITY_CLASS_LEVEL,
|
||||||
|
"Current class level: " + permanent.getClassLevel(),
|
||||||
|
String.valueOf(permanent.getClassLevel())
|
||||||
|
);
|
||||||
|
res.add(levelIcon);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -692,6 +692,11 @@ public class StackAbility extends StackObjectImpl implements Ability {
|
||||||
return this.ability.getIcons();
|
return this.ability.getIcons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CardIcon> getIcons(Game game) {
|
||||||
|
return this.ability.getIcons(game);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Ability addIcon(CardIcon cardIcon) {
|
public Ability addIcon(CardIcon cardIcon) {
|
||||||
throw new IllegalArgumentException("Stack ability is not supports icon adding");
|
throw new IllegalArgumentException("Stack ability is not supports icon adding");
|
||||||
|
|
Loading…
Reference in a new issue