feat: implement XPInfo (#200)

This commit is contained in:
Sainan 2024-05-08 22:53:06 +02:00 committed by GitHub
parent c3938169fa
commit 852fdcfc0e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 38 additions and 5 deletions

View File

@ -1,11 +1,29 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
import { IStatsView } from "@/src/types/statTypes"; import { IStatsView } from "@/src/types/statTypes";
import config from "@/config.json"; import config from "@/config.json";
import view from "@/static/fixed_responses/view.json"; import view from "@/static/fixed_responses/view.json";
import allScans from "@/static/fixed_responses/allScans.json"; import allScans from "@/static/fixed_responses/allScans.json";
const viewController: RequestHandler = (_req, res) => { const viewController: RequestHandler = async (req, res) => {
if (!req.query.accountId) {
res.status(400).json({ error: "accountId was not provided" });
return;
}
const inventory = await Inventory.findOne({ accountOwnerId: req.query.accountId });
if (!inventory) {
res.status(400).json({ error: "inventory was undefined" });
return;
}
const responseJson: IStatsView = view; const responseJson: IStatsView = view;
responseJson.Weapons = [];
for (const item of inventory.XPInfo) {
responseJson.Weapons.push({
type: item.ItemType,
xp: item.XP
});
}
if (config.unlockAllScans) { if (config.unlockAllScans) {
responseJson.Scans = allScans; responseJson.Scans = allScans;
} }

View File

@ -201,12 +201,27 @@ const addGearExpByCategory = (
const category = inventory[categoryName]; const category = inventory[categoryName];
gearArray?.forEach(({ ItemId, XP }) => { gearArray?.forEach(({ ItemId, XP }) => {
const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1; if (!XP) {
const item = category[itemIndex]; return;
}
if (itemIndex !== -1 && item.XP != undefined) { const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1;
item.XP += XP || 0; if (itemIndex !== -1) {
const item = category[itemIndex];
item.XP ??= 0;
item.XP += XP;
inventory.markModified(`${categoryName}.${itemIndex}.XP`); inventory.markModified(`${categoryName}.${itemIndex}.XP`);
const xpinfoIndex = inventory.XPInfo.findIndex(x => x.ItemType == item.ItemType);
if (xpinfoIndex !== -1) {
const xpinfo = inventory.XPInfo[xpinfoIndex];
xpinfo.XP += XP;
} else {
inventory.XPInfo.push({
ItemType: item.ItemType,
XP: XP
});
}
} }
}); });
}; };