feat: add chat messages
This commit is contained in:
24
L2BotCore/Domain/Enums/ChatChannelEnum.h
Normal file
24
L2BotCore/Domain/Enums/ChatChannelEnum.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace L2Bot::Domain::Enums
|
||||
{
|
||||
enum class ChatChannelEnum : uint8_t
|
||||
{
|
||||
all,
|
||||
shout,
|
||||
tell,
|
||||
party,
|
||||
clan,
|
||||
gm,
|
||||
petitionPlayer,
|
||||
petitionGm,
|
||||
trade,
|
||||
alliance,
|
||||
announcement,
|
||||
partyroomCommander = 15,
|
||||
partyroomAll,
|
||||
heroVoice
|
||||
};
|
||||
}
|
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
#include <vector>
|
||||
#include "../ValueObjects/ChatMessage.h"
|
||||
|
||||
namespace L2Bot::Domain::Repositories
|
||||
{
|
||||
class ChatMessageRepositoryInterface
|
||||
{
|
||||
public:
|
||||
virtual const std::vector<ValueObjects::ChatMessage> GetMessages() = 0;
|
||||
};
|
||||
}
|
25
L2BotCore/Domain/Services/ChatMessageService.h
Normal file
25
L2BotCore/Domain/Services/ChatMessageService.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include "../Repositories/ChatMessageRepositoryInterface.h"
|
||||
|
||||
namespace L2Bot::Domain::Services
|
||||
{
|
||||
class ChatMessageService
|
||||
{
|
||||
public:
|
||||
ChatMessageService(Repositories::ChatMessageRepositoryInterface& repository) : m_Repository(repository)
|
||||
{
|
||||
|
||||
}
|
||||
ChatMessageService() = delete;
|
||||
virtual ~ChatMessageService() = default;
|
||||
|
||||
virtual const std::vector<ValueObjects::ChatMessage> GetMessages()
|
||||
{
|
||||
return m_Repository.GetMessages();
|
||||
}
|
||||
private:
|
||||
Repositories::ChatMessageRepositoryInterface& m_Repository;
|
||||
};
|
||||
}
|
45
L2BotCore/Domain/ValueObjects/ChatMessage.h
Normal file
45
L2BotCore/Domain/ValueObjects/ChatMessage.h
Normal file
@@ -0,0 +1,45 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include "../Serializers/Serializable.h"
|
||||
#include "../Enums/ChatChannelEnum.h"
|
||||
|
||||
namespace L2Bot::Domain::ValueObjects
|
||||
{
|
||||
class ChatMessage : public Serializers::Serializable
|
||||
{
|
||||
public:
|
||||
const std::vector<Serializers::Node> BuildSerializationNodes() const override
|
||||
{
|
||||
return std::vector<Serializers::Node>
|
||||
{
|
||||
{ "objectId", std::to_string(m_ObjectId) },
|
||||
{ "channel", std::to_string(static_cast<uint8_t>(m_Channel)) },
|
||||
{ "name", m_Name },
|
||||
{ "text", m_Text }
|
||||
};
|
||||
}
|
||||
|
||||
ChatMessage(
|
||||
const uint32_t objectId,
|
||||
const Enums::ChatChannelEnum channel,
|
||||
const std::string& name,
|
||||
const std::string& text
|
||||
) :
|
||||
m_ObjectId(objectId),
|
||||
m_Channel(channel),
|
||||
m_Name(name),
|
||||
m_Text(text)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ChatMessage() = default;
|
||||
virtual ~ChatMessage() = default;
|
||||
private:
|
||||
uint32_t m_ObjectId = 0;
|
||||
Enums::ChatChannelEnum m_Channel = Enums::ChatChannelEnum::all;
|
||||
std::string m_Name = "";
|
||||
std::string m_Text = "";
|
||||
};
|
||||
}
|
@@ -173,6 +173,9 @@
|
||||
<ClInclude Include="Domain\Enums\ChatChannelEnum.h" />
|
||||
<ClInclude Include="Domain\Enums\ItemTypeEnum.h" />
|
||||
<ClInclude Include="Domain\Enums\WeaponTypeEnum.h" />
|
||||
<ClInclude Include="Domain\Repositories\ChatMessageRepositoryInterface.h" />
|
||||
<ClInclude Include="Domain\Services\ChatMessageService.h" />
|
||||
<ClInclude Include="Domain\ValueObjects\ChatMessage.h" />
|
||||
<ClInclude Include="Domain\ValueObjects\Vector3.h" />
|
||||
<ClInclude Include="Domain\Enums\SpoilStateEnum.h" />
|
||||
<ClInclude Include="Domain\Transports\TransportInterface.h" />
|
||||
|
@@ -141,6 +141,15 @@
|
||||
<ClInclude Include="Domain\Enums\ChatChannelEnum.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Domain\ValueObjects\ChatMessage.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Domain\Services\ChatMessageService.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Domain\Repositories\ChatMessageRepositoryInterface.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="pch.cpp">
|
||||
|
Reference in New Issue
Block a user