mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-28 07:36:24 +00:00
count requests instead of synced contexts for require_random
This commit is contained in:
parent
9f7638e4e0
commit
00e51feb16
@ -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_;
|
||||
|
@ -182,8 +182,8 @@ public:
|
||||
boost::shared_ptr<wb::manager> 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_;
|
||||
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user