Files
DanhengServer-OpenSource/GameServer/Game/Shop/ShopService.cs
Somebody 87d228eb79 Feature:Asynchronous Operation & Formatting Code
- Now the async operation is enabled!
- Code formatted by Resharper plugin <3
2024-07-22 17:12:03 +08:00

40 lines
1.5 KiB
C#

using EggLink.DanhengServer.Data;
using EggLink.DanhengServer.Database.Inventory;
using EggLink.DanhengServer.Enums;
using EggLink.DanhengServer.Enums.Item;
using EggLink.DanhengServer.Game.Player;
namespace EggLink.DanhengServer.Game.Shop;
public class ShopService(PlayerInstance player) : BasePlayerManager(player)
{
public async ValueTask<List<ItemData>> BuyItem(int shopId, int goodsId, int count)
{
GameData.ShopConfigData.TryGetValue(shopId, out var shopConfig);
if (shopConfig == null) return [];
var goods = shopConfig.Goods.Find(g => g.GoodsID == goodsId);
if (goods == null) return [];
GameData.ItemConfigData.TryGetValue(goods.ItemID, out var itemConfig);
if (itemConfig == null) return [];
foreach (var cost in goods.CostList) await Player.InventoryManager!.RemoveItem(cost.Key, cost.Value * count);
var items = new List<ItemData>();
if (itemConfig.ItemMainType == ItemMainTypeEnum.Equipment || itemConfig.ItemMainType == ItemMainTypeEnum.Relic)
{
for (var i = 0; i < count; i++)
{
var item = await Player.InventoryManager!.AddItem(itemConfig.ID, 1, false);
if (item != null) items.Add(item);
}
}
else
{
var item = await Player.InventoryManager!.AddItem(itemConfig.ID, count, false);
if (item != null) items.Add(item);
}
await Player.MissionManager!.HandleFinishType(MissionFinishTypeEnum.BuyShopGoods, "BuyGoods");
return items;
}
}