44#include < cstdint>
55#include < string_view>
66
7- #include " openvic-simulation/multiplayer/BaseMultiplayerManager .hpp"
8- #include " openvic-simulation/multiplayer/ClientManager .hpp"
7+ #include " openvic-simulation/multiplayer/Constants .hpp"
8+ #include " openvic-simulation/multiplayer/PacketType .hpp"
99#include " openvic-simulation/types/Signal.hpp"
1010#include " openvic-simulation/utility/Marshal.hpp"
1111
1212namespace OpenVic {
1313 struct GameManager ;
1414 struct ChatManager ;
1515 struct ChatMessageLog ;
16+ struct BaseMultiplayerManager ;
17+ struct ClientManager ;
1618
1719 struct ChatGroup {
18- using index_t = size_t ;
20+ using index_type = size_t ;
1921
2022 ChatGroup (ChatGroup const &) = delete ;
2123 ChatGroup& operator =(ChatGroup const &) = delete ;
2224 ChatGroup (ChatGroup&&) = default ;
2325 ChatGroup& operator =(ChatGroup&& lhs) = default ;
2426
25- std::span<const BaseMultiplayerManager:: client_id_type> get_clients () const {
27+ std::span<const client_id_type> get_clients () const {
2628 return clients;
2729 }
2830
29- operator index_t () const {
31+ operator index_type () const {
3032 return index;
3133 }
3234
3335 private:
3436 friend struct ChatManager ;
35- ChatGroup (index_t index, memory::vector<BaseMultiplayerManager:: client_id_type>&& clients);
37+ ChatGroup (index_type index, memory::vector<client_id_type>&& clients);
3638
37- memory::vector<BaseMultiplayerManager:: client_id_type> clients;
38- index_t PROPERTY (index);
39+ memory::vector<client_id_type> clients;
40+ index_type PROPERTY (index);
3941 };
4042
4143 struct ChatManager {
@@ -44,7 +46,8 @@ namespace OpenVic {
4446 struct MessageData {
4547 MessageType type = MessageType::NONE;
4648 memory::string message;
47- uint64_t from_index = BaseMultiplayerManager::HOST_ID;
49+ // Depending on type, either client_id_type or ChatGroup::index_type
50+ uint64_t from_index = MP_HOST_ID;
4851
4952 template <std::endian Endian>
5053 size_t encode (std::span<uint8_t > span) const {
@@ -63,7 +66,8 @@ namespace OpenVic {
6366 MessageType type = utility::decode<MessageType, Endian>(span, r_decode_count);
6467 size_t offset = r_decode_count;
6568
66- uint64_t from_index = BaseMultiplayerManager::HOST_ID;
69+ // Depending on type, either client_id_type or ChatGroup::index_type
70+ uint64_t from_index = MP_HOST_ID;
6771 if (type != MessageType::PUBLIC) {
6872 from_index = utility::decode<uint16_t >(span.subspan (offset), r_decode_count);
6973 offset += r_decode_count;
@@ -79,32 +83,32 @@ namespace OpenVic {
7983
8084 ChatManager (ClientManager* client_manager = nullptr );
8185
82- bool send_private_message (BaseMultiplayerManager:: client_id_type to, memory::string&& message);
83- bool send_private_message (BaseMultiplayerManager:: client_id_type to, std::string_view message);
86+ bool send_private_message (client_id_type to, memory::string&& message);
87+ bool send_private_message (client_id_type to, std::string_view message);
8488 bool send_public_message (memory::string&& message);
8589 bool send_public_message (std::string_view message);
8690 bool send_group_message (ChatGroup const & group, memory::string&& message);
87- bool send_group_message (ChatGroup::index_t group_id, memory::string&& message);
91+ bool send_group_message (ChatGroup::index_type group_id, memory::string&& message);
8892 bool send_group_message (ChatGroup const & group, std::string_view message);
89- bool send_group_message (ChatGroup::index_t group_id, std::string_view message);
93+ bool send_group_message (ChatGroup::index_type group_id, std::string_view message);
9094
9195 signal_property<ChatManager, ChatMessageLog const &> message_logged;
9296
9397 ChatMessageLog const & log_message (
94- BaseMultiplayerManager:: client_id_type from, MessageData&& message,
98+ client_id_type from, MessageData&& message,
9599 std::chrono::time_point<std::chrono::system_clock> timestamp = std::chrono::system_clock::now()
96100 );
97101 memory::vector<ChatMessageLog> const & get_message_logs () const ;
98102
99103 signal_property<ChatManager, ChatGroup const &> group_created;
100104 // group, old clients
101- signal_property<ChatManager, ChatGroup const &, memory::vector<BaseMultiplayerManager:: client_id_type>&> group_modified;
102- signal_property<ChatManager, ChatGroup::index_t > group_deleted;
105+ signal_property<ChatManager, ChatGroup const &, memory::vector<client_id_type>&> group_modified;
106+ signal_property<ChatManager, ChatGroup::index_type > group_deleted;
103107
104- void create_group (memory::vector<BaseMultiplayerManager:: client_id_type>&& clients);
105- void set_group (ChatGroup::index_t group, memory::vector<BaseMultiplayerManager:: client_id_type>&& clients);
106- ChatGroup const & get_group (ChatGroup::index_t group_index) const ;
107- void delete_group (ChatGroup::index_t group_id);
108+ void create_group (memory::vector<client_id_type>&& clients);
109+ void set_group (ChatGroup::index_type group, memory::vector<client_id_type>&& clients);
110+ ChatGroup const & get_group (ChatGroup::index_type group_index) const ;
111+ void delete_group (ChatGroup::index_type group_id);
108112
109113 private:
110114 ClientManager* PROPERTY_PTR (client_manager);
@@ -120,26 +124,26 @@ namespace OpenVic {
120124 friend bool PacketTypes::add_chat_group_process_callback ( //
121125 BaseMultiplayerManager* multiplayer_manager, PacketSpan packet
122126 );
123- void _create_group (memory::vector<BaseMultiplayerManager:: client_id_type>&& clients);
127+ void _create_group (memory::vector<client_id_type>&& clients);
124128
125129 friend bool PacketTypes::modify_chat_group_process_callback ( //
126130 BaseMultiplayerManager* multiplayer_manager, PacketSpan packet
127131 );
128- void _set_group (ChatGroup::index_t group, memory::vector<BaseMultiplayerManager:: client_id_type>&& clients);
132+ void _set_group (ChatGroup::index_type group, memory::vector<client_id_type>&& clients);
129133
130134 friend bool PacketTypes::delete_chat_group_process_callback ( //
131135 BaseMultiplayerManager* multiplayer_manager, PacketSpan packet
132136 );
133- void _delete_group (ChatGroup::index_t group_id);
137+ void _delete_group (ChatGroup::index_type group_id);
134138 };
135139
136140 struct ChatMessageLog {
137- BaseMultiplayerManager:: client_id_type from_id = BaseMultiplayerManager::HOST_ID ;
141+ client_id_type from_id = MP_HOST_ID ;
138142 ChatManager::MessageData data;
139143 int64_t timestamp = 0 ;
140144
141145 ChatMessageLog () = default ;
142- ChatMessageLog (BaseMultiplayerManager:: client_id_type from, ChatManager::MessageData data, int64_t timestamp)
146+ ChatMessageLog (client_id_type from, ChatManager::MessageData data, int64_t timestamp)
143147 : from_id { from }, data { data }, timestamp { timestamp } {}
144148
145149 template <std::endian Endian>
0 commit comments