Ticket #3736: idleworker_V2.1.patch

File idleworker_V2.1.patch, 3.8 KB (added by svott, 8 years ago)

small changes of coding style in session.js

  • binaries/data/mods/public/gui/session/minimap_panel.xml

     
    77>
    88    <!-- Idle Worker Button -->
    99    <object size="100%-80 100%-80 100%-5 100%-5">
    10         <!-- TODO: We should disable this button if there are no idle workers. -->
    1110        <object type="button"
    1211            tooltip_style="sessionToolTip"
    1312            hotkey="selection.idleworker"
    1413        >
    1514            <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>
    2120        </object>
    2221    </object>
    2322    <!-- Minimap -->
  • binaries/data/mods/public/gui/session/session.js

     
    529529        Engine.SetSimRate(speed);
    530530}
    531531
     532function 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
     556function 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
    532575/**
    533576 * Recomputes GUI state that depends on simulation state or selection state. Called directly every simulation
    534577 * update (see session.xml), or from onTick when the selection has changed.
     
    562605    updateSelectionDetails();
    563606    updateBuildingPlacementPreview();
    564607    updateTimeNotifications();
     608    updateIdleWorkerButton();
    565609
    566610    if (!g_IsObserver)
    567611        updateResearchDisplay();