Ticket #3210: cacheHighlight2.patch
File cacheHighlight2.patch, 3.5 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/gui/session/selection.js
457 457 g_canMoveIntoFormation = {}; 458 458 g_allBuildableEntities = undefined; 459 459 g_allTrainableEntities = undefined; 460 g_MenuUpdateCache = { 461 stance: undefined, 462 formation:undefined 463 //queue:undefined todo 464 } 460 465 } 461 466 462 467 -
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 stance: undefined, 40 formation:undefined 41 //queue:undefined todo 42 } 43 44 37 45 g_SelectionPanels.Alert = { 38 46 "getMaxNumberOfItems": function() 39 47 { … … 374 382 375 383 let formationInfo = g_FormationsInfo.get(data.item); 376 384 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 }; 384 389 let tooltip = translate(formationInfo.name); 385 390 if (!formationOk && formationInfo.tooltip) 386 391 tooltip += "\n" + "[color=\"red\"]" + translate(formationInfo.tooltip) + "[/color]"; … … 388 393 389 394 data.button.enabled = formationOk && controlsPlayer(data.unitEntState.player); 390 395 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 392 406 data.icon.sprite = "stretched:" + grayscale + "session/icons/" + formationInfo.icon; 393 407 394 408 setPanelObjectPosition(data.button, data.i, data.rowLength); … … 918 932 return true; 919 933 } 920 934 }; 921 935 922 936 g_SelectionPanels.Stance = { 923 937 "getMaxNumberOfItems": function() 924 938 { … … 932 946 }, 933 947 "setupButton": function(data) 934 948 { 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 }; 937 954 data.button.tooltip = getStanceDisplayName(data.item) + "\n" + 938 955 "[font=\"sans-13\"]" + getStanceTooltip(data.item) + "[/font]"; 939 956 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 944 968 data.icon.sprite = "stretched:session/icons/stances/" + data.item + ".png"; 945 969 data.button.enabled = controlsPlayer(data.unitEntState.player); 946 970