From d0c5819fb141f5cb174f47616d7c5ea4116e871c Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Sat, 27 Nov 2010 04:22:53 +0100 Subject: Changed format of RoundState again. --- server/client.cpp | 4 ++-- server/client.h | 4 +++- server/game.cpp | 41 +++++++++++++++++++++-------------------- server/game.h | 8 ++++---- 4 files changed, 30 insertions(+), 27 deletions(-) (limited to 'server') diff --git a/server/client.cpp b/server/client.cpp index 465da3b..3977b53 100644 --- a/server/client.cpp +++ b/server/client.cpp @@ -84,8 +84,8 @@ void Client::round_start() { connection->send(make_shared()); } -void Client::round_state(State state) { - connection->send(make_shared(state)); +void Client::round_state(const PlayerState& pl_d, const PlayerState& pl_r, const PlayerState& pl_u, const PlayerState& pl_l, const Tiles& d, const Actions& a) { + connection->send(make_shared(pl_d, pl_r, pl_u, pl_l, d, a)); } void Client::round_end() { diff --git a/server/client.h b/server/client.h index ec22e85..b8e11c2 100644 --- a/server/client.h +++ b/server/client.h @@ -46,8 +46,10 @@ class Client : public boost::enable_shared_from_this { //! Notify client of a round start. void round_start(); + typedef Message::RoundState::Player PlayerState; + //! Send round state. - void round_state(State state); + void round_state(const PlayerState& pl_d, const PlayerState& pl_r, const PlayerState& pl_u, const PlayerState& pl_l, const Tiles& d, const Actions& a); //! Send round end. void round_end(); diff --git a/server/game.cpp b/server/game.cpp index 1f43e9b..26d0ce4 100644 --- a/server/game.cpp +++ b/server/game.cpp @@ -101,18 +101,19 @@ void Game::round_update_draw() { // Construct and send state to each client. for(int i = 0; i < 4; i++) { - State state; + Player::State state[4]; - state.players[0] = players[i].get_state(); - state.players[1] = players[(i + 1) % 4].get_state_filtered(); - state.players[2] = players[(i + 2) % 4].get_state_filtered(); - state.players[3] = players[(i + 3) % 4].get_state_filtered(); + state[0] = players[i].get_state(); + state[1] = players[(i + 1) % 4].get_state_filtered(); + state[2] = players[(i + 2) % 4].get_state_filtered(); + state[3] = players[(i + 3) % 4].get_state_filtered(); + Actions a; if(i == current_player) { - state.possible_actions = possible_actions; + a = possible_actions; } - players[i].client->round_state(state); + players[i].client->round_state(state[0], state[1], state[2], state[3], Tiles(), a); } // Await action from client. @@ -126,21 +127,21 @@ void Game::round_update_discard() { // Construct and send state to each client. for(int i = 0; i < 4; i++) { - State state; + Player::State state[4]; - state.players[0] = players[i].get_state(); - state.players[1] = players[(i + 1) % 4].get_state_filtered(); - state.players[2] = players[(i + 2) % 4].get_state_filtered(); - state.players[3] = players[(i + 3) % 4].get_state_filtered(); + state[0] = players[i].get_state(); + state[1] = players[(i + 1) % 4].get_state_filtered(); + state[2] = players[(i + 2) % 4].get_state_filtered(); + state[3] = players[(i + 3) % 4].get_state_filtered(); + Actions a; if(i != current_player) { - Actions a = players[i].get_actions_discard(discarded_tile); - if(a) { - state.possible_actions = possible_actions[i] = a; + if(a = players[i].get_actions_discard(discarded_tile)) { + possible_actions[i] = a; } } - players[i].client->round_state(state); + players[i].client->round_state(state[0], state[1], state[2], state[3], Tiles(), a); } preceding_action = Action::Pass; @@ -275,13 +276,13 @@ void Game::Player::round_start() { client->round_start(); } -State::Player Game::Player::get_state() { - State::Player state = {hand, open, pond}; +Game::Player::State Game::Player::get_state() { + State state = {hand, open, pond}; return state; } -State::Player Game::Player::get_state_filtered() { - State::Player state = {hand, open, pond}; +Game::Player::State Game::Player::get_state_filtered() { + State state = {hand, open, pond}; return state; } diff --git a/server/game.h b/server/game.h index 3eaac77..5fd85fd 100644 --- a/server/game.h +++ b/server/game.h @@ -9,8 +9,6 @@ #include "wall.h" #include "client.h" #include "../common/action.h" -#include "../common/state.h" - class Game : public boost::enable_shared_from_this { public: @@ -33,11 +31,13 @@ class Game : public boost::enable_shared_from_this { //! Prepare for a new round. void round_start(); + typedef Client::PlayerState State; + //! Get a state snapshot. - State::Player get_state(); + State get_state(); //! Get a state snapshot, with concealed tiles filtered. - State::Player get_state_filtered(); + State get_state_filtered(); //! Get possible actions after a draw. Actions get_actions_draw(); -- cgit v1.2.3