diff --git a/src/play_controller.cpp b/src/play_controller.cpp index 09ba79accc8..3752b92f7fa 100644 --- a/src/play_controller.cpp +++ b/src/play_controller.cpp @@ -142,7 +142,7 @@ play_controller::play_controller(const config& level, saved_game& state_of_game, victory_music_(), defeat_music_(), scope_(), - synced_context_number_(0) + server_request_number_(0) { resources::controller = this; resources::gameboard = &gamestate_.board_; diff --git a/src/play_controller.hpp b/src/play_controller.hpp index 9281ff230d8..77164e6496d 100644 --- a/src/play_controller.hpp +++ b/src/play_controller.hpp @@ -182,8 +182,8 @@ public: boost::shared_ptr get_whiteboard(); const mp_game_settings& get_mp_settings(); const game_classification & get_classification(); - int get_synced_context_number() const { return synced_context_number_; } - void increase_synced_context_number() { ++synced_context_number_; } + int get_server_request_number() const { return server_request_number_; } + void increase_server_request_number() { ++server_request_number_; } static const std::string wml_menu_hotkey_prefix; protected: @@ -305,7 +305,7 @@ private: hotkey::scope_changer scope_; // used to sync with the mpserver, not persistent in savefiles. - int synced_context_number_; + int server_request_number_; }; diff --git a/src/server/game.cpp b/src/server/game.cpp index b1445246d04..343f3310db9 100644 --- a/src/server/game.cpp +++ b/src/server/game.cpp @@ -985,7 +985,7 @@ bool game::process_turn(simple_wml::document& data, const player_map::const_iter return turn_ended; } -void game::require_random(const simple_wml::document &data, const player_map::iterator /*user*/) +void game::require_random(const simple_wml::document &data, const player_map::iterator user) { // note, that during end turn events, it's side=1 for the server but side= side_count() on the clients. @@ -1001,14 +1001,15 @@ void game::require_random(const simple_wml::document &data, const player_map::it const simple_wml::node* require_random = data.root().child("require_random"); if(!require_random) return; - if(require_random->has_attr("context_id")) + if(require_random->has_attr("request_id")) { - int context_id = (*require_random)["context_id"].to_int(); + int context_id = (*require_random)["request_id"].to_int(); if(context_id <= last_synced_context_id_) { // We gave already a randpm seed for this synced context. return; } + LOG_GAME << "answering seed request " << context_id << " by player " << user->second.name() << "(" << user->first << ")" << std::endl; last_synced_context_id_ = context_id; } diff --git a/src/synced_context.cpp b/src/synced_context.cpp index 89342326844..8a71004c34e 100644 --- a/src/synced_context.cpp +++ b/src/synced_context.cpp @@ -243,13 +243,14 @@ static void send_require_random() { config data; config& rr = data.add_child("require_random"); - rr["context_id"] = resources::controller->get_synced_context_number(); + rr["request_id"] = resources::controller->get_server_request_number(); network::send_data(data,0); } config synced_context::ask_server_for_seed() { + resources::controller->increase_server_request_number(); std::string name = "random_seed"; assert(get_synced_state() == synced_context::SYNCED); const bool is_mp_game = network::nconnections() != 0; @@ -346,7 +347,6 @@ set_scontext_synced::set_scontext_synced(int number) */ void set_scontext_synced::init() { - resources::controller->increase_synced_context_number(); LOG_REPLAY << "set_scontext_synced::set_scontext_synced\n"; assert(synced_context::get_synced_state() == synced_context::UNSYNCED);