2024-01-25 14:49:45 +01:00
|
|
|
import { getIndexAfter } from "@/src/helpers/stringHelpers";
|
|
|
|
import { logger } from "@/src/utils/logger";
|
2024-06-17 16:41:02 +02:00
|
|
|
import {
|
|
|
|
dict_en,
|
|
|
|
ExportRecipes,
|
|
|
|
ExportWarframes,
|
|
|
|
ExportWeapons,
|
|
|
|
IPowersuit,
|
|
|
|
IRecipe
|
|
|
|
} from "warframe-public-export-plus";
|
2024-01-25 14:49:45 +01:00
|
|
|
|
2024-06-10 14:03:03 +02:00
|
|
|
export type WeaponTypeInternal =
|
|
|
|
| "LongGuns"
|
|
|
|
| "Pistols"
|
|
|
|
| "Melee"
|
|
|
|
| "SpaceMelee"
|
|
|
|
| "SpaceGuns"
|
|
|
|
| "SentinelWeapons"
|
|
|
|
| "OperatorAmps"
|
|
|
|
| "SpecialItems";
|
2024-01-25 14:49:45 +01:00
|
|
|
|
2024-06-10 14:03:03 +02: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}`);
|
|
|
|
}
|
|
|
|
|
2024-06-06 14:23:46 +02:00
|
|
|
// 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`);
|
|
|
|
}
|
|
|
|
|
2024-06-10 14:03:03 +02:00
|
|
|
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 => {
|
2024-06-17 16:41:02 +02:00
|
|
|
return ExportRecipes[uniqueName];
|
2024-01-25 14:49:45 +01:00
|
|
|
};
|
|
|
|
|
2024-06-07 15:58:20 +02: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;
|
|
|
|
};
|
|
|
|
|
2024-06-10 14:03:03 +02:00
|
|
|
export const getSuitByUniqueName = (uniqueName: string): IPowersuit | undefined => {
|
|
|
|
return ExportWarframes[uniqueName];
|
2024-06-07 15:58:20 +02:00
|
|
|
};
|
|
|
|
|
2024-06-10 14:03:03 +02:00
|
|
|
export const getEnglishString = (key: string): string => {
|
|
|
|
return dict_en[key] ?? key;
|
2024-06-02 17:37:09 +02:00
|
|
|
};
|