From 8abb21e7074765842f37186cc9086e3b8abd177b Mon Sep 17 00:00:00 2001 From: gfgtdf Date: Mon, 31 Jul 2017 21:18:08 +0200 Subject: [PATCH] reformat side_drop network message. it is now in a [side_drop] tag instead of on toplevel. this make it easier process. In paarticular a workaround in playturn_network_adapter is no longer needed and should be removed after 1.13.9 --- src/game_initialization/connect_engine.cpp | 8 ++++---- src/playturn_network_adapter.cpp | 1 + src/server/game.cpp | 7 +++++-- src/server/server.cpp | 1 - 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/game_initialization/connect_engine.cpp b/src/game_initialization/connect_engine.cpp index b6d422cf6e5..99139ea1c2b 100644 --- a/src/game_initialization/connect_engine.cpp +++ b/src/game_initialization/connect_engine.cpp @@ -605,11 +605,11 @@ std::pair connect_engine::process_network_data(const config& data) } // A side has been dropped. - if(!data["side_drop"].empty()) { - unsigned side_drop = data["side_drop"].to_int() - 1; + if(const config& side_drop = data.child("side_drop")) { + unsigned side_index = side_drop["side_num"].to_int() - 1; - if(side_drop < side_engines_.size()) { - side_engine_ptr side_to_drop = side_engines_[side_drop]; + if(side_index < side_engines_.size()) { + side_engine_ptr side_to_drop = side_engines_[side_index]; // Remove user, whose side was dropped. connected_users_rw().erase(side_to_drop->player_id()); diff --git a/src/playturn_network_adapter.cpp b/src/playturn_network_adapter.cpp index 6ef0549c84b..d29a703c6bc 100644 --- a/src/playturn_network_adapter.cpp +++ b/src/playturn_network_adapter.cpp @@ -49,6 +49,7 @@ void playturn_network_adapter::read_from_network() } assert(!data_.back().empty()); + // TODO: remove this after 1.13.9 if(back.has_attribute("side_drop")) { config child; diff --git a/src/server/game.cpp b/src/server/game.cpp index 69b6fa148e0..c01b687538e 100644 --- a/src/server/game.cpp +++ b/src/server/game.cpp @@ -1301,9 +1301,12 @@ bool game::remove_player(const socket_ptr player, const bool disconnect, const b //send the host a notification of removal of this side const std::string side_drop = lexical_cast_default(side_index + 1); + simple_wml::document drop; - drop.root().set_attr("side_drop", side_drop.c_str()); - drop.root().set_attr("controller", side_controllers_[side_index].to_cstring()); + auto& node_side_drop = drop.root().add_child("side_drop"); + + node_side_drop.set_attr("side_num", side_drop.c_str()); + node_side_drop.set_attr("controller", side_controllers_[side_index].to_cstring()); DBG_GAME << "*** sending side drop: \n" << drop.output() << std::endl; diff --git a/src/server/server.cpp b/src/server/server.cpp index bba72163039..42557bcce1a 100644 --- a/src/server/server.cpp +++ b/src/server/server.cpp @@ -1559,7 +1559,6 @@ void server::handle_player_in_game(socket_ptr socket, std::shared_ptr