feat: add chat messages

This commit is contained in:
k0t9i
2023-01-25 18:42:53 +04:00
parent b3bb4a52f3
commit f7198a13ef
18 changed files with 313 additions and 2 deletions

View 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
};
}

View File

@@ -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;
};
}

View 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;
};
}

View 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 = "";
};
}

View File

@@ -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" />

View File

@@ -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">