← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug-1791426-multiplayer-map-change into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1791426-multiplayer-map-change into lp:widelands.

Commit message:
Execute map changes in Multiplayer UI after the player slots have been set. This fixes a bug with updating the client dropdowns.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1791426 in widelands: "Client can't select new positions when changing to larger map"
  https://bugs.launchpad.net/widelands/+bug/1791426

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1791426-multiplayer-map-change/+merge/355622
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1791426-multiplayer-map-change into lp:widelands.
=== modified file 'src/network/gameclient.cc'
--- src/network/gameclient.cc	2018-04-21 10:57:12 +0000
+++ src/network/gameclient.cc	2018-09-26 06:07:24 +0000
@@ -584,7 +584,6 @@
 		// New map was set, so we clean up the buffer of a previously requested file
 		if (file_)
 			delete file_;
-		Notifications::publish(NoteGameSettings(NoteGameSettings::Action::kMap));
 		break;
 	}
 
@@ -763,8 +762,11 @@
 
 	case NETCMD_SETTING_ALLPLAYERS: {
 		d->settings.players.resize(packet.unsigned_8());
-		for (uint8_t i = 0; i < d->settings.players.size(); ++i)
+		for (uint8_t i = 0; i < d->settings.players.size(); ++i) {
 			receive_one_player(i, packet);
+		}
+		// Map changes are finished here
+		Notifications::publish(NoteGameSettings(NoteGameSettings::Action::kMap));
 		break;
 	}
 	case NETCMD_SETTING_PLAYER: {

=== modified file 'src/network/gamehost.cc'
--- src/network/gamehost.cc	2018-09-14 23:52:30 +0000
+++ src/network/gamehost.cc	2018-09-26 06:07:24 +0000
@@ -1472,7 +1472,6 @@
 	packet.string(d->settings.mapfilename);
 	packet.unsigned_8(d->settings.savegame ? 1 : 0);
 	packet.unsigned_8(d->settings.scenario ? 1 : 0);
-	Notifications::publish(NoteGameSettings(NoteGameSettings::Action::kMap));
 }
 
 void GameHost::write_setting_player(SendPacket& packet, uint8_t const number) {
@@ -1491,8 +1490,11 @@
 
 void GameHost::write_setting_all_players(SendPacket& packet) {
 	packet.unsigned_8(d->settings.players.size());
-	for (uint8_t i = 0; i < d->settings.players.size(); ++i)
+	for (uint8_t i = 0; i < d->settings.players.size(); ++i) {
 		write_setting_player(packet, i);
+	}
+	// Map changes are finished here
+	Notifications::publish(NoteGameSettings(NoteGameSettings::Action::kMap));
 }
 
 void GameHost::write_setting_user(SendPacket& packet, uint32_t const number) {


Follow ups