feat: purchase shop decorations (#299)

This commit is contained in:
Sainan 2024-06-15 15:12:08 +02:00 committed by GitHub
parent e3103d4ab6
commit f216d5222f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -116,6 +116,23 @@ export const addItem = async (
FlavourItems: [await addCustomization(typeName, accountId)] FlavourItems: [await addCustomization(typeName, accountId)]
} }
}; };
case "Objects": {
// /Lotus/Objects/Tenno/Props/TnoLisetTextProjector (Note Beacon)
const inventory = await getInventory(accountId);
const changes = [
{
ItemType: typeName,
ItemCount: quantity
} satisfies IMiscItem
];
addShipDecorations(inventory, changes);
await inventory.save();
return {
InventoryChanges: {
ShipDecorations: changes
}
};
}
case "Types": case "Types":
switch (typeName.substr(1).split("/")[2]) { switch (typeName.substr(1).split("/")[2]) {
case "AvatarImages": case "AvatarImages":
@ -136,20 +153,40 @@ export const addItem = async (
} }
}; };
case "Items": { case "Items": {
const inventory = await getInventory(accountId); switch (typeName.substr(1).split("/")[3]) {
const miscItemChanges = [ case "ShipDecos": {
{ const inventory = await getInventory(accountId);
ItemType: typeName, const changes = [
ItemCount: quantity {
} satisfies IMiscItem ItemType: typeName,
]; ItemCount: quantity
addMiscItems(inventory, miscItemChanges); } satisfies IMiscItem
await inventory.save(); ];
return { addShipDecorations(inventory, changes);
InventoryChanges: { await inventory.save();
MiscItems: miscItemChanges return {
InventoryChanges: {
ShipDecorations: changes
}
};
} }
}; default: {
const inventory = await getInventory(accountId);
const miscItemChanges = [
{
ItemType: typeName,
ItemCount: quantity
} satisfies IMiscItem
];
addMiscItems(inventory, miscItemChanges);
await inventory.save();
return {
InventoryChanges: {
MiscItems: miscItemChanges
}
};
}
}
} }
case "Recipes": case "Recipes":
case "Consumables": { case "Consumables": {
@ -427,6 +464,21 @@ export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray:
}); });
}; };
export const addShipDecorations = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => {
const { ShipDecorations } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => {
const itemIndex = ShipDecorations.findIndex(miscItem => miscItem.ItemType === ItemType);
if (itemIndex !== -1) {
ShipDecorations[itemIndex].ItemCount += ItemCount;
inventory.markModified(`ShipDecorations.${itemIndex}.ItemCount`);
} else {
ShipDecorations.push({ ItemCount, ItemType });
}
});
};
export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => {
const { Consumables } = inventory; const { Consumables } = inventory;