From 08194a1d565bda2e43c8494ff7c151670a8ed2b5 Mon Sep 17 00:00:00 2001 From: eZamux Date: Thu, 27 Aug 2026 20:10:24 +0200 Subject: [PATCH] Show packing/unpacking time in tooltip Fixes #8929 --- binaries/data/mods/public/gui/common/tooltips.js | 11 +++++++++++ .../data/mods/public/gui/session/selection_panels.js | 6 ++++-- .../mods/public/simulation/components/GuiInterface.js | 3 ++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/binaries/data/mods/public/gui/common/tooltips.js b/binaries/data/mods/public/gui/common/tooltips.js index 9cf040a6f6..96ab1e8417 100644 --- a/binaries/data/mods/public/gui/common/tooltips.js +++ b/binaries/data/mods/public/gui/common/tooltips.js @@ -724,6 +724,17 @@ function getBuildTimeTooltip(entState) return result.join("\n"); } +function getPackingTooltip(packing, time) +{ + return sprintf(translate("%(label)s %(details)s"), { + "label": packing ? translate("Pack to Move:") : translate("Unpack to Attack:"), + "details": sprintf(translate("%(icon)s\xa0%(second)s"), { + "icon": resourceIcon("time"), + "second": Math.ceil(time / 1000) + }) + }); +} + /** * Multiplies the costs for a template by a given batch size. */ diff --git a/binaries/data/mods/public/gui/session/selection_panels.js b/binaries/data/mods/public/gui/session/selection_panels.js index a32553d961..da93f51de1 100644 --- a/binaries/data/mods/public/gui/session/selection_panels.js +++ b/binaries/data/mods/public/gui/session/selection_panels.js @@ -438,6 +438,8 @@ g_SelectionPanels.Pack = { if (!state.pack) continue; + checks.packTime = state.pack.time; + if (state.pack.progress == 0) { if (state.pack.packed) @@ -456,7 +458,7 @@ g_SelectionPanels.Pack = { items.push({ "packing": false, "packed": false, - "tooltip": translate("Pack"), + "tooltip": getPackingTooltip(true, checks.packTime), "callback": function() { packUnit(true); } }); @@ -464,7 +466,7 @@ g_SelectionPanels.Pack = { items.push({ "packing": false, "packed": true, - "tooltip": translate("Unpack"), + "tooltip": getPackingTooltip(false, checks.packTime), "callback": function() { packUnit(false); } }); diff --git a/binaries/data/mods/public/simulation/components/GuiInterface.js b/binaries/data/mods/public/simulation/components/GuiInterface.js index 5a139895bf..497e040ab3 100644 --- a/binaries/data/mods/public/simulation/components/GuiInterface.js +++ b/binaries/data/mods/public/simulation/components/GuiInterface.js @@ -329,7 +329,8 @@ GuiInterface.prototype.GetEntityState = function(player, ent) if (cmpPack) ret.pack = { "packed": cmpPack.IsPacked(), - "progress": cmpPack.GetProgress() + "progress": cmpPack.GetProgress(), + "time": cmpPack.GetPackTime() }; const cmpPopulation = Engine.QueryInterface(ent, IID_Population);