From f260e75499f60d9207c2db791bbd7227b7dd89cf Mon Sep 17 00:00:00 2001 From: mimo Date: Sun, 7 Jun 2015 20:58:51 +0000 Subject: [PATCH] improve display of timing options, patch by Vladislav, fixes #2894 This was SVN commit r16732. --- .../gui/common/functions_global_object.js | 57 ++++++++++++++++++- .../data/mods/public/gui/common/global.xml | 42 +++++++------- .../data/mods/public/gui/session/session.js | 33 ++--------- .../data/mods/public/gui/session/session.xml | 7 +-- 4 files changed, 80 insertions(+), 59 deletions(-) diff --git a/binaries/data/mods/public/gui/common/functions_global_object.js b/binaries/data/mods/public/gui/common/functions_global_object.js index ae9fe0e527..a52347ede2 100644 --- a/binaries/data/mods/public/gui/common/functions_global_object.js +++ b/binaries/data/mods/public/gui/common/functions_global_object.js @@ -74,7 +74,58 @@ function openURL(url) messageBox(600, 200, sprintf(translate("Opening %(url)s\n in default web browser. Please wait...."), { url: url }), translate("Opening page"), 2); } -function updateFPS() -{ - Engine.GetGUIObjectByName("fpsCounter").caption = sprintf(translate("FPS: %(fps)s"), { fps: Engine.GetFPS() }); +function updateCounters() +{ + var caption = ""; + var linesCount = 0; + var researchCount = 0; + + if (Engine.ConfigDB_GetValue("user", "overlay.fps") === "true") + { + caption += sprintf(translate("FPS: %(fps)4s"), { fps: Engine.GetFPS() }) + "\n"; + ++linesCount; + } + if (Engine.ConfigDB_GetValue("user", "overlay.realtime") === "true") + { + caption += (new Date()).toLocaleTimeString() + "\n"; + ++linesCount; + } + + // If game has been started + if (typeof g_SimState != "undefined") + { + if (Engine.ConfigDB_GetValue("user", "gui.session.timeelapsedcounter") === "true") + { + var currentSpeed = Engine.GetSimRate(); + if (currentSpeed != 1.0) + caption += sprintf( + translate("%(time)s (%(speed)sx)"), + { + time: timeToString(g_SimState.timeElapsed), + speed: Engine.FormatDecimalNumberIntoString(currentSpeed) + } + ); + else + caption += timeToString(g_SimState.timeElapsed); + caption += "\n"; + ++linesCount; + } + if (Engine.ConfigDB_GetValue("user", "gui.session.ceasefirecounter") === "true" && g_SimState.ceasefireActive) + { + var remainingTimeString = timeToString(g_SimState.ceasefireTimeRemaining); + caption += remainingTimeString + "\n"; + + var diplomacyCeasefireCounter = Engine.GetGUIObjectByName("diplomacyCeasefireCounter"); + diplomacyCeasefireCounter.caption = sprintf(translateWithContext("ceasefire", "Time remaining until ceasefire is over: %(time)s."), {"time": remainingTimeString}); + ++linesCount; + } + + g_ResearchListTop = 4; + if (linesCount) + g_ResearchListTop += 14 * linesCount; + } + + var dataCounter = Engine.GetGUIObjectByName("dataCounter"); + dataCounter.caption = caption; + dataCounter.size = sprintf("100%%-100 40 100%%-5 %(bottom)s", { bottom: 40 + 14 * linesCount }); } diff --git a/binaries/data/mods/public/gui/common/global.xml b/binaries/data/mods/public/gui/common/global.xml index 782affda5a..04fc871606 100644 --- a/binaries/data/mods/public/gui/common/global.xml +++ b/binaries/data/mods/public/gui/common/global.xml @@ -14,27 +14,34 @@ - + + @@ -49,18 +56,9 @@ ghost="true" hidden="true" hotkey="realtime.toggle" - sprite="color: 0 0 0 200" - font="mono-stroke-10" - textcolor="white" - size="100%-130 80 100%-60 100" - z="199" > - - this.hidden = Engine.ConfigDB_GetValue("user", "overlay.realtime") !== "true"; - this.caption = (new Date()).toLocaleTimeString(); - - Engine.ConfigDB_CreateValue("user", "overlay.realtime", ""+this.hidden); + Engine.ConfigDB_CreateValue("user", "overlay.realtime", ""+(Engine.ConfigDB_GetValue("user", "overlay.realtime") !== "true")); diff --git a/binaries/data/mods/public/gui/session/session.js b/binaries/data/mods/public/gui/session/session.js index 9337a8ebe5..52d726a743 100644 --- a/binaries/data/mods/public/gui/session/session.js +++ b/binaries/data/mods/public/gui/session/session.js @@ -44,6 +44,9 @@ var g_Disconnected = false; // Lost connection to server // Holds player states from the last tick var g_CachedLastStates = ""; +// Top coordinate of the research list +var g_ResearchListTop = 4; + // Colors to flash when pop limit reached const DEFAULT_POPULATION_COLOR = "white"; const POPULATION_ALERT_COLOR = "orange"; @@ -542,8 +545,6 @@ function onSimulationUpdate() updatePlayerDisplay(); updateSelectionDetails(); updateBuildingPlacementPreview(); - updateTimeElapsedCounter(); - updateCeasefireCounter(); updateTimeNotifications(); if (!g_IsObserver) updateResearchDisplay(); @@ -756,7 +757,7 @@ function updateResearchDisplay() { var button = Engine.GetGUIObjectByName("researchStartedButton[" + i + "]"); var size = button.size; - size.top = (4 + buttonSideLength) * i; + size.top = g_ResearchListTop + (4 + buttonSideLength) * i; size.bottom = size.top + buttonSideLength; button.size = size; } @@ -792,32 +793,6 @@ function updateResearchDisplay() Engine.GetGUIObjectByName("researchStartedButton[" + i + "]").hidden = true; } -function updateCeasefireCounter() -{ - var simState = GetSimState(); - var isActive = simState.ceasefireActive; - var remainingTimeString = timeToString(simState.ceasefireTimeRemaining); - - var ceasefireCounter = Engine.GetGUIObjectByName("ceasefireCounter"); - var diplomacyCeasefireCounter = Engine.GetGUIObjectByName("diplomacyCeasefireCounter"); - - ceasefireCounter.hidden = !isActive || Engine.ConfigDB_GetValue("user", "gui.session.ceasefirecounter") !== "true"; - diplomacyCeasefireCounter.hidden = !isActive; - - ceasefireCounter.caption = remainingTimeString; - diplomacyCeasefireCounter.caption = sprintf(translateWithContext("ceasefire", "Time remaining until ceasefire is over: %(time)s."), {"time": remainingTimeString}); -} - -function updateTimeElapsedCounter() -{ - var simState = GetSimState(); - var timeElapsedCounter = Engine.GetGUIObjectByName("timeElapsedCounter"); - if (g_CurrentSpeed != 1.0) - timeElapsedCounter.caption = sprintf(translate("%(time)s (%(speed)sx)"), { time: timeToString(simState.timeElapsed), speed: Engine.FormatDecimalNumberIntoString(g_CurrentSpeed) }); - else - timeElapsedCounter.caption = timeToString(simState.timeElapsed); -} - // Toggles the display of status bars for all of the player's entities. function recalculateStatusBarDisplay() { diff --git a/binaries/data/mods/public/gui/session/session.xml b/binaries/data/mods/public/gui/session/session.xml index 622759b518..ad84a47307 100644 --- a/binaries/data/mods/public/gui/session/session.xml +++ b/binaries/data/mods/public/gui/session/session.xml @@ -152,16 +152,13 @@