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

46 lines
No EOL
1.5 KiB
C#

using WingsAPI.Data.Miniland;
using WingsEmu.Game.Inventory;
using WingsEmu.Game.Managers;
using WingsEmu.Game.Miniland;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.Enums;
namespace WingsEmu.Plugins.BasicImplementations.Factories;
public interface IMapDesignObjectFactory
{
MapDesignObject CreateGameObject(long characterId, CharacterMinilandObjectDto dto);
}
public class MapDesignObjectFactory : IMapDesignObjectFactory
{
private readonly ISessionManager _sessionManager;
public MapDesignObjectFactory(ISessionManager sessionManager) => _sessionManager = sessionManager;
public MapDesignObject CreateGameObject(long characterId, CharacterMinilandObjectDto dto)
{
IClientSession session = _sessionManager.GetSessionByCharacterId(characterId);
InventoryItem item = session.PlayerEntity.GetItemBySlotAndType(dto.InventorySlot, InventoryType.Miniland);
if (item == null)
{
return null;
}
return new MapDesignObject
{
Id = dto.Id,
CharacterId = characterId,
InventorySlot = item.Slot,
InventoryItem = item,
Level1BoxAmount = dto.Level1BoxAmount,
Level2BoxAmount = dto.Level2BoxAmount,
Level3BoxAmount = dto.Level3BoxAmount,
Level4BoxAmount = dto.Level4BoxAmount,
Level5BoxAmount = dto.Level5BoxAmount,
MapX = dto.MapX,
MapY = dto.MapY
};
}
}