feat: implement selling/dissolving of mods (#240)

This commit is contained in:
Sainan 2024-05-29 16:18:41 +02:00 committed by GitHub
parent a0b293685d
commit b1e0de862f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 3 deletions

View File

@ -1,7 +1,7 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { ISellRequest } from "@/src/types/sellTypes"; import { ISellRequest } from "@/src/types/sellTypes";
import { getAccountIdForRequest } from "@/src/services/loginService"; import { getAccountIdForRequest } from "@/src/services/loginService";
import { getInventory } from "@/src/services/inventoryService"; import { getInventory, addMods } from "@/src/services/inventoryService";
export const sellController: RequestHandler = async (req, res) => { export const sellController: RequestHandler = async (req, res) => {
const payload: ISellRequest = JSON.parse(req.body.toString()); const payload: ISellRequest = JSON.parse(req.body.toString());
@ -43,7 +43,18 @@ export const sellController: RequestHandler = async (req, res) => {
// Note: sellItem.String is a uniqueName in this case // Note: sellItem.String is a uniqueName in this case
} }
if (payload.Items.Upgrades) { if (payload.Items.Upgrades) {
// TODO payload.Items.Upgrades.forEach(sellItem => {
if (sellItem.Count == 0) {
inventory.Upgrades.pull({ _id: sellItem.String });
} else {
addMods(inventory, [
{
ItemType: sellItem.String,
ItemCount: sellItem.Count * -1
}
]);
}
});
} }
await inventory.save(); await inventory.save();

View File

@ -2,6 +2,7 @@ import { Model, Schema, Types, model } from "mongoose";
import { import {
IFlavourItem, IFlavourItem,
IRawUpgrade, IRawUpgrade,
ICrewShipSalvagedWeaponSkin,
IMiscItem, IMiscItem,
IInventoryDatabase, IInventoryDatabase,
IBooster, IBooster,
@ -1001,6 +1002,7 @@ type InventoryDocumentProps = {
Melee: Types.DocumentArray<IWeaponDatabase>; Melee: Types.DocumentArray<IWeaponDatabase>;
FlavourItems: Types.DocumentArray<IFlavourItem>; FlavourItems: Types.DocumentArray<IFlavourItem>;
RawUpgrades: Types.DocumentArray<IRawUpgrade>; RawUpgrades: Types.DocumentArray<IRawUpgrade>;
Upgrades: Types.DocumentArray<ICrewShipSalvagedWeaponSkin>;
MiscItems: Types.DocumentArray<IMiscItem>; MiscItems: Types.DocumentArray<IMiscItem>;
Boosters: Types.DocumentArray<IBooster>; Boosters: Types.DocumentArray<IBooster>;
OperatorLoadOuts: Types.DocumentArray<IOperatorConfigClient>; OperatorLoadOuts: Types.DocumentArray<IOperatorConfigClient>;

View File

@ -276,7 +276,7 @@ export const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IT
}); });
}; };
const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => { export const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => {
const { RawUpgrades } = inventory; const { RawUpgrades } = inventory;
itemsArray?.forEach(({ ItemType, ItemCount }) => { itemsArray?.forEach(({ ItemType, ItemCount }) => {
const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType); const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType);