enka-network-api
Version:
Enka-network API wrapper for Genshin Impact.
40 lines (39 loc) • 2.2 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCharactersById = getCharactersById;
exports.hasEnergySkill = hasEnergySkill;
exports.isReleased = isReleased;
exports.getNameIdByCharacterId = getNameIdByCharacterId;
const config_file_js_1 = require("config_file.js");
const CharacterData_1 = require("../models/character/CharacterData");
const ExcelTransformer_1 = require("../client/ExcelTransformer");
function getCharactersById(id, enka) {
const data = enka.cachedAssetsManager.getExcelData("AvatarExcelConfigData", id);
if (!data)
return [];
const json = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, data);
if (json.has("candSkillDepotIds") && (json.get("candSkillDepotIds").mapArray((_, p) => p.getAsNumber())).length > 0) {
return json.get("candSkillDepotIds").filterArray((_, skillDepotId) => hasEnergySkill(skillDepotId.getAsNumber(), enka)).map(([, skillDepotId]) => new CharacterData_1.CharacterData(data, enka, skillDepotId.getAsNumber()));
}
if (!hasEnergySkill(json.getAsNumber("skillDepotId"), enka))
return [];
return [new CharacterData_1.CharacterData(data, enka)];
}
function hasEnergySkill(skillDepotId, enka) {
const data = enka.cachedAssetsManager.getExcelData("AvatarSkillDepotExcelConfigData", skillDepotId);
if (!data)
return false;
const json = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, data);
return json.has("energySkill");
}
function isReleased(characterId, enka) {
const releaseData = enka.cachedAssetsManager.getExcelData("AvatarCodexExcelConfigData", characterId);
return releaseData !== undefined || enka.cachedAssetsManager.getExcelData("AvatarHeroEntityExcelConfigData", characterId) !== undefined;
}
function getNameIdByCharacterId(characterId, enka) {
const data = enka.cachedAssetsManager.getExcelData("AvatarExcelConfigData", characterId);
if (!data)
throw new Error(`Character ID ${characterId} not found.`);
const json = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, data);
return json.getAsString("iconName").slice("UI_AvatarIcon_".length);
}
;