Ticket #3736: idleworker_V2.2.patch
File idleworker_V2.2.patch, 4.0 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/gui/session/minimap_panel.xml
7 7 > 8 8 <!-- Idle Worker Button --> 9 9 <object size="100%-80 100%-80 100%-5 100%-5"> 10 <!-- TODO: We should disable this button if there are no idle workers. -->11 10 <object type="button" 12 11 tooltip_style="sessionToolTip" 13 12 hotkey="selection.idleworker" 14 13 > 15 14 <translatableAttribute id="tooltip">Find idle worker</translatableAttribute> 16 <action on="Press"> findIdleUnit(["Female", "Trader", "FishingBoat", "CitizenSoldier", "Healer"]);</action>17 <action on="MouseEnter"> Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png";</action>18 <action on="MouseLeave"> Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action>19 <action on="MouseLeftPress"> Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action>20 <action on="MouseLeftRelease"> Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png";</action>15 <action on="Press">if (g_HasIdleWorker) findIdleUnit(g_WorkerTypes);</action> 16 <action on="MouseEnter">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png";</action> 17 <action on="MouseLeave">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action> 18 <action on="MouseLeftPress">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action> 19 <action on="MouseLeftRelease">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png";</action> 21 20 </object> 22 21 </object> 23 22 <!-- Minimap --> -
binaries/data/mods/public/gui/session/session.js
79 79 var g_TemplateDataWithoutLocalization = {}; 80 80 var g_TechnologyData = {}; // {id:template} 81 81 82 // List of unit types those are workers 83 var g_WorkerTypes = ["Female", "Trader", "FishingBoat", "CitizenSoldier", "Healer"]; 84 85 // Cache the idle worker status 86 var g_HasIdleWorker = false; 87 82 88 function GetSimState() 83 89 { 84 90 if (!g_SimState) … … 529 535 Engine.SetSimRate(speed); 530 536 } 531 537 538 function checkIdleWorkerState() 539 { 540 for (let i = 0; i < g_WorkerTypes.length; ++i) 541 { 542 let idleUnits = Engine.GuiInterfaceCall("FindIdleUnits", { 543 "idleClass": g_WorkerTypes[i], 544 "prevUnit": undefined, 545 "limit": 1, 546 "excludeUnits": [] 547 }); 548 549 if (idleUnits.length > 0) { 550 g_HasIdleWorker = true; 551 return; 552 } 553 } 554 555 // no idle workers available 556 g_HasIdleWorker = false; 557 } 558 559 function updateIdleWorkerButton() 560 { 561 let idleWorkerButton = Engine.GetGUIObjectByName("idleOverlay"); 562 563 // update state 564 checkIdleWorkerState(); 565 566 // determine right button image 567 let newImage; 568 if (g_HasIdleWorker) { 569 let highlightedImage = "minimap-idle-highlight.png"; 570 newImage = (idleWorkerButton.sprite == "stretched:session/" + highlightedImage) ? highlightedImage : "minimap-idle.png"; 571 } 572 else 573 newImage = "minimap-idle-disabled.png"; 574 575 // update image of gui button 576 idleWorkerButton.sprite = "stretched:session/" + newImage; 577 } 578 532 579 /** 533 580 * Recomputes GUI state that depends on simulation state or selection state. Called directly every simulation 534 581 * update (see session.xml), or from onTick when the selection has changed. … … 562 609 updateSelectionDetails(); 563 610 updateBuildingPlacementPreview(); 564 611 updateTimeNotifications(); 612 updateIdleWorkerButton(); 565 613 566 614 if (!g_IsObserver) 567 615 updateResearchDisplay();