Ticket #3736: idleworker.patch
File idleworker.patch, 3.5 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 (hasIdleWorker()) findIdleUnit(["Female", "Trader", "FishingBoat", "CitizenSoldier", "Healer"]);</action> 16 <action on="MouseEnter">if (hasIdleWorker()) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png";</action> 17 <action on="MouseLeave">if (hasIdleWorker()) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action> 18 <action on="MouseLeftPress">if (hasIdleWorker()) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action> 19 <action on="MouseLeftRelease">if (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
529 529 Engine.SetSimRate(speed); 530 530 } 531 531 532 function hasIdleWorker() 533 { 534 let possibleIdleClasses = ["Female", "Trader", "FishingBoat", "CitizenSoldier", "Healer"]; 535 536 for (var i = 0; i < possibleIdleClasses.length; i++) 537 { 538 let data = { 539 "idleClass": possibleIdleClasses[i], 540 "prevUnit": undefined, 541 "limit": 1, 542 "excludeUnits": [] 543 }; 544 545 let idleUnits = Engine.GuiInterfaceCall("FindIdleUnits", data); 546 if (idleUnits.length > 0) 547 { 548 // found at least one idle worker 549 return true; 550 } 551 } 552 553 // no idle workers availanle 554 return false; 555 } 556 557 function updateIdleWorkerButton() 558 { 559 if (hasIdleWorker()) 560 Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png"; 561 else 562 Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-disabled.png"; 563 } 564 532 565 /** 533 566 * Recomputes GUI state that depends on simulation state or selection state. Called directly every simulation 534 567 * update (see session.xml), or from onTick when the selection has changed. … … 562 595 updateSelectionDetails(); 563 596 updateBuildingPlacementPreview(); 564 597 updateTimeNotifications(); 598 updateIdleWorkerButton(); 565 599 566 600 if (!g_IsObserver) 567 601 updateResearchDisplay();