From 9d590f4bfc8a04c05be7304c24562b6a931dd5b0 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 15:55:35 +0200 Subject: [PATCH 1/2] feat: implement purchasing of blueprints --- src/services/inventoryService.ts | 5 +++-- src/services/purchaseService.ts | 25 ++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 611cfd02..aeda1279 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -12,7 +12,8 @@ import { IInventoryDatabaseDocument, IMiscItem, IMission, - IRawUpgrade + IRawUpgrade, + ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate } from "../types/genericUpdate"; import { IArtifactsRequest, IMissionInventoryUpdateRequest, IThemeUpdateRequest } from "../types/requestTypes"; @@ -260,7 +261,7 @@ const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: ICons }); }; -const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { +export const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined) => { const { Recipes } = inventory; itemsArray?.forEach(({ ItemCount, ItemType }) => { diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 3a0b78a8..79cc1f7e 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -7,13 +7,14 @@ import { addMechSuit, addMiscItems, addPowerSuit, + addRecipes, addSentinel, addWeapon, getInventory, updateCurrency, updateSlots } from "@/src/services/inventoryService"; -import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; @@ -180,14 +181,15 @@ const handleTypesPurchase = async (typesName: string, accountId: string, quantit case "AvatarImages": case "SuitCustomizations": return await handleCustomizationPurchase(typesName, accountId); - // case "Recipes": - // break; case "Sentinels": return await handleSentinelPurchase(typesName, accountId); case "SlotItems": return await handleSlotPurchase(typesName, accountId); case "Items": return await handleMiscItemPurchase(typesName, accountId, quantity); + case "Recipes": + case "Consumables": // Blueprints for Ciphers, Antitoxins + return await handleRecipesPurchase(typesName, accountId, quantity); default: throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); } @@ -258,3 +260,20 @@ const handleMiscItemPurchase = async (uniqueName: string, accountId: string, qua } }; }; + +const handleRecipesPurchase = async (uniqueName: string, accountId: string, quantity: number) => { + const inventory = await getInventory(accountId); + const recipeChanges = [ + { + ItemType: uniqueName, + ItemCount: quantity + } satisfies ITypeCount + ]; + addRecipes(inventory, recipeChanges); + await inventory.save(); + return { + InventoryChanges: { + Recipes: recipeChanges + } + }; +}; -- 2.47.2 From 19d7e59f3f1713ab38ced97c335e2b3b1a50c4db Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 9 May 2024 16:01:47 +0200 Subject: [PATCH 2/2] feat: implement purchasing of gear items --- src/services/inventoryService.ts | 2 +- src/services/purchaseService.ts | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index aeda1279..117891a4 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -246,7 +246,7 @@ export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: }); }; -const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { +export const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { const { Consumables } = inventory; itemsArray?.forEach(({ ItemCount, ItemType }) => { diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 79cc1f7e..d9ca8e14 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -3,6 +3,7 @@ import { getWeaponType } from "@/src/services/itemDataService"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; import { addBooster, + addConsumables, addCustomization, addMechSuit, addMiscItems, @@ -14,7 +15,7 @@ import { updateCurrency, updateSlots } from "@/src/services/inventoryService"; -import { IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IConsumable, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; import { IPurchaseRequest, IPurchaseResponse, SlotNameToInventoryName, SlotPurchase } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; @@ -190,6 +191,9 @@ const handleTypesPurchase = async (typesName: string, accountId: string, quantit case "Recipes": case "Consumables": // Blueprints for Ciphers, Antitoxins return await handleRecipesPurchase(typesName, accountId, quantity); + case "Restoratives": // Codex Scanner, Remote Observer, Starburst + return await handleRestorativesPurchase(typesName, accountId, quantity); + break; default: throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); } @@ -277,3 +281,20 @@ const handleRecipesPurchase = async (uniqueName: string, accountId: string, quan } }; }; + +const handleRestorativesPurchase = async (uniqueName: string, accountId: string, quantity: number) => { + const inventory = await getInventory(accountId); + const consumablesChanges = [ + { + ItemType: uniqueName, + ItemCount: quantity + } satisfies IConsumable + ]; + addConsumables(inventory, consumablesChanges); + await inventory.save(); + return { + InventoryChanges: { + Consumables: consumablesChanges + } + }; +}; -- 2.47.2