Ticket #3736: idleworker_V2.patch
File idleworker_V2.patch, 3.7 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 (let 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 547 // check for any idle workers 548 if (idleUnits.length > 0) 549 { 550 return true; 551 } 552 } 553 554 // no idle workers available 555 return false; 556 } 557 558 function updateIdleWorkerButton() 559 { 560 if (hasIdleWorker()) 561 { 562 if (Engine.GetGUIObjectByName("idleOverlay").sprite == "stretched:session/minimap-idle-highlight.png") 563 Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png"; 564 else 565 Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png"; 566 } 567 else 568 { 569 Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-disabled.png"; 570 } 571 } 572 532 573 /** 533 574 * Recomputes GUI state that depends on simulation state or selection state. Called directly every simulation 534 575 * update (see session.xml), or from onTick when the selection has changed. … … 562 603 updateSelectionDetails(); 563 604 updateBuildingPlacementPreview(); 564 605 updateTimeNotifications(); 606 updateIdleWorkerButton(); 565 607 566 608 if (!g_IsObserver) 567 609 updateResearchDisplay();