enka-network-api
Version:
Enka-network API wrapper for Genshin Impact.
51 lines (50 loc) • 2.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.NameCard = exports.Material = void 0;
const config_file_js_1 = require("config_file.js");
const AssetsNotFoundError_1 = require("../../errors/AssetsNotFoundError");
const ImageAssets_1 = require("../assets/ImageAssets");
const TextAssets_1 = require("../assets/TextAssets");
const ExcelTransformer_1 = require("../../client/ExcelTransformer");
class Material {
constructor(data, enka) {
this._data = data;
this.enka = enka;
const json = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, this._data);
this.id = json.getAsNumber("id");
this.name = new TextAssets_1.TextAssets(json.getAsNumber("nameTextMapHash"), enka);
this.description = new TextAssets_1.TextAssets(json.getAsNumber("descTextMapHash"), enka);
this.icon = json.has("icon") ? new ImageAssets_1.ImageAssets(json.getAsString("icon"), enka) : null;
this.pictures = json.has("picPath") ? json.get("picPath").mapArray((_, name) => new ImageAssets_1.ImageAssets(name.getAsString(), enka)) : [];
this.itemType = json.getAsString("itemType");
this.materialType = json.getAsStringWithDefault(null, "materialType");
this.stars = json.getAsNumberWithDefault(null, "rankLevel");
}
static getMaterialByData(data, enka) {
const json = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, data);
switch (json.getAsStringWithDefault(null, "materialType")) {
case NameCard.MATERIAL_TYPE:
return new NameCard(data, enka);
default:
return new Material(data, enka);
}
}
static getMaterialById(id, enka) {
if (isNaN(Number(id)))
throw new Error("Parameter `id` must be a number or a string number.");
id = Number(id);
const data = enka.cachedAssetsManager.getExcelData("MaterialExcelConfigData", id);
if (!data)
throw new AssetsNotFoundError_1.AssetsNotFoundError("Material", id);
return this.getMaterialByData(data, enka);
}
}
exports.Material = Material;
class NameCard extends Material {
constructor(data, enka) {
super(data, enka);
this.materialType = "MATERIAL_NAMECARD";
}
}
exports.NameCard = NameCard;
NameCard.MATERIAL_TYPE = "MATERIAL_NAMECARD";
;