Skip to content

Commit

Permalink
add card descriptors to AbstractCard and AbstractCardModifier (davisc…
Browse files Browse the repository at this point in the history
…ook477#374)

* add card descriptors to AbstractCard and AbstractCardModifier

* remove CardDescriptors spirefield
  • Loading branch information
NellyDevo authored Feb 12, 2023
1 parent c8871a4 commit 8fa066a
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 42 deletions.
10 changes: 8 additions & 2 deletions mod/src/main/java/basemod/abstracts/AbstractCardModifier.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package basemod.abstracts;

import basemod.helpers.TooltipInfo;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
Expand All @@ -14,7 +13,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public abstract class AbstractCardModifier implements Comparable<AbstractCardModifier> {
Expand Down Expand Up @@ -221,6 +220,13 @@ public boolean shouldApply(AbstractCard card) {
return true;
}

/**
* return a list of words to be rendered with the card's card type
*/
public List<String> extraDescriptors(AbstractCard card) {
return Collections.emptyList();
}

/**
* lower number = calculates first. For list sorting purposes. Don't override. Or do, I'm a comment, not a cop.
*/
Expand Down
7 changes: 7 additions & 0 deletions mod/src/main/java/basemod/helpers/CardModifierManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class CardModifierManager
{
Expand Down Expand Up @@ -343,6 +344,12 @@ public static boolean canPlayCard(AbstractCard card) {
return true;
}

public static List<String> getExtraDescriptors(AbstractCard card) {
List<String> list = new ArrayList<>();
modifiers(card).forEach(mod -> list.addAll(mod.extraDescriptors(card)));
return list;
}

private static void addToBot(AbstractGameAction action) {
AbstractDungeon.actionManager.addToBottom(action);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard;

import basemod.abstracts.CustomCard;
import basemod.helpers.CardModifierManager;
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
Expand Down Expand Up @@ -30,13 +31,11 @@ public static class Text
)
public static void Insert(AbstractCard __instance, SpriteBatch sb, @ByRef String[] text)
{
if (__instance instanceof CustomCard) {
List<String> descriptors = new ArrayList<>();
descriptors.add(text[0]);
descriptors.addAll(((CustomCard) __instance).getCardDescriptors());
if (descriptors.size() > 1) {
text[0] = String.join(SEPARATOR, descriptors);
}
List<String> descriptors = new ArrayList<>();
descriptors.add(text[0]);
descriptors.addAll(getAllDescriptors(__instance));
if (descriptors.size() > 1) {
text[0] = String.join(SEPARATOR, descriptors);
}
}

Expand All @@ -63,39 +62,37 @@ public static class Frame
)
public static void Insert(AbstractCard __instance, SpriteBatch sb, float x, float y, @ByRef float[] tOffset, @ByRef float[] tWidth)
{
if (__instance instanceof CustomCard) {
String typeText;
switch (__instance.type) {
case ATTACK:
typeText = AbstractCard.TEXT[0];
break;
case SKILL:
typeText = AbstractCard.TEXT[1];
break;
case POWER:
typeText = AbstractCard.TEXT[2];
break;
case STATUS:
typeText = AbstractCard.TEXT[7];
break;
case CURSE:
typeText = AbstractCard.TEXT[3];
break;
default:
typeText = AbstractCard.TEXT[5];
break;
}
List<String> descriptors = new ArrayList<>();
descriptors.add(typeText);
descriptors.addAll(((CustomCard) __instance).getCardDescriptors());
if (descriptors.size() > 1) {
String text = String.join(SEPARATOR, descriptors);
GlyphLayout gl = new GlyphLayout();
FontHelper.cardTypeFont.getData().setScale(1f);
gl.setText(FontHelper.cardTypeFont, text);
tOffset[0] = (gl.width - 38 * Settings.scale) / 2f;
tWidth[0] = (gl.width - 0f) / (32 * Settings.scale);
}
String typeText;
switch (__instance.type) {
case ATTACK:
typeText = AbstractCard.TEXT[0];
break;
case SKILL:
typeText = AbstractCard.TEXT[1];
break;
case POWER:
typeText = AbstractCard.TEXT[2];
break;
case STATUS:
typeText = AbstractCard.TEXT[7];
break;
case CURSE:
typeText = AbstractCard.TEXT[3];
break;
default:
typeText = AbstractCard.TEXT[5];
break;
}
List<String> descriptors = new ArrayList<>();
descriptors.add(typeText);
descriptors.addAll(getAllDescriptors(__instance));
if (descriptors.size() > 1) {
String text = String.join(SEPARATOR, descriptors);
GlyphLayout gl = new GlyphLayout();
FontHelper.cardTypeFont.getData().setScale(1f);
gl.setText(FontHelper.cardTypeFont, text);
tOffset[0] = (gl.width - 38 * Settings.scale) / 2f;
tWidth[0] = (gl.width - 0f) / (32 * Settings.scale);
}
}

Expand Down Expand Up @@ -149,4 +146,13 @@ public static SpireReturn<Void> Prefix(AbstractCard __instance, SpriteBatch sb,
return SpireReturn.Continue();
}
}

private static List<String> getAllDescriptors(AbstractCard card) {
List<String> list = new ArrayList<>();
if (card instanceof CustomCard) {
list.addAll(((CustomCard) card).getCardDescriptors());
}
list.addAll(CardModifierManager.getExtraDescriptors(card));
return list;
}
}

0 comments on commit 8fa066a

Please sign in to comment.