Ticket #3210: cacheHighlight2.patch

File cacheHighlight2.patch, 3.5 KB (added by WhapWhap, 8 years ago)
  • binaries/data/mods/public/gui/session/selection.js

     
    457457    g_canMoveIntoFormation = {};
    458458    g_allBuildableEntities = undefined;
    459459    g_allTrainableEntities = undefined;
     460    g_MenuUpdateCache = {
     461        stance: undefined,
     462        formation:undefined
     463        //queue:undefined todo
     464    }
    460465}
    461466
    462467
  • binaries/data/mods/public/gui/session/selection_panels.js

     
    3434
    3535let g_SelectionPanels = {};
    3636
     37// Keep track of menu highlights before the engine has commited them
     38var g_MenuUpdateCache = {
     39    stance: undefined,
     40    formation:undefined
     41    //queue:undefined todo
     42}
     43
     44
    3745g_SelectionPanels.Alert = {
    3846    "getMaxNumberOfItems": function()
    3947    {
     
    374382
    375383        let formationInfo = g_FormationsInfo.get(data.item);
    376384        let formationOk = canMoveSelectionIntoFormation(data.item);
    377         let formationSelected = Engine.GuiInterfaceCall("IsFormationSelected", {
    378             "ents": data.selection,
    379             "formationTemplate": data.item
    380         });
    381 
    382         data.button.onPress = function() { performFormation(data.unitEntState.id, data.item); };
    383 
     385        data.button.onPress = function() {
     386            g_MenuUpdateCache.formation = data.item;
     387            performFormation(data.unitEntState.id, data.item);
     388        };
    384389        let tooltip = translate(formationInfo.name);
    385390        if (!formationOk && formationInfo.tooltip)
    386391            tooltip += "\n" + "[color=\"red\"]" + translate(formationInfo.tooltip) + "[/color]";
     
    388393
    389394        data.button.enabled = formationOk && controlsPlayer(data.unitEntState.player);
    390395        let grayscale = formationOk ? "" : "grayscale:";
    391         data.guiSelection.hidden = !formationSelected;
     396        if(g_MenuUpdateCache.formation){
     397            var showHighlight = g_MenuUpdateCache.formation === data.item;
     398            data.guiSelection.hidden = !showHighlight
     399        } else {
     400            data.guiSelection.hidden = !Engine.GuiInterfaceCall("IsFormationSelected", {
     401                "ents": data.selection,
     402                "formationTemplate": data.item
     403            });
     404        }
     405
    392406        data.icon.sprite = "stretched:" + grayscale + "session/icons/" + formationInfo.icon;
    393407
    394408        setPanelObjectPosition(data.button, data.i, data.rowLength);
     
    918932        return true;
    919933    }
    920934};
    921 
     935 
    922936g_SelectionPanels.Stance = {
    923937    "getMaxNumberOfItems": function()
    924938    {
     
    932946    },
    933947    "setupButton": function(data)
    934948    {
    935         data.button.onPress = function() { performStance(data.unitEntState, data.item); };
    936 
     949        data.button.onPress = function() {
     950            g_MenuUpdateCache.stance = data.item
     951            performStance(data.unitEntState, data.item);
     952           
     953        };
    937954        data.button.tooltip = getStanceDisplayName(data.item) + "\n" +
    938955            "[font=\"sans-13\"]" + getStanceTooltip(data.item) + "[/font]";
    939956
    940         data.guiSelection.hidden = !Engine.GuiInterfaceCall("IsStanceSelected", {
    941             "ents": data.selection,
    942             "stance": data.item
    943         });
     957        if(g_MenuUpdateCache.stance){
     958            var showHighlight = g_MenuUpdateCache.stance === data.item;
     959            data.guiSelection.hidden = !showHighlight
     960        }else {
     961            data.guiSelection.hidden =  !Engine.GuiInterfaceCall("IsStanceSelected", {
     962                "ents": data.selection,
     963                "stance": data.item
     964            });
     965        }
     966       
     967       
    944968        data.icon.sprite = "stretched:session/icons/stances/" + data.item + ".png";
    945969        data.button.enabled = controlsPlayer(data.unitEntState.player);
    946970