SpaceNinjaServer/src/controllers/custom/getItemListsController.ts

91 lines
2.7 KiB
TypeScript
Raw Normal View History

2024-05-04 14:44:23 +02:00
import { RequestHandler } from "express";
import { MinItem, items, getEnglishString } from "@/src/services/itemDataService";
import {
ExportArcanes,
ExportGear,
ExportResources,
ExportUpgrades,
ExportWarframes,
ExportWeapons
} from "warframe-public-export-plus";
2024-05-04 14:44:23 +02:00
interface ListedItem {
uniqueName: string;
name: string;
2024-06-01 12:57:27 +02:00
fusionLimit?: number;
2024-05-04 14:44:23 +02:00
}
function reduceItems(items: MinItem[]): ListedItem[] {
return items.map((item: MinItem): ListedItem => {
return {
uniqueName: item.uniqueName,
2024-06-01 12:57:27 +02:00
name: item.name,
fusionLimit: (item as any).fusionLimit
2024-05-04 14:44:23 +02:00
};
});
}
const getItemListsController: RequestHandler = (_req, res) => {
const weapons = [];
const miscitems = [];
for (const [uniqueName, item] of Object.entries(ExportWeapons)) {
if (item.productCategory !== "OperatorAmps") {
if (item.totalDamage !== 0) {
weapons.push({
uniqueName,
name: getEnglishString(item.name)
});
} else if (!item.excludeFromCodex) {
miscitems.push({
uniqueName: "MiscItems:" + uniqueName,
name: getEnglishString(item.name)
});
}
}
}
for (const [uniqueName, item] of Object.entries(ExportResources)) {
miscitems.push({
uniqueName: "MiscItems:" + uniqueName,
name: getEnglishString(item.name)
});
}
for (const [uniqueName, item] of Object.entries(ExportGear)) {
miscitems.push({
uniqueName: "Consumables:" + uniqueName,
name: getEnglishString(item.name)
});
}
const mods = reduceItems(items.filter(item => item.category == "Mods"));
for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) {
mods.push({
uniqueName: uniqueName,
name: getEnglishString(arcane.name)
});
}
const badItems: Record<string, boolean> = {};
for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) {
if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) {
badItems[uniqueName] = true;
}
}
2024-05-04 14:44:23 +02:00
res.json({
warframes: Object.entries(ExportWarframes)
.filter(([_uniqueName, warframe]) => warframe.productCategory == "Suits")
.map(([uniqueName, warframe]) => {
return {
uniqueName,
name: getEnglishString(warframe.name)
};
}),
weapons,
miscitems,
mods,
2024-06-01 12:57:27 +02:00
badItems
2024-05-04 14:44:23 +02:00
});
};
export { getItemListsController };