L2Bot2.0/Client/Infrastructure/Factories/EntityHandlerFactory.cs
2023-01-28 16:44:41 +04:00

55 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Client.Domain.Entities;
using Client.Domain.Enums;
using Client.Domain.Factories;
using Client.Domain.Service;
using Microsoft.Extensions.DependencyInjection;
namespace Client.Infrastructure.Factories
{
public class EntityHandlerFactory : EntityHandlerFactoryInterface
{
private readonly IServiceProvider serviceProvider;
public HandlerInterface GetHandler(MessageTypeEnum type)
{
HandlerInterface? result = null;
switch (type)
{
case MessageTypeEnum.Hero:
result = serviceProvider.GetService<EntityHandler<Hero>>();
break;
case MessageTypeEnum.Drop:
result = serviceProvider.GetService<EntityHandler<Drop>>();
break;
case MessageTypeEnum.NPC:
result = serviceProvider.GetService<EntityHandler<NPC>>();
break;
case MessageTypeEnum.Player:
result = serviceProvider.GetService<EntityHandler<Player>>();
break;
case MessageTypeEnum.Chat:
result = serviceProvider.GetService<ChatMessageHandler>();
break;
}
if (result == null)
{
throw new ArgumentException("Handler not found " + type.ToString());
}
return result;
}
public EntityHandlerFactory(IServiceProvider serviceProvider)
{
this.serviceProvider = serviceProvider;
}
}
}