Index: binaries/data/mods/public/gui/session/hotkeys/misc.xml =================================================================== --- binaries/data/mods/public/gui/session/hotkeys/misc.xml +++ binaries/data/mods/public/gui/session/hotkeys/misc.xml @@ -96,4 +96,11 @@ toggleRangeOverlay("Aura"); + + + g_ShowAllStatusBars = !g_ShowAllStatusBars; + recalculateStatusBarDisplay(); + + + Index: binaries/data/mods/public/gui/session/input.js =================================================================== --- binaries/data/mods/public/gui/session/input.js +++ binaries/data/mods/public/gui/session/input.js @@ -820,13 +820,8 @@ Engine.RewindTimeWarp(); } - if (ev.hotkey == "session.showstatusbars") + if (ev.hotkey == "session.highlightguarding") { - g_ShowAllStatusBars = (ev.type == "hotkeydown"); - recalculateStatusBarDisplay(); - } - else if (ev.hotkey == "session.highlightguarding") - { g_ShowGuarding = (ev.type == "hotkeydown"); updateAdditionalHighlight(); } Index: binaries/data/mods/public/gui/session/session.js =================================================================== --- binaries/data/mods/public/gui/session/session.js +++ binaries/data/mods/public/gui/session/session.js @@ -10,6 +10,11 @@ const g_VictoryDurations = prepareForDropdown(g_Settings && g_Settings.VictoryDurations); /** + * Refresh statusbars this often. + */ +const STATUSBAR_UPDATE_MS = 100 + +/** * Colors to flash when pop limit reached. */ var g_DefaultPopulationColor = "white"; @@ -722,7 +727,7 @@ return; let now = new Date(); - let tickLength = new Date() - lastTickTime; + let tickLength = now - lastTickTime; lastTickTime = now; handleNetMessages(); @@ -739,6 +744,9 @@ if (Engine.GetPlayerID() != -1) Engine.GuiInterfaceCall("DisplayRallyPoint", { "entities": g_Selection.toList() }); } + // If showing all status bars, recalculate every 100msec. + else if (g_ShowAllStatusBars && (now % STATUSBAR_UPDATE_MS - tickLength <= 0)) + recalculateStatusBarDisplay(); updateTimers(); @@ -745,7 +753,7 @@ updateMenuPosition(tickLength); // When training is blocked, flash population (alternates color every 500msec) - Engine.GetGUIObjectByName("resourcePop").textcolor = g_IsTrainingBlocked && Date.now() % 1000 < 500 ? g_PopulationAlertColor : g_DefaultPopulationColor; + Engine.GetGUIObjectByName("resourcePop").textcolor = g_IsTrainingBlocked && now % 1000 < 500 ? g_PopulationAlertColor : g_DefaultPopulationColor; Engine.GuiInterfaceCall("ClearRenamedEntities"); }