L2Bot2.0/L2BotCore/Domain/Services/IncomingMessageProcessor.h
Иванов Иван c61019961b feat: add resurrection
2024-08-12 18:20:55 +02:00

67 lines
2.1 KiB
C++

#pragma once
#include <string>
#include "../Serializers/IncomingMessageFactoryInterface.h"
#include "HeroServiceInterface.h"
#include "../Enums/RestartPointTypeEnum.h"
namespace L2Bot::Domain::Services
{
class IncomingMessageProcessor
{
public:
IncomingMessageProcessor(
const Serializers::IncomingMessageFactoryInterface& factory,
HeroServiceInterface& heroService
) :
m_Factory(factory),
m_HeroService(heroService)
{
}
virtual ~IncomingMessageProcessor() = default;
const Serializers::IncomingMessage::Type Process(const std::wstring& incomingMessge) const
{
const auto message = m_Factory.CreateMessage(incomingMessge);
switch (message.GetType())
{
case Serializers::IncomingMessage::Type::move:
m_HeroService.Move(message.GetRawContent<ValueObjects::Vector3>());
break;
case Serializers::IncomingMessage::Type::acquireTarget:
m_HeroService.AcquireTarget(message.GetRawContent<uint32_t>());
break;
case Serializers::IncomingMessage::Type::attack:
m_HeroService.Attack(message.GetRawContent<uint32_t>());
break;
case Serializers::IncomingMessage::Type::pickup:
m_HeroService.Pickup(message.GetRawContent<uint32_t>());
break;
case Serializers::IncomingMessage::Type::useSkill:
m_HeroService.UseSkill(message.GetRawContent<uint32_t>(), false, false);
break;
case Serializers::IncomingMessage::Type::useItem:
m_HeroService.UseItem(message.GetRawContent<uint32_t>());
break;
case Serializers::IncomingMessage::Type::toggleSoulshot:
m_HeroService.ToggleAutouseSoulshot(message.GetRawContent<uint32_t>());
break;
case Serializers::IncomingMessage::Type::sit:
m_HeroService.Sit();
break;
case Serializers::IncomingMessage::Type::stand:
m_HeroService.Stand();
break;
case Serializers::IncomingMessage::Type::restartPoint:
m_HeroService.RestartPoint(message.GetRawContent<Enums::RestartPointTypeEnum>());
break;
}
return message.GetType();
}
private:
const L2Bot::Domain::Serializers::IncomingMessageFactoryInterface& m_Factory;
Services::HeroServiceInterface& m_HeroService;
};
}