Ticket #3210: cacheHighlight3.patch
File cacheHighlight3.patch, 3.6 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 }); 385 data.button.onPress = function() { 386 g_MenuUpdateCache.formation = data.item; 381 387 382 data.button.onPress = function() { performFormation(data.unitEntState.id, data.item); }; 383 388 performFormation(data.unitEntState.id, data.item); 389 updateSelectionDetails(); 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.formation){ 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.stance = data.item 953 updateSelectionDetails(); 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.stance){ 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