forked from OpenWF/SpaceNinjaServer
feat: implement selling/dissolving of mods (#240)
This commit is contained in:
parent
a0b293685d
commit
b1e0de862f
@ -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();
|
||||||
|
@ -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>;
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user