Fix idle worker button mess.

fb65288463 mimicked the sprite_over button functionality which exists as
a proper property since 5cc814759f.
0e48b7df75 mimicked the sprite_disable and enabled button functionality.
The button now shows the proper highlight sprite if the button became
enabled without one of the prior mouseover events being sent.
Removes duplicate hardcoded filenames and unneeded globals, functions
and conditions.

Refs #2414, #3736
Differential Revision:
Patch By: temple
This was SVN commit r20601.
This commit is contained in:
elexis
2017-12-06 21:25:17 +00:00
parent 32981e6f5e
commit 6bbd8297db
2 changed files with 22 additions and 39 deletions
@@ -5,28 +5,27 @@
type="image"
sprite="mapPanel"
>
<!-- Idle Worker Button -->
<object size="100%-80 100%-80 100%-5 100%-5">
<object type="button"
name="idleWorkerButton"
tooltip_style="sessionToolTip"
hotkey="selection.idleworker"
>
<action on="Press">if (g_HasIdleWorker) findIdleUnit(g_WorkerTypes);</action>
<action on="MouseEnter">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png";</action>
<action on="MouseLeave">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action>
<action on="MouseLeftPress">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle.png";</action>
<action on="MouseLeftRelease">if (g_HasIdleWorker) Engine.GetGUIObjectByName("idleOverlay").sprite = "stretched:session/minimap-idle-highlight.png";</action>
</object>
</object>
<!-- Minimap -->
<object name="minimap"
type="minimap" z="20"
size="8 8 100%-8 100%-8"
>
<object size="8 8 100%-8 100%-8" type="minimap" z="20">
<action on="WorldClick">handleMinimapEvent(arguments[0]);</action>
</object>
<!-- Overlays -->
<object name="minimapOverlay" size="4 4 100%-4 100%-4" type="image" sprite="stretched:session/minimap_circle_modern.png" ghost="true"/>
<object name="idleOverlay" z="100" size="100%-125 100%-125 100%-5 100%-5" type="image" sprite="stretched:session/minimap-idle.png" ghost="true"/>
<object
type="image"
size="4 4 100%-4 100%-4"
sprite="stretched:session/minimap_circle_modern.png"
ghost="true"
/>
<!-- Idle Worker Button -->
<object
name="idleWorkerButton"
type="button"
size="100%-120 100%-120 100%-5 100%-5"
tooltip_style="sessionToolTip" hotkey="selection.idleworker"
sprite="stretched:session/minimap-idle.png"
sprite_over="stretched:session/minimap-idle-highlight.png"
sprite_disabled="stretched:session/minimap-idle-disabled.png"
>
<action on="Press">findIdleUnit(g_WorkerTypes);</action>
</object>
</object>
@@ -183,10 +183,6 @@ var g_WorkerTypes = ["FemaleCitizen", "Trader", "FishingBoat", "CitizenSoldier"]
* Unit classes to be checked for the military-only-selection modifier and for the idle-warrior-hotkey.
*/
var g_MilitaryTypes = ["Melee", "Ranged"];
/**
* Cache the idle worker status.
*/
var g_HasIdleWorker = false;
function GetSimState()
{
@@ -778,27 +774,15 @@ function changeGameSpeed(speed)
Engine.SetSimRate(speed);
}
function hasIdleWorker()
function updateIdleWorkerButton()
{
return Engine.GuiInterfaceCall("HasIdleUnits", {
Engine.GetGUIObjectByName("idleWorkerButton").enabled = Engine.GuiInterfaceCall("HasIdleUnits", {
"viewedPlayer": g_ViewedPlayer,
"idleClasses": g_WorkerTypes,
"excludeUnits": []
});
}
function updateIdleWorkerButton()
{
g_HasIdleWorker = hasIdleWorker();
let idleWorkerButton = Engine.GetGUIObjectByName("idleOverlay");
let prefix = "stretched:session/";
if (!g_HasIdleWorker)
idleWorkerButton.sprite = prefix + "minimap-idle-disabled.png";
else if (idleWorkerButton.sprite != prefix + "minimap-idle-highlight.png")
idleWorkerButton.sprite = prefix + "minimap-idle.png";
}
function onSimulationUpdate()
{
// Templates change depending on technologies and auras, so they have to be reloaded every turn.