mirror of
https://github.com/kierankihn/uno-game.git
synced 2025-12-27 02:13:18 +08:00
feat(network): add playerId to InitGamePayload
- Updated `InitGamePayload` to include `playerId`. - Modified `MessageSerializer` to handle serialization and deserialization of `playerId`. - Added validation for `playerId` in INIT_GAME payload.
This commit is contained in:
@@ -34,6 +34,7 @@ namespace UNO::NETWORK {
|
||||
};
|
||||
|
||||
struct InitGamePayload {
|
||||
size_t playerId;
|
||||
GAME::DiscardPile discardPile;
|
||||
std::multiset<GAME::Card> handCard;
|
||||
size_t currentPlayerIndex;
|
||||
|
||||
@@ -55,7 +55,8 @@ namespace UNO::NETWORK {
|
||||
|
||||
nlohmann::json MessageSerializer::serializePayload(const InitGamePayload &payload)
|
||||
{
|
||||
return {{"discard_pile", serializeDiscardPile(payload.discardPile)},
|
||||
return {{"player_id", payload.playerId},
|
||||
{"discard_pile", serializeDiscardPile(payload.discardPile)},
|
||||
{"hand_card", serializeCards(payload.handCard.begin(), payload.handCard.end())},
|
||||
{"current_player", payload.currentPlayerIndex}};
|
||||
}
|
||||
@@ -291,10 +292,14 @@ namespace UNO::NETWORK {
|
||||
if (payload.is_object() == false) {
|
||||
throw std::invalid_argument("Invalid INIT_GAME payload: expected JSON object");
|
||||
}
|
||||
if (payload.at("player_id").is_number_unsigned() == false) {
|
||||
throw std::invalid_argument("Invalid 'player_id' field in INIT_GAME payload: expected unsigned interger");
|
||||
}
|
||||
if (payload.at("current_player").is_number_unsigned() == false) {
|
||||
throw std::invalid_argument("Invalid 'current_player' field in INIT_GAME payload: expected unsigned integer");
|
||||
}
|
||||
return {deserializeDiscardPile(payload.at("discard_pile")),
|
||||
return {payload.at("player_id"),
|
||||
deserializeDiscardPile(payload.at("discard_pile")),
|
||||
deserializeHandCard(payload.at("hand_card")),
|
||||
payload.at("current_player")};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user