UNPKG

enka-network-api

Version:

Enka-network API wrapper for Genshin Impact.

40 lines (39 loc) 2.2 kB
"use strict"; 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); }