server-master/srcs/_plugins/WingsEmu.Plugins.BasicImplementation/Warehouse/Warehouse.cs
2026-02-10 18:21:30 +01:00

42 lines
No EOL
1.2 KiB
C#

using System.Collections.Generic;
using System.Linq;
using WingsEmu.Game.Characters;
namespace WingsEmu.Game.Warehouse;
public class Warehouse : IWarehouse
{
private const byte WARHOUSE_SLOTS = 98;
private readonly IPlayerEntity _playerEntity;
private readonly WarehouseItem[] _warehouseItems = new WarehouseItem[WARHOUSE_SLOTS];
public Warehouse(IPlayerEntity playerEntity) => _playerEntity = playerEntity;
public void AddWarehouseItem(WarehouseItem item, bool force = false)
{
if (_playerEntity.WareHouseSize <= 0 && !force)
{
return;
}
_warehouseItems[item.Slot] = item;
}
public void RemoveWarehouseItem(short slot)
{
WarehouseItem partnerWarehouseItem = GetWarehouseItem(slot);
if (partnerWarehouseItem == null)
{
return;
}
_warehouseItems[partnerWarehouseItem.Slot] = null;
}
public WarehouseItem GetWarehouseItem(short slot) => _warehouseItems[slot];
public IReadOnlyList<WarehouseItem> WarehouseItems() => _warehouseItems;
public int GetWarehouseSlots() => _playerEntity.WareHouseSize;
public bool HasSpaceForWarehouseItem() => _warehouseItems.Count(x => x != null) <= WARHOUSE_SLOTS;
}