[JAVA] Introduction au développement du mod Slay the Spire (3) Définition de la carte originale

introduction

Dans ce chapitre, nous expliquerons les méthodes suivantes en citant le code source.

Si vous voulez voir l'image complète de chaque fichier, veuillez vous référer à ce qui suit.

https://github.com/kojim/StSModStudy/tree/master/mod001

ModTheSpire.json

{
  "modid": "StsModStudy",
  "name": "StsModStudy",
  "author_list": ["ykojim"],
  "description": "",
  "version": "0.0.1",
  "sts_version": "01-11-2019",
  "mts_version": "3.7.0",
  "dependencies": ["basemod", "stslib"],
  "update_json": ""
}

C'est presque comme vous l'avez vu. Le modid doit être unique, alors donnez-lui un nom qui ne chevauche pas les autres.

Classe de point d'entrée

@SpireInitializer
public class Main implements
  EditCardsSubscriber,   //Implémenter lors de l'ajout d'une carte
  EditStringsSubscriber  //Implémenter lors de la lecture d'un fichier de langue
{

    public Main(){
        BaseMod.subscribe(this);
    }

    // @Les classes qualifiées avec SpireInitializer doivent définir cette méthode
    public static void initialize() {
        Main main = new Main();
    }

    @Override
    public void receiveEditStrings() {
        //Ajoutez votre propre fichier de langue défini
        // Settings.JPN pour la langue,ENG est inclus en anglais
        BaseMod.loadCustomStringsFile(CardStrings.class, "assets/loc/cards-" + Settings.language + ".json");
    }

    @Override
    public void receiveEditCards() {
        //Ajoutez votre propre carte définie
        BaseMod.addCard(new Flare());
    }
}

@spireinitializerLa classe qualifiée avec l'annotation est la classe de point d'entrée. Ici, nous activerons chaque fichier et carte de langue définis de manière unique. Veuillez noter que l'interface à implémenter changera en fonction de ce que vous souhaitez réaliser. Notez également que la méthode initialize est requise.

Classe de définition de la carte d'origine

//Les cartes sont définies en héritant de la classe CustomCard
public class Flare extends CustomCard {
    public static final String ID = "stsmodstudy:Flare";
    //cartes lues dans la classe Main avec getCardStrings-JPN.Obtenir des informations sur la chaîne dans json
    private static CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
    public static final String NAME = cardStrings.NAME;
    public static final String DESCRIPTION = cardStrings.DESCRIPTION;

Vous pouvez définir votre propre carte en définissant une classe qui hérite de la classe CustomCard.

Étant donné que les données de la chaîne de caractères que l'utilisateur peut voir doivent être internationalisées, elles seront définies dans le fichier de langue, pas dans cette classe. Seule la clé stsmodstudy: Flare``` pour obtenir les informations du fichier de langue est définie ici.

Il est recommandé de placer le modid devant et le nom de la carte après.




```java
    //Effet activé lors de l'utilisation d'une carte
    @Override
    public void use(AbstractPlayer p, AbstractMonster m) {
        //A fait des dégats
        AbstractDungeon.actionManager.addToBottom(
            new com.megacrit.cardcrawl.actions.common.DamageAction(
                m,
                new DamageInfo(p, this.damage, this.damageTypeForTurn),
                AbstractGameAction.AttackEffect.SLASH_DIAGONAL) //Effet d'écran
        );
        //Faire une vulnérabilité
        AbstractDungeon.actionManager.addToBottom(
            new ApplyPowerAction(                                //Chamois/Tous les affaiblissements sont traités comme du pouvoir en interne
                m,
                p,
                new VulnerablePower(m, this.magicNumber, false), //Vulnérable(=ennemi)À
                this.magicNumber,
                true,
                AbstractGameAction.AttackEffect.NONE)            //Effet d'écran
        );
    }

Cette méthode est la clé numéro un sur la carte. Si vous avez joué au jeu, vous saurez probablement que ce jeu est basé sur un modèle dans lequel les effets de l'utilisation de cartes sont empilés dans une pile et traités en séquence.

AbstractDungeon.En appelant chaque méthode d'actionManager, le traitement est ajouté à la pile.


 Ici, nous sommes vulnérables tout en endommageant.

# Fichier de langue

```json
{
  "stsmodstudy:Flare": {
    "NAME": "56 guerriers",
    "DESCRIPTION": "!D!A fait des dégats"
  }
}

Définit les informations de langue de la carte. nameEst le nom de la carte,descriptionEst-ce l'explication de l'effet de la carte. descriptionDans!d! !b! !m!Chacun a une signification particulière. !d!Est une classe de cartedamage basedamage upgradeddamagevariable, !b!Est une classe de carteblock baseblock upgradedblockvariable, !m!Est une classe de cartemagicnumber basemagicnumber upgradedmagicnumberIl est développé en variables en fonction de la situation.

Recommended Posts

Introduction au développement du mod Slay the Spire (3) Définition de la carte originale
Introduction au développement du mod Slay the Spire (1) Introduction
Introduction au développement de modules Slay the Spire (2) Construction de l'environnement de développement
Introduction au développement de Keycloak
Introduction au développement d'applications Android
Minecraft1.14.4 Mémorandum de développement MOD 1 [Recette originale]
Sortie du livre "Introduction à Java"
Introduction au développement pratique de conteneurs Docker / Kubernetes
Apprenez à créer un serveur WEB Introduction au développement d'applications WEB à partir des bases