Ticket #3736: idleworker_V2.1.patch
File idleworker_V2.1.patch, 3.8 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 return true; 550 } 551 552 // no idle workers available 553 return false; 554 } 555 556 function updateIdleWorkerButton() 557 { 558 let newImage = ""; 559 let cntImage = Engine.GetGUIObjectByName("idleOverlay").sprite; 560 561 let idleImage = "minimap-idle.png"; 562 let highlightedImage = "minimap-idle-highlight.png"; 563 let idleDisabledImage = "minimap-idle-disabled.png"; 564 565 // determine right button image 566 if (hasIdleWorker()) 567 newImage = (cntImage == "stretched:session/" + highlightedImage) ? highlightedImage : idleImage; 568 else 569 newImage = idleDisabledImage; 570 571 // update gui button 572 Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/" + newImage; 573 } 574 532 575 /** 533 576 * Recomputes GUI state that depends on simulation state or selection state. Called directly every simulation 534 577 * update (see session.xml), or from onTick when the selection has changed. … … 562 605 updateSelectionDetails(); 563 606 updateBuildingPlacementPreview(); 564 607 updateTimeNotifications(); 608 updateIdleWorkerButton(); 565 609 566 610 if (!g_IsObserver) 567 611 updateResearchDisplay();