diff --git a/binaries/data/mods/public/art/textures/ui/session/icons/bell_level2.png b/binaries/data/mods/public/art/textures/ui/session/icons/bell_level2.png new file mode 100644 index 0000000000..4d068d8719 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/session/icons/bell_level2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:171ca01dd502c0e3b6a946bae0ced992b9b71b9874901ab4d8b6d35227dcd639 +size 1813 diff --git a/binaries/data/mods/public/gui/session/input.js b/binaries/data/mods/public/gui/session/input.js index d9c1351ca5..5c2a9691c7 100644 --- a/binaries/data/mods/public/gui/session/input.js +++ b/binaries/data/mods/public/gui/session/input.js @@ -1846,9 +1846,8 @@ function backToWork() var state = GetEntityState(e); return (state && state.unitAI && state.unitAI.hasWorkOrders); }); - + Engine.PostNetworkCommand({"type": "back-to-work", "entities": workers}); - } function removeGuard() @@ -1858,7 +1857,7 @@ function removeGuard() var state = GetEntityState(e); return (state && state.unitAI && state.unitAI.isGuarding); }); - + Engine.PostNetworkCommand({"type": "remove-guard", "entities": entities}); } @@ -1868,8 +1867,8 @@ function increaseAlertLevel() var state = GetEntityState(e); return (state && state.alertRaiser && state.alertRaiser.canIncreaseLevel); }); - - Engine.PostNetworkCommand({"type": "increase-alert-level", "entities": entities}); + + Engine.PostNetworkCommand({"type": "increase-alert-level", "entities": entities}); } function endOfAlert() @@ -1878,7 +1877,7 @@ function endOfAlert() var state = GetEntityState(e); return (state && state.alertRaiser && state.alertRaiser.hasRaisedAlert); }); - + Engine.PostNetworkCommand({"type": "alert-end", "entities": entities}); } diff --git a/binaries/data/mods/public/gui/session/selection_panels.js b/binaries/data/mods/public/gui/session/selection_panels.js index fd327c4af0..c0678b605a 100644 --- a/binaries/data/mods/public/gui/session/selection_panels.js +++ b/binaries/data/mods/public/gui/session/selection_panels.js @@ -43,6 +43,58 @@ var g_formationsInfo = new Map(); var g_SelectionPanels = {}; +// ALERT +g_SelectionPanels.Alert = { + "getMaxNumberOfItems": function() + { + return 2; + }, + "getItems": function(unitEntState) + { + if (!unitEntState.alertRaiser) + return []; + return ["increase", "end"]; + }, + "setAction": function(data) + { + data.button.onPress = function() { + if (data.item == "increase") + increaseAlertLevel(); + else if (data.item == "end") + endOfAlert(); + }; + }, + "setTooltip": function(data) + { + if (data.item == "increase") + { + if (data.unitEntState.alertRaiser.hasRaisedAlert) + data.button.tooltip = translate("Increase the alert level to protect more units"); + else + data.button.tooltip = translate("Raise an alert!"); + } + else if (data.item == "end") + data.button.tooltip = translate("End of alert."); + }, + "setGraphics": function(data) + { + if (data.item == "increase") + { + data.button.hidden = !data.unitEntState.alertRaiser.canIncreaseLevel; + if (data.unitEntState.alertRaiser.hasRaisedAlert) + data.icon.sprite = "stretched:session/icons/bell_level2.png"; + else + data.icon.sprite = "stretched:session/icons/bell_level1.png"; + } + else if (data.item == "end") + { + data.button.hidden = !data.unitEntState.alertRaiser.hasRaisedAlert; + data.icon.sprite = "stretched:session/icons/bell_level0.png"; + } + data.button.enabled = !data.button.hidden; + }, +}; + // BARTER g_SelectionPanels.Barter = { "getMaxNumberOfItems": function() @@ -1080,6 +1132,7 @@ var g_PanelsOrder = [ // LEFT PANE "Barter", // must always be visible on markets "Garrison", // more important than Formation, as you want to see the garrisoned units in ships + "Alert", "Formation", "Stance", // normal together with formation diff --git a/binaries/data/mods/public/gui/session/selection_panels_left/alert_panel.xml b/binaries/data/mods/public/gui/session/selection_panels_left/alert_panel.xml new file mode 100644 index 0000000000..3452be0674 --- /dev/null +++ b/binaries/data/mods/public/gui/session/selection_panels_left/alert_panel.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/binaries/data/mods/public/gui/session/unit_actions.js b/binaries/data/mods/public/gui/session/unit_actions.js index 2f72731c1e..9cfd29c226 100644 --- a/binaries/data/mods/public/gui/session/unit_actions.js +++ b/binaries/data/mods/public/gui/session/unit_actions.js @@ -877,43 +877,6 @@ var g_EntityCommands = toggleTrade(); }, }, - // Raise alert - "increase-alert-level": { - "getInfo": function(entState) - { - if (!entState.alertRaiser || !entState.alertRaiser.canIncreaseLevel) - return false; - - if (entState.alertRaiser.hasRaisedAlert) - var tooltip = translate("Increase the alert level to protect more units"); - else - var tooltip = translate("Raise an alert!"); - return { - "tooltip": tooltip, - "icon": "bell_level1.png" - }; - }, - "execute": function(entState) - { - increaseAlertLevel(); - }, - }, - // End alert - "alert-end": { - "getInfo": function(entState) - { - if (!entState.alertRaiser || !entState.alertRaiser.hasRaisedAlert) - return false - return { - "tooltip": translate("End of alert."), - "icon": "bell_level0.png" - }; - }, - "execute": function(entState) - { - endOfAlert(); - }, - }, }; var g_AllyEntityCommands = diff --git a/binaries/data/mods/public/gui/session/unit_commands.js b/binaries/data/mods/public/gui/session/unit_commands.js index c8c3dd7b7d..0363c011d2 100644 --- a/binaries/data/mods/public/gui/session/unit_commands.js +++ b/binaries/data/mods/public/gui/session/unit_commands.js @@ -1,5 +1,5 @@ // The number of currently visible buttons (used to optimise showing/hiding) -var g_unitPanelButtons = {"Selection": 0, "Queue": 0, "Formation": 0, "Garrison": 0, "Training": 0, "Research": 0, "Barter": 0, "Construction": 0, "Command": 0, "AllyCommand": 0, "Stance": 0, "Gate": 0, "Pack": 0}; +var g_unitPanelButtons = {"Selection": 0, "Queue": 0, "Formation": 0, "Garrison": 0, "Training": 0, "Research": 0, "Alert": 0, "Barter": 0, "Construction": 0, "Command": 0, "AllyCommand": 0, "Stance": 0, "Gate": 0, "Pack": 0}; /** * Set the position of a panel object according to the index,