46 lines
No EOL
1.5 KiB
C#
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
|
|
};
|
|
}
|
|
} |