Minecraft-STC-Modpack/showdown/index.js
2023-08-14 21:45:09 -04:00

73 lines
1.7 KiB
JavaScript

/*
* Copyright (C) 2022 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
// eslint-disable-next-line strict
const BS = require("./sim/battle-stream");
const Dex = require("./sim/dex").Dex;
const CobblemonCache = require("./sim/cobblemon-cache");
const battleMap = new Map();
const cobbledModId = "cobblemon";
function startBattle(graalShowdown, battleId, requestMessages) {
const battleStream = new BS.BattleStream();
battleMap.set(battleId, battleStream);
// Join messages with new line
try {
for (const element of requestMessages) {
battleStream.write(element);
}
} catch (err) {
graalShowdown.log(err.stack);
}
// Any battle output then gets written to the execution helper logging mechanism
(async () => {
for await (const output of battleStream) {
graalShowdown.sendFromShowdown(battleId, output);
}
})();
}
function sendBattleMessage(battleId, messages) {
const battleStream = battleMap.get(battleId);
for (const element of messages) {
battleStream.write(element);
}
}
function getCobbledMoves() {
return JSON.stringify(Dex.mod(cobbledModId).moves.all());
}
function getCobbledAbilityIds() {
return JSON.stringify(
Dex.mod(cobbledModId)
.abilities.all()
.map((ability) => ability.id)
);
}
function getCobbledItemIds() {
return JSON.stringify(
Dex.mod(cobbledModId)
.items.all()
.map((item) => item.id)
);
}
function receiveSpeciesData(speciesArray) {
CobblemonCache.resetSpecies();
speciesArray.forEach((speciesJson) => {
const speciesData = JSON.parse(speciesJson);
CobblemonCache.registerSpecies(speciesData);
});
}