server-master/srcs/_plugins/WingsEmu.Plugins.PacketHandling/Game/Inventory/BiPacketHandler.cs
2026-02-10 18:21:30 +01:00

51 lines
No EOL
1.8 KiB
C#

using System.Threading.Tasks;
using WingsAPI.Game.Extensions.ItemExtension.Inventory;
using WingsEmu.Game._i18n;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Inventory;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.ClientPackets;
namespace WingsEmu.Plugins.PacketHandling.Game.Inventory;
public class BiPacketHandler : GenericGamePacketHandlerBase<BiPacket>
{
private readonly IGameLanguageService _language;
public BiPacketHandler(IGameLanguageService language) => _language = language;
protected override async Task HandlePacketAsync(IClientSession session, BiPacket packet)
{
InventoryItem itemToRemove = session.PlayerEntity.GetItemBySlotAndType(packet.Slot, packet.InventoryType);
if (itemToRemove == null)
{
return;
}
switch (packet.Option)
{
case null:
session.SendDialog($"b_i {(byte)packet.InventoryType} {packet.Slot} 1", "b_i 0 0 5", _language.GetLanguage(GameDialogKey.INVENTORY_DIALOG_ASK_TO_DELETE, session.UserLanguage));
break;
case 1:
session.SendDialog($"b_i {(byte)packet.InventoryType} {packet.Slot} 2", $"b_i {(byte)packet.InventoryType} {packet.Slot} 5",
_language.GetLanguage(GameDialogKey.INVENTORY_DIALOG_SURE_TO_DELETE, session.UserLanguage));
break;
case 2:
if (session.PlayerEntity.IsInExchange())
{
return;
}
if (session.PlayerEntity.HasShopOpened)
{
return;
}
await session.RemoveItemFromInventory(amount: (short)itemToRemove.ItemInstance.Amount, item: itemToRemove);
break;
}
}
}