Ticket #3242: t3242_observer_late_join_v1.patch
File t3242_observer_late_join_v1.patch, 8.1 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/gamesetup/gamesetup.js
152 152 var mapFilters = Engine.GetGUIObjectByName("mapFilterSelection"); 153 153 mapFilters.list = getFilterNames(); 154 154 mapFilters.list_data = getFilterIds(); 155 155 g_GameAttributes.mapFilter = "default"; 156 156 157 // Reduce size of more mptions dialog by two options (observer late join and rated games = 60px) 158 if (!g_IsNetworked) 159 { 160 Engine.GetGUIObjectByName("moreOptions").size = "50%-200 50%-195 50%+200 50%+160"; 161 Engine.GetGUIObjectByName("hideMoreOptions").size = "50%-70 310 50%+70 336"; 162 } 163 157 164 // Setup controls for host only 158 165 if (g_IsController) 159 166 { 160 167 mapTypes.selected = 0; 161 168 mapFilters.selected = 0; … … 253 260 Engine.GetGUIObjectByName("exploreMap").onPress = function() { 254 261 g_GameAttributes.settings.ExploreMap = this.checked; 255 262 updateGameAttributes(); 256 263 }; 257 264 265 Engine.GetGUIObjectByName("observerLateJoin").onPress = function() { 266 g_GameAttributes.settings.observerLateJoin = this.checked; 267 updateGameAttributes(); 268 }; 269 258 270 Engine.GetGUIObjectByName("disableTreasures").onPress = function() { 259 271 g_GameAttributes.settings.DisableTreasures = this.checked; 260 272 updateGameAttributes(); 261 273 }; 262 274 … … 314 326 } 315 327 else 316 328 { 317 329 Engine.GetGUIObjectByName("optionCheats").hidden = false; 318 330 Engine.GetGUIObjectByName("enableCheats").checked = false; 331 Engine.GetGUIObjectByName("optionObserverLateJoin").hidden = false; 319 332 g_GameAttributes.settings.CheatsEnabled = false; 320 333 // Setup ranked option if we are connected to the lobby. 321 334 if (Engine.HasXmppClient()) 322 335 { 323 336 Engine.GetGUIObjectByName("optionRating").hidden = false; … … 329 342 } 330 343 if (g_IsController) 331 344 { 332 345 Engine.GetGUIObjectByName("enableCheatsText").hidden = true; 333 346 Engine.GetGUIObjectByName("enableCheats").hidden = false; 347 Engine.GetGUIObjectByName("observerLateJoinText").hidden = true; 348 Engine.GetGUIObjectByName("observerLateJoin").hidden = false; 349 334 350 if (Engine.HasXmppClient()) 335 351 { 336 352 Engine.GetGUIObjectByName("enableRatingText").hidden = true; 337 353 Engine.GetGUIObjectByName("enableRating").hidden = false; 338 354 } … … 1184 1200 var enableCheats = Engine.GetGUIObjectByName("enableCheats"); 1185 1201 var enableRating = Engine.GetGUIObjectByName("enableRating"); 1186 1202 var populationCap = Engine.GetGUIObjectByName("populationCap"); 1187 1203 var startingResources = Engine.GetGUIObjectByName("startingResources"); 1188 1204 var ceasefire = Engine.GetGUIObjectByName("ceasefire"); 1189 1205 var observerLateJoin = Engine.GetGUIObjectByName("observerLateJoin"); 1206 1190 1207 var numPlayersText= Engine.GetGUIObjectByName("numPlayersText"); 1191 1208 var mapSizeDesc = Engine.GetGUIObjectByName("mapSizeDesc"); 1192 1209 var mapSizeText = Engine.GetGUIObjectByName("mapSizeText"); 1210 var observerLateJoinText = Engine.GetGUIObjectByName("observerLateJoinText"); 1193 1211 var revealMapText = Engine.GetGUIObjectByName("revealMapText"); 1194 1212 var exploreMapText = Engine.GetGUIObjectByName("exploreMapText"); 1195 1213 var disableTreasuresText = Engine.GetGUIObjectByName("disableTreasuresText"); 1196 1214 var victoryConditionText = Engine.GetGUIObjectByName("victoryConditionText"); 1197 1215 var lockTeamsText = Engine.GetGUIObjectByName("lockTeamsText"); … … 1217 1235 enableRatingText.caption = (enableRating.checked ? translate("Yes") : translate("No")); 1218 1236 enableCheats.enabled = !enableRating.checked; 1219 1237 lockTeams.enabled = !enableRating.checked; 1220 1238 } 1221 1239 else 1240 // TODO: if it's undefined, then its not activated right? Therefore it should display "No" 1222 1241 enableRatingText.caption = "Unknown"; 1242 1243 observerLateJoin.checked = g_GameAttributes.settings.observerLateJoin; 1244 observerLateJoinText.caption = (observerLateJoin.checked ? translate("Yes") : translate("No")); 1245 1223 1246 gameSpeedText.caption = g_GameSpeeds.names[speedIdx]; 1224 1247 gameSpeedBox.selected = speedIdx; 1225 1248 populationCap.selected = (mapSettings.PopulationCap !== undefined && POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) != -1 ? POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) : POPULATION_CAP_DEFAULTIDX); 1226 1249 populationCapText.caption = POPULATION_CAP[populationCap.selected]; 1227 1250 startingResources.selected = (mapSettings.StartingResources !== undefined && STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) != -1 ? STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) : STARTING_RESOURCES_DEFAULTIDX); … … 1241 1264 // Handle map type specific logic 1242 1265 switch (g_GameAttributes.mapType) 1243 1266 { 1244 1267 case "random": 1245 1268 mapSizeDesc.hidden = false; 1246 1269 1247 1270 updateDisplay(numPlayersSelection, numPlayersText, g_IsController); 1248 1271 updateDisplay(mapSize, mapSizeText, g_IsController); 1249 1272 updateDisplay(revealMap, revealMapText, g_IsController); 1250 1273 updateDisplay(exploreMap, exploreMapText, g_IsController); 1251 1274 updateDisplay(disableTreasures, disableTreasuresText, g_IsController); -
binaries/data/mods/public/gui/gamesetup/gamesetup.xml
373 373 <object name="enableCheats" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> 374 374 <translatableAttribute id="tooltip">Toggle the usability of cheats.</translatableAttribute> 375 375 </object> 376 376 </object> 377 377 378 <object name="optionRating" size="14 338 94% 366" hidden="true"> 378 <object name="optionObserverLateJoin" size="14 338 94% 366" hidden="true"> 379 <object size="0 0 40% 28" type="text" hidden="false" style="ModernRightLabelText"> 380 <translatableAttribute id="caption" comment="Allow observers to join after the game started:">Observers can join after gamestart:</translatableAttribute> 381 </object> 382 <object name="observerLateJoinText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 383 <object name="observerLateJoin" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> 384 <translatableAttribute id="tooltip" comment="Allow observers to join after the game started:">Allow observers to join after the game started:</translatableAttribute> 385 </object> 386 </object> 387 388 <object name="optionRating" size="14 368 94% 396" hidden="true"> 379 389 <object size="0 0 40% 28" hidden="false" type="text" style="ModernRightLabelText"> 380 390 <translatableAttribute id="caption">Rated Game:</translatableAttribute> 381 391 </object> 382 392 <object name="enableRatingText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 383 393 <object name="enableRating" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> -
source/network/NetServer.cpp
795 795 796 796 bool isRejoining = false; 797 797 798 798 if (server.m_State != SERVER_STATE_PREGAME) 799 799 { 800 // isRejoining = true; // uncomment this to test rejoining even if the player wasn't connected previously 800 // Optionally allow observers to join after the game has started 801 bool observerLateJoin; 802 JSContext* cx = server.GetScriptInterface().GetContext(); 803 JSAutoRequest rq(cx); 804 JS::RootedValue settings(cx); 805 server.GetScriptInterface().GetProperty(server.m_GameAttributes.get(), "settings", &settings); 806 server.GetScriptInterface().GetProperty(settings, "observerLateJoin", observerLateJoin); 807 if (observerLateJoin) 808 isRejoining = true; 801 809 802 810 // Search for an old disconnected player of the same name 803 811 // (TODO: if GUIDs were stable, we should use them instead) 804 812 for (PlayerAssignmentMap::iterator it = server.m_PlayerAssignments.begin(); it != server.m_PlayerAssignments.end(); ++it) 805 813 {