From dd9dfa4873b8a077d07195d580bb1b9df307adc8 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 20 Aug 2023 00:21:44 +0000 Subject: [PATCH] support for farm on old clients - add support UserItemPositionSetRequest without item (but with UserInventoryCommonID) --- src/Services/RoomService.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Services/RoomService.cs b/src/Services/RoomService.cs index 291d7e5..d4f6480 100644 --- a/src/Services/RoomService.cs +++ b/src/Services/RoomService.cs @@ -9,9 +9,11 @@ namespace sodoff.Services; public class RoomService { private readonly DBContext ctx; + private ItemService itemService; - public RoomService(DBContext ctx) { + public RoomService(DBContext ctx, ItemService itemService) { this.ctx = ctx; + this.itemService = itemService; } public void CreateRoom(Viking viking, string roomId) { @@ -25,7 +27,13 @@ public class RoomService { foreach (var itemRequest in roomItemRequest) { // TODO: Remove item from inventory (using CommonInventoryID) InventoryItem? i = room.Viking?.Inventory.InventoryItems.FirstOrDefault(x => x.Id == itemRequest.UserInventoryCommonID); - if (i != null) i.Quantity--; + if (i != null) { + i.Quantity--; + if (itemRequest.Item is null) { + itemRequest.Item = itemService.GetItem(i.ItemId); + } + } + RoomItem roomItem = new RoomItem { RoomItemData = XmlUtil.SerializeXml(itemRequest).Replace(" xsi:type=\"UserItemPositionSetRequest\"", "") // NOTE: No way to avoid this hack when we're serializing a child class into a base class };