Ticket #4052: t4051_disabled_sprite_v1.patch

File t4051_disabled_sprite_v1.patch, 1.9 KB (added by elexis, 8 years ago)

Shows the player color in the sprite_disabled, adds the grayscale again and shows only the unit name in the tooltip if disabled. Refs r18347 #3731 #3168.

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

    g_SelectionPanels.Garrison = {  
    421421
    422422        data.button.onPress = function() {
    423423            unloadTemplate(data.item.template);
    424424        };
    425425
    426         data.button.tooltip = sprintf(
    427             translate("Unload %(name)s"),
    428             { "name": getEntityNames(template) }) + "\n" +
    429             translate("Single-click to unload 1. Shift-click to unload all of this type.");
    430 
    431426        data.countDisplay.caption = data.item.ents.length || "";
    432427
    433428        let garrisonedUnitOwner = GetEntityState(data.item.ents[0]).player;
     429       
     430        let canUngarrison =
     431            g_ViewedPlayer == data.unitEntState.player ||
     432            g_ViewedPlayer == garrisonedUnitOwner;
     433
     434        data.button.enabled = canUngarrison && controlsPlayer(g_ViewedPlayer);
     435
     436        data.button.tooltip = canUngarrison || g_IsObserver ?
     437            sprintf(translate("Unload %(name)s"),
     438            { "name": getEntityNames(template) }) + "\n" +
     439            translate("Single-click to unload 1. Shift-click to unload all of this type.") :
     440            getEntityNames(template);
    434441
    435442        data.button.sprite = "color:" + rgbToGuiColor(g_Players[garrisonedUnitOwner].color) + ":";
    436         data.button.enabled =
    437             controlsPlayer(data.unitEntState.player) ||
    438             controlsPlayer(garrisonedUnitOwner);
     443        data.button.sprite_disabled = data.button.sprite;
    439444
    440         data.icon.sprite = "stretched:session/portraits/" + template.icon;
     445        // Selection panel buttons only appear disabled if they
     446        // also appear disabled to the owner of the building.
     447        data.icon.sprite =
     448            (canUngarrison || g_IsObserver ? "" : "grayscale:") +
     449            "stretched:session/portraits/" + template.icon;
    441450
    442451        setPanelObjectPosition(data.button, data.i, data.rowLength);
     452
    443453        return true;
    444454    }
    445455};
    446456
    447457g_SelectionPanels.Gate = {