From d55efcb0749d64b8aec86031be6a177294f6bf32 Mon Sep 17 00:00:00 2001 From: Spirtix Date: Sat, 8 Jul 2023 21:56:50 +0200 Subject: [PATCH] PurchaseItems V1 --- src/Controllers/Common/ContentController.cs | 38 +++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index b56bc9f..b5d6a51 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -605,6 +605,44 @@ public class ContentController : Controller { return Ok(response); } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/PurchaseItems")] + public IActionResult PurchaseItemsV1([FromForm] string apiToken, [FromForm] string itemIDArrayXml) { + Viking? viking = ctx.Sessions.FirstOrDefault(e => e.ApiToken == apiToken)?.Viking; + if (viking is null) + return Ok(); + + int[] itemIdArr = XmlUtil.DeserializeXml(itemIDArrayXml); + CommonInventoryResponseItem[] items = new CommonInventoryResponseItem[itemIdArr.Length]; + for (int i = 0; i < itemIdArr.Length; i++) { + InventoryItem? item = viking.Inventory.InventoryItems.FirstOrDefault(e => e.ItemId == itemIdArr[i]); + if (item is null) { + item = new InventoryItem { ItemId = itemIdArr[i], Quantity = 0 }; + viking.Inventory.InventoryItems.Add(item); + } + item.Quantity++; + ctx.SaveChanges(); + items[i] = new CommonInventoryResponseItem { + CommonInventoryID = item.Id, + ItemID = itemIdArr[i], + Quantity = 0 // The quantity of purchased items is always 0 and the items are instead duplicated in both the request and the response + }; + } + + CommonInventoryResponse response = new CommonInventoryResponse { + Success = true, + CommonInventoryIDs = items, + UserGameCurrency = new UserGameCurrency { + UserID = Guid.Parse(viking.Id), + UserGameCurrencyID = 1, // TODO: user's wallet ID? + CashCurrency = 1000, + GameCurrency = 1000, + } + }; + return Ok(response); + } + private RaisedPetData GetRaisedPetDataFromDragon (Dragon dragon) { RaisedPetData data = XmlUtil.DeserializeXml(dragon.RaisedPetData); data.RaisedPetID = dragon.Id;