SpaceNinjaServer/src/services/itemDataService.ts

81 lines
2.2 KiB
TypeScript
Raw Normal View History

2024-01-25 14:49:45 +01:00
import { getIndexAfter } from "@/src/helpers/stringHelpers";
import { logger } from "@/src/utils/logger";
import {
dict_en,
ExportRecipes,
ExportWarframes,
ExportWeapons,
IPowersuit,
IRecipe
} from "warframe-public-export-plus";
2024-01-25 14:49:45 +01:00
export type WeaponTypeInternal =
| "LongGuns"
| "Pistols"
| "Melee"
| "SpaceMelee"
| "SpaceGuns"
| "SentinelWeapons"
| "OperatorAmps"
| "SpecialItems";
2024-01-25 14:49:45 +01:00
export const getWeaponType = (weaponName: string): WeaponTypeInternal => {
const weaponInfo = ExportWeapons[weaponName];
2024-01-25 14:49:45 +01:00
if (!weaponInfo) {
throw new Error(`unknown weapon ${weaponName}`);
}
// Many non-weapon items are "Pistols" in Public Export, so some duck typing is needed.
if (weaponInfo.totalDamage == 0) {
throw new Error(`${weaponName} doesn't quack like a weapon`);
}
const weaponType = weaponInfo.productCategory;
2024-01-25 14:49:45 +01:00
if (!weaponType) {
logger.error(`unknown weapon category for item ${weaponName}`);
throw new Error(`unknown weapon category for item ${weaponName}`);
}
return weaponType;
};
2024-06-19 10:32:16 +02:00
export const getRecipe = (uniqueName: string): IRecipe | undefined => {
return ExportRecipes[uniqueName];
2024-01-25 14:49:45 +01:00
};
export const getExalted = (uniqueName: string) => {
const suit = getSuitByUniqueName(uniqueName);
if (suit?.exalted !== undefined) {
return suit.exalted;
} else {
return false;
}
};
2024-01-25 14:49:45 +01:00
export const getItemCategoryByUniqueName = (uniqueName: string) => {
//Lotus/Types/Items/MiscItems/PolymerBundle
let splitWord = "Items/";
if (!uniqueName.includes("/Items/")) {
splitWord = "/Types/";
}
const index = getIndexAfter(uniqueName, splitWord);
if (index === -1) {
logger.error(`error parsing item category ${uniqueName}`);
throw new Error(`error parsing item category ${uniqueName}`);
}
const category = uniqueName.substring(index).split("/")[0];
return category;
};
export const getSuitByUniqueName = (uniqueName: string): IPowersuit | undefined => {
return ExportWarframes[uniqueName];
};
export const getEnglishString = (key: string): string => {
return dict_en[key] ?? key;
};