Ticket #3101: t3101_dynamically_hide_elements_for_observers.patch

File t3101_dynamically_hide_elements_for_observers.patch, 4.6 KB (added by elexis, 9 years ago)

Dynamically hides / shows the elements in the upper panel when changing the perspective.

  • binaries/data/mods/public/gui/session/session.js

     
    168168    // Cache civ data
    169169    g_CivData = loadCivData();
    170170    g_CivData["gaia"] = { "Code": "gaia", "Name": translate("Gaia") };
    171171
    172172    if (Engine.GetPlayerID() <= 0)
    173     {
    174173        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    selectViewPlayer(Engine.GetPlayerID());
    194176
    195177    g_GameSpeeds = initGameSpeeds();
    196178    g_CurrentSpeed = Engine.GetSimRate();
    197179    var gameSpeed = Engine.GetGUIObjectByName("gameSpeed");
    198180    gameSpeed.list = g_GameSpeeds.names;
     
    246228}
    247229
    248230function selectViewPlayer(playerID)
    249231{
    250232    Engine.SetPlayerID(playerID);
    251     if (playerID > 0)
     233
     234    var isPlayer = playerID > 0;
     235    if (isPlayer)
    252236    {
    253237        var civName = g_CivData[g_Players[playerID].civ].Name
     238        // TODO: Get a civ icon for gaia/observers.
    254239        Engine.GetGUIObjectByName("civIcon").sprite = "stretched:" + g_CivData[g_Players[playerID].civ].Emblem;
    255         Engine.GetGUIObjectByName("civIconOverlay").tooltip =  sprintf(translate("%(civ)s - Structure Tree"), {"civ": civName});
     240        Engine.GetGUIObjectByName("civIconOverlay").tooltip = sprintf(translate("%(civ)s - Structure Tree"), {"civ": civName});
    256241    }
     242   
     243    // Hide stuff observers don't use.
     244    Engine.GetGUIObjectByName("food").hidden = !isPlayer;
     245    Engine.GetGUIObjectByName("wood").hidden = !isPlayer;
     246    Engine.GetGUIObjectByName("stone").hidden = !isPlayer;
     247    Engine.GetGUIObjectByName("metal").hidden = !isPlayer;
     248    Engine.GetGUIObjectByName("population").hidden = !isPlayer;
     249    Engine.GetGUIObjectByName("civIcon").hidden = !isPlayer;
     250    Engine.GetGUIObjectByName("diplomacyButton1").hidden = !isPlayer;
     251    Engine.GetGUIObjectByName("tradeButton1").hidden = !isPlayer;
     252    Engine.GetGUIObjectByName("observerText").hidden = isPlayer;
     253
     254    // Disable stuff observers shouldn't use
     255    var isActive = isPlayer && GetSimState().players[playerID].state == "active";
     256    Engine.GetGUIObjectByName("pauseButton").enabled = isActive;
     257    Engine.GetGUIObjectByName("menuResignButton").enabled = isActive;
    257258}
    258259
    259260function reportPerformance(time)
    260261{
    261262    var settings = Engine.GetMapSettings();
     
    591592}
    592593
    593594
    594595function updateHero()
    595596{
    596     var simState = GetSimState();
    597     var playerState = simState.players[Engine.GetPlayerID()];
     597    var playerState = GetSimState().players[Engine.GetPlayerID()];
    598598    var unitHeroPanel = Engine.GetGUIObjectByName("unitHeroPanel");
    599599    var heroButton = Engine.GetGUIObjectByName("unitHeroButton");
    600600
    601601    if (!playerState || playerState.heroes.length <= 0)
    602602    {
     
    667667    }
    668668}
    669669
    670670function updateDebug()
    671671{
    672     let simState = GetSimState();
    673672    let debug = Engine.GetGUIObjectByName("debug");
    674673
    675674    if (!Engine.GetGUIObjectByName("devDisplayState").checked)
    676675    {
    677676        debug.hidden = true;
    678677        return;
    679678    }
    680679
    681680    debug.hidden = false;
    682681
    683     let conciseSimState = deepcopy(simState);
     682    let conciseSimState = deepcopy(GetSimState());
    684683    conciseSimState.players = "<<<omitted>>>";
    685684    let text = "simulation: " + uneval(conciseSimState);
    686685
    687686    let selection = g_Selection.toList();
    688687    if (selection.length)
     
    701700    debug.caption = text.replace(/\[/g, "\\[");
    702701}
    703702
    704703function updatePlayerDisplay()
    705704{
    706     var simState = GetSimState();
    707     var playerState = simState.players[Engine.GetPlayerID()];
     705    var playerState = GetSimState().players[Engine.GetPlayerID()];
    708706    if (!playerState)
    709707        return;
    710708
    711709    Engine.GetGUIObjectByName("resourceFood").caption = Math.floor(playerState.resourceCounts.food);
    712710    Engine.GetGUIObjectByName("resourceWood").caption = Math.floor(playerState.resourceCounts.wood);