[JAVA] Einführung in die Entwicklung der Spire Mod-Entwicklung (3) Definition der Originalkarte

Einführung

In diesem Kapitel werden die folgenden Methoden unter Angabe des Quellcodes erläutert.

Wenn Sie das gesamte Bild jeder Datei sehen möchten, lesen Sie bitte Folgendes.

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": ""
}

Es ist fast so, wie du es gesehen hast. Das Modid muss eindeutig sein, geben Sie ihm also einen Namen, der sich nicht mit anderen überschneidet.

Einstiegspunktklasse

@SpireInitializer
public class Main implements
  EditCardsSubscriber,   //Implementieren Sie beim Hinzufügen einer Karte
  EditStringsSubscriber  //Implementieren Sie beim Lesen einer Sprachdatei
{

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

    // @Mit SpireInitializer qualifizierte Klassen müssen diese Methode definieren
    public static void initialize() {
        Main main = new Main();
    }

    @Override
    public void receiveEditStrings() {
        //Fügen Sie Ihre eigene definierte Sprachdatei hinzu
        // Settings.JPN für Sprache,ENG ist in Englisch enthalten
        BaseMod.loadCustomStringsFile(CardStrings.class, "assets/loc/cards-" + Settings.language + ".json");
    }

    @Override
    public void receiveEditCards() {
        //Fügen Sie Ihre eigene definierte Karte hinzu
        BaseMod.addCard(new Flare());
    }
}

@spireinitializerDie mit der Annotation qualifizierte Klasse ist die Einstiegspunktklasse. Hier aktivieren wir jede eindeutig definierte Sprachdatei und Karte. Bitte beachten Sie, dass sich die zu implementierende Schnittstelle je nach dem, was Sie erreichen möchten, ändert. Beachten Sie auch, dass die Methode `` `initialize``` erforderlich ist.

Ursprüngliche Kartendefinitionsklasse

//Karten werden durch Erben der CustomCard-Klasse definiert
public class Flare extends CustomCard {
    public static final String ID = "stsmodstudy:Flare";
    //Karten, die in der Hauptklasse mit getCardStrings gelesen wurden-JPN.Abrufen von Zeichenfolgeninformationen in json
    private static CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
    public static final String NAME = cardStrings.NAME;
    public static final String DESCRIPTION = cardStrings.DESCRIPTION;

Sie können Ihre eigene Karte definieren, indem Sie eine Klasse definieren, die die CustomCard-Klasse erbt.

Da die Zeichenfolgendaten, die der Benutzer sehen kann, internationalisiert werden müssen, werden sie in der Sprachdatei und nicht in dieser Klasse definiert. Hier wird nur der Schlüssel `` `stsmodstudy: Flare``` definiert, um die Informationen aus der Sprachdatei abzurufen.

Es ist eine gute Praxis, das Modid vor und den Kartennamen danach zu setzen.




```java
    //Effekt bei Verwendung einer Karte aktiviert
    @Override
    public void use(AbstractPlayer p, AbstractMonster m) {
        //Schaden verursachen
        AbstractDungeon.actionManager.addToBottom(
            new com.megacrit.cardcrawl.actions.common.DamageAction(
                m,
                new DamageInfo(p, this.damage, this.damageTypeForTurn),
                AbstractGameAction.AttackEffect.SLASH_DIAGONAL) //Bildschirmeffekt
        );
        //Machen Sie eine Sicherheitslücke
        AbstractDungeon.actionManager.addToBottom(
            new ApplyPowerAction(                                //Polieren/Alle Debuffs werden intern als Power behandelt
                m,
                p,
                new VulnerablePower(m, this.magicNumber, false), //Verletzlich(=Feind)Zu
                this.magicNumber,
                true,
                AbstractGameAction.AttackEffect.NONE)            //Bildschirmeffekt
        );
    }

Diese Methode ist der Schlüssel Nummer eins auf der Karte. Wenn Sie das Spiel gespielt haben, wissen Sie wahrscheinlich, dass dieses Spiel auf einem Modell basiert, bei dem die Auswirkungen der Verwendung von Karten in einem Stapel gestapelt und nacheinander verarbeitet werden.

AbstractDungeon.Durch Aufrufen jeder Methode von actionManager wird die Verarbeitung zum Stapel hinzugefügt.


 Hier geben wir Schaden und Schwächung.

# Sprachdatei

```json
{
  "stsmodstudy:Flare": {
    "NAME": "56 Krieger",
    "DESCRIPTION": "!D!Schaden verursachen"
  }
}

Definiert die Sprachinformationen der Karte. nameIst der Kartenname,descriptionIst die Erklärung des Karteneffekts. descriptionIm!d! !b! !m!Jeder hat eine besondere Bedeutung. !d!Ist eine Kartenklassedamage basedamage upgradeddamageVariable, !b!Ist eine Kartenklasseblock baseblock upgradedblockVariable, !m!Ist eine Kartenklassemagicnumber basemagicnumber upgradedmagicnumberEs wird je nach Situation in Variablen erweitert.

Recommended Posts

Einführung in die Entwicklung der Spire Mod-Entwicklung (3) Definition der Originalkarte
Einführung in Slay the Spire Mod Development (1) Einführung
Einführung in Slay the Spire Mod Development (2) Konstruktion der Entwicklungsumgebung
Einführung in die Keycloak-Entwicklung
Einführung in die Android App-Entwicklung
minecraft1.14.4 MOD-Entwicklungsmemorandum 1 [Originalrezept]
Ausgabe des Buches "Einführung in Java"
Einführung in die praktische Containerentwicklung von Docker / Kubernetes
Lernen Sie beim Erstellen eines WEB-Servers die Einführung in die Entwicklung von WEB-Anwendungen anhand der Grundlagen