ConnectX 3.0
ConnectX Game Suite
Loading...
Searching...
No Matches
messages.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <vector>
5#include <cstdint>
6#include <optional>
7
11enum class ProtocolGameStatus : uint8_t
12{
13 NOT_STARTED = 0,
14 IN_PROGRESS = 1,
15 FINISHED_WIN = 2,
17};
18
19// ============================================================================
20// Connection Messages
21// ============================================================================
22
24{
26 std::string player_name;
27
29 explicit ConnectRequest(const std::string &name)
30 : protocol_version(Protocol::VERSION), player_name(name) {}
31};
32
34{
35 bool success;
36 std::string session_token;
37 std::string message; // Success or error message
38
40};
41
43{
44 std::string reason;
45
46 DisconnectMessage() = default;
47 explicit DisconnectMessage(const std::string &r) : reason(r) {}
48};
49
51{
52 uint64_t timestamp;
53
55 explicit HeartbeatMessage(uint64_t ts) : timestamp(ts) {}
56};
57
58// ============================================================================
59// Game Action Messages
60// ============================================================================
61
63{
64 std::string session_token;
65 uint8_t column;
66
68 MakeMoveRequest(const std::string &token, uint8_t col)
69 : session_token(token), column(col) {}
70};
71
73{
74 bool success;
75 std::string message; // Error message if failed
76
77 MoveResult() : success(false) {}
78 explicit MoveResult(bool s, const std::string &msg = "")
79 : success(s), message(msg) {}
80};
81
83{
84 uint32_t game_id;
85 std::vector<std::vector<uint8_t>> board; // 2D grid
86 uint8_t rows;
87 uint8_t cols;
90 std::optional<uint8_t> winner;
91 std::vector<uint8_t> players; // List of player IDs in game
92 std::vector<std::string> player_names; // List of player names in game
93
96};
97
107
108// ============================================================================
109// Lobby Messages
110// ============================================================================
111
113{
114 uint8_t rows;
115 uint8_t cols;
116 uint8_t num_players;
118
120 GameConfig(uint8_t r, uint8_t c, uint8_t np, uint8_t cl)
121 : rows(r), cols(c), num_players(np), connect_length(cl) {}
122};
123
135
137{
138 std::string session_token;
139 std::string game_name;
141
142 CreateGameRequest() = default;
143};
144
146{
149 std::string message; // Success or error message
150
152};
153
155{
156 std::string session_token;
157 uint32_t game_id;
158
160 JoinGameRequest(const std::string &token, uint32_t gid)
161 : session_token(token), game_id(gid) {}
162};
163
165{
169 std::string message; // Success or error message
170
172};
173
175{
176 std::string session_token;
177
178 ListGamesRequest() = default;
179 explicit ListGamesRequest(const std::string &token) : session_token(token) {}
180};
181
183{
184 std::vector<GameInfo> games;
185
186 ListGamesResponse() = default;
187};
188
189// ============================================================================
190// Error Message
191// ============================================================================
192
194{
195 uint16_t error_code;
196 std::string error_message;
197
198 ErrorMessage() : error_code(Protocol::ErrorCode::UNKNOWN_ERROR) {}
199 ErrorMessage(uint16_t code, const std::string &msg)
200 : error_code(code), error_message(msg) {}
201};
ProtocolGameStatus
Definition messages.hpp:12
Definition constants.hpp:6
Definition messages.hpp:24
ConnectRequest()
Definition messages.hpp:28
std::string player_name
Definition messages.hpp:26
ConnectRequest(const std::string &name)
Definition messages.hpp:29
uint32_t protocol_version
Definition messages.hpp:25
Definition messages.hpp:34
ConnectResponse()
Definition messages.hpp:39
std::string session_token
Definition messages.hpp:36
bool success
Definition messages.hpp:35
std::string message
Definition messages.hpp:37
Definition messages.hpp:137
std::string session_token
Definition messages.hpp:138
std::string game_name
Definition messages.hpp:139
GameConfig config
Definition messages.hpp:140
CreateGameRequest()=default
Definition messages.hpp:146
GameInfo game_info
Definition messages.hpp:148
std::string message
Definition messages.hpp:149
bool success
Definition messages.hpp:147
CreateGameResponse()
Definition messages.hpp:151
Definition messages.hpp:43
DisconnectMessage()=default
DisconnectMessage(const std::string &r)
Definition messages.hpp:47
std::string reason
Definition messages.hpp:44
Definition messages.hpp:194
ErrorMessage(uint16_t code, const std::string &msg)
Definition messages.hpp:199
uint16_t error_code
Definition messages.hpp:195
ErrorMessage()
Definition messages.hpp:198
std::string error_message
Definition messages.hpp:196
Definition messages.hpp:113
uint8_t rows
Definition messages.hpp:114
GameConfig(uint8_t r, uint8_t c, uint8_t np, uint8_t cl)
Definition messages.hpp:120
GameConfig()
Definition messages.hpp:119
uint8_t num_players
Definition messages.hpp:116
uint8_t cols
Definition messages.hpp:115
uint8_t connect_length
Definition messages.hpp:117
Definition messages.hpp:125
uint32_t game_id
Definition messages.hpp:126
std::string game_name
Definition messages.hpp:127
GameConfig config
Definition messages.hpp:130
ProtocolGameStatus status
Definition messages.hpp:129
GameInfo()
Definition messages.hpp:132
uint8_t current_players
Definition messages.hpp:128
Definition messages.hpp:99
ProtocolGameStatus final_status
Definition messages.hpp:101
std::optional< uint8_t > winner
Definition messages.hpp:102
std::string message
Definition messages.hpp:103
GameOverMessage()
Definition messages.hpp:105
uint32_t game_id
Definition messages.hpp:100
Definition messages.hpp:83
std::optional< uint8_t > winner
Definition messages.hpp:90
ProtocolGameStatus status
Definition messages.hpp:89
uint8_t cols
Definition messages.hpp:87
std::vector< uint8_t > players
Definition messages.hpp:91
uint8_t current_player
Definition messages.hpp:88
uint8_t rows
Definition messages.hpp:86
std::vector< std::string > player_names
Definition messages.hpp:92
GameStateUpdate()
Definition messages.hpp:94
std::vector< std::vector< uint8_t > > board
Definition messages.hpp:85
uint32_t game_id
Definition messages.hpp:84
Definition messages.hpp:51
uint64_t timestamp
Definition messages.hpp:52
HeartbeatMessage(uint64_t ts)
Definition messages.hpp:55
HeartbeatMessage()
Definition messages.hpp:54
Definition messages.hpp:155
JoinGameRequest()
Definition messages.hpp:159
JoinGameRequest(const std::string &token, uint32_t gid)
Definition messages.hpp:160
uint32_t game_id
Definition messages.hpp:157
std::string session_token
Definition messages.hpp:156
Definition messages.hpp:165
bool success
Definition messages.hpp:166
uint8_t assigned_player_id
Definition messages.hpp:167
JoinGameResponse()
Definition messages.hpp:171
GameInfo game_info
Definition messages.hpp:168
std::string message
Definition messages.hpp:169
Definition messages.hpp:175
ListGamesRequest(const std::string &token)
Definition messages.hpp:179
std::string session_token
Definition messages.hpp:176
ListGamesRequest()=default
Definition messages.hpp:183
std::vector< GameInfo > games
Definition messages.hpp:184
ListGamesResponse()=default
Definition messages.hpp:63
MakeMoveRequest()
Definition messages.hpp:67
uint8_t column
Definition messages.hpp:65
std::string session_token
Definition messages.hpp:64
MakeMoveRequest(const std::string &token, uint8_t col)
Definition messages.hpp:68
Definition messages.hpp:73
MoveResult(bool s, const std::string &msg="")
Definition messages.hpp:78
MoveResult()
Definition messages.hpp:77
bool success
Definition messages.hpp:74
std::string message
Definition messages.hpp:75