Ticket #3210: cacheHighlight.patch
File cacheHighlight.patch, 3.2 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/gui/session/selection_panels.js
34 34 35 35 let g_SelectionPanels = {}; 36 36 37 // Keep track of menu highlights before the engine has commited them 38 var g_MenuUpdateCache = { 39 selection:undefined, 40 stance: undefined, 41 formation:undefined 42 //queue:undefined todo 43 } 44 45 37 46 g_SelectionPanels.Alert = { 38 47 "getMaxNumberOfItems": function() 39 48 { … … 374 383 375 384 let formationInfo = g_FormationsInfo.get(data.item); 376 385 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 386 data.button.onPress = function() { 387 g_MenuUpdateCache.selection = data.selection 388 g_MenuUpdateCache.formation = data.item; 389 performFormation(data.unitEntState.id, data.item); 390 }; 384 391 let tooltip = translate(formationInfo.name); 385 392 if (!formationOk && formationInfo.tooltip) 386 393 tooltip += "\n" + "[color=\"red\"]" + translate(formationInfo.tooltip) + "[/color]"; … … 388 395 389 396 data.button.enabled = formationOk && controlsPlayer(data.unitEntState.player); 390 397 let grayscale = formationOk ? "" : "grayscale:"; 391 data.guiSelection.hidden = !formationSelected; 398 if(g_MenuUpdateCache.selection === data.selection){ 399 var showHighlight = g_MenuUpdateCache.formation === data.item; 400 data.guiSelection.hidden = !showHighlight 401 } else { 402 data.guiSelection.hidden = !Engine.GuiInterfaceCall("IsFormationSelected", { 403 "ents": data.selection, 404 "formationTemplate": data.item 405 }); 406 } 407 392 408 data.icon.sprite = "stretched:" + grayscale + "session/icons/" + formationInfo.icon; 393 409 394 410 setPanelObjectPosition(data.button, data.i, data.rowLength); … … 918 934 return true; 919 935 } 920 936 }; 921 937 922 938 g_SelectionPanels.Stance = { 923 939 "getMaxNumberOfItems": function() 924 940 { … … 932 948 }, 933 949 "setupButton": function(data) 934 950 { 935 data.button.onPress = function() { performStance(data.unitEntState, data.item); }; 936 951 data.button.onPress = function() { 952 g_MenuUpdateCache.selection = data.selection 953 g_MenuUpdateCache.stance = data.item 954 performStance(data.unitEntState, data.item); 955 956 }; 937 957 data.button.tooltip = getStanceDisplayName(data.item) + "\n" + 938 958 "[font=\"sans-13\"]" + getStanceTooltip(data.item) + "[/font]"; 939 959 940 data.guiSelection.hidden = !Engine.GuiInterfaceCall("IsStanceSelected", { 941 "ents": data.selection, 942 "stance": data.item 943 }); 960 if(g_MenuUpdateCache.selection === data.selection){ 961 var showHighlight = g_MenuUpdateCache.stance === data.item; 962 data.guiSelection.hidden = !showHighlight 963 }else { 964 data.guiSelection.hidden = !Engine.GuiInterfaceCall("IsStanceSelected", { 965 "ents": data.selection, 966 "stance": data.item 967 }); 968 } 969 970 944 971 data.icon.sprite = "stretched:session/icons/stances/" + data.item + ".png"; 945 972 data.button.enabled = controlsPlayer(data.unitEntState.player); 946 973