Ticket #3101: t3101_dynamically_hide_elements_for_observers_v2.patch
File t3101_dynamically_hide_elements_for_observers_v2.patch, 5.5 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/session/session.js
168 168 // Cache civ data 169 169 g_CivData = loadCivData(); 170 170 g_CivData["gaia"] = { "Code": "gaia", "Name": translate("Gaia") }; 171 171 172 172 if (Engine.GetPlayerID() <= 0) 173 {174 173 g_IsObserver = true; 175 // Hide stuff observers don't use. 176 Engine.GetGUIObjectByName("food").hidden = true; 177 Engine.GetGUIObjectByName("wood").hidden = true; 178 Engine.GetGUIObjectByName("stone").hidden = true; 179 Engine.GetGUIObjectByName("metal").hidden = true; 180 Engine.GetGUIObjectByName("population").hidden = true; 181 Engine.GetGUIObjectByName("diplomacyButton1").hidden = true; 182 Engine.GetGUIObjectByName("tradeButton1").hidden = true; 183 Engine.GetGUIObjectByName("menuResignButton").enabled = false; 184 Engine.GetGUIObjectByName("pauseButton").enabled = false; 185 Engine.GetGUIObjectByName("observerText").hidden = false; 186 } 187 else 188 { 189 var civName = g_CivData[g_Players[Engine.GetPlayerID()].civ].Name; 190 // TODO: Get a civ icon for gaia/observers. 191 Engine.GetGUIObjectByName("civIcon").sprite = "stretched:" + g_CivData[g_Players[Engine.GetPlayerID()].civ].Emblem; 192 Engine.GetGUIObjectByName("civIconOverlay").tooltip = sprintf(translate("%(civ)s - Structure Tree"), {"civ": civName}); 193 } 174 175 updateTopPanel(); 194 176 195 177 g_GameSpeeds = initGameSpeeds(); 196 178 g_CurrentSpeed = Engine.GetSimRate(); 197 179 var gameSpeed = Engine.GetGUIObjectByName("gameSpeed"); 198 180 gameSpeed.list = g_GameSpeeds.names; … … 246 228 } 247 229 248 230 function selectViewPlayer(playerID) 249 231 { 250 232 Engine.SetPlayerID(playerID); 251 if (playerID > 0) 233 updateTopPanel(); 234 } 235 236 function updateTopPanel() 237 { 238 var playerID = Engine.GetPlayerID(); 239 var isPlayer = playerID > 0; 240 if (isPlayer) 252 241 { 253 242 var civName = g_CivData[g_Players[playerID].civ].Name 243 // TODO: Get a civ icon for gaia/observers. 254 244 Engine.GetGUIObjectByName("civIcon").sprite = "stretched:" + g_CivData[g_Players[playerID].civ].Emblem; 255 Engine.GetGUIObjectByName("civIconOverlay").tooltip = 245 Engine.GetGUIObjectByName("civIconOverlay").tooltip = sprintf(translate("%(civ)s - Structure Tree"), {"civ": civName}); 256 246 } 247 248 // Hide stuff observers don't use. 249 Engine.GetGUIObjectByName("food").hidden = !isPlayer; 250 Engine.GetGUIObjectByName("wood").hidden = !isPlayer; 251 Engine.GetGUIObjectByName("stone").hidden = !isPlayer; 252 Engine.GetGUIObjectByName("metal").hidden = !isPlayer; 253 Engine.GetGUIObjectByName("population").hidden = !isPlayer; 254 Engine.GetGUIObjectByName("civIcon").hidden = !isPlayer; 255 Engine.GetGUIObjectByName("diplomacyButton1").hidden = !isPlayer; 256 Engine.GetGUIObjectByName("tradeButton1").hidden = !isPlayer; 257 Engine.GetGUIObjectByName("observerText").hidden = isPlayer; 258 259 // Disable stuff observers shouldn't use 260 var isActive = isPlayer && GetSimState().players[playerID].state == "active"; 261 Engine.GetGUIObjectByName("pauseButton").enabled = isActive || !g_IsNetworked; 262 Engine.GetGUIObjectByName("menuResignButton").enabled = isActive; 257 263 } 258 264 259 265 function reportPerformance(time) 260 266 { 261 267 var settings = Engine.GetMapSettings(); … … 286 292 Engine.PostNetworkCommand({ 287 293 "type": "defeat-player", 288 294 "playerId": Engine.GetPlayerID() 289 295 }); 290 296 291 Engine.GetGUIObjectByName("menuResignButton").enabled = false;297 updateTopPanel(); 292 298 293 299 global.music.setState(global.music.states.DEFEAT); 294 300 295 301 // Resume the game if not resigning. 296 302 if (!leaveGameAfterResign) … … 456 462 457 463 // If the local player hasn't finished playing, we return here to avoid the victory/defeat messages. 458 464 if (playerState.state == "active") 459 465 return; 460 466 461 // We can't resign once the game is over.462 Engine.GetGUIObjectByName("menuResignButton").enabled = false;463 467 // Disable resign and pause buttons (we can't resign once the game is over) 468 updateTopPanel(); 469 464 470 // Make sure nothing is open to avoid stacking. 465 471 closeMenu(); 466 472 closeOpenDialogs(); 467 473 468 474 // Make sure this doesn't run again. … … 591 597 } 592 598 593 599 594 600 function updateHero() 595 601 { 596 var simState = GetSimState(); 597 var playerState = simState.players[Engine.GetPlayerID()]; 602 var playerState = GetSimState().players[Engine.GetPlayerID()]; 598 603 var unitHeroPanel = Engine.GetGUIObjectByName("unitHeroPanel"); 599 604 var heroButton = Engine.GetGUIObjectByName("unitHeroButton"); 600 605 601 606 if (!playerState || playerState.heroes.length <= 0) 602 607 { … … 667 672 } 668 673 } 669 674 670 675 function updateDebug() 671 676 { 672 let simState = GetSimState();673 677 let debug = Engine.GetGUIObjectByName("debug"); 674 678 675 679 if (!Engine.GetGUIObjectByName("devDisplayState").checked) 676 680 { 677 681 debug.hidden = true; 678 682 return; 679 683 } 680 684 681 685 debug.hidden = false; 682 686 683 let conciseSimState = deepcopy( simState);687 let conciseSimState = deepcopy(GetSimState()); 684 688 conciseSimState.players = "<<<omitted>>>"; 685 689 let text = "simulation: " + uneval(conciseSimState); 686 690 687 691 let selection = g_Selection.toList(); 688 692 if (selection.length) … … 701 705 debug.caption = text.replace(/\[/g, "\\["); 702 706 } 703 707 704 708 function updatePlayerDisplay() 705 709 { 706 var simState = GetSimState(); 707 var playerState = simState.players[Engine.GetPlayerID()]; 710 var playerState = GetSimState().players[Engine.GetPlayerID()]; 708 711 if (!playerState) 709 712 return; 710 713 711 714 Engine.GetGUIObjectByName("resourceFood").caption = Math.floor(playerState.resourceCounts.food); 712 715 Engine.GetGUIObjectByName("resourceWood").caption = Math.floor(playerState.resourceCounts.wood);