From 42052b69d9a7b18887e0bdb196d4867de051128a Mon Sep 17 00:00:00 2001 From: abian Date: Thu, 10 Oct 2024 20:16:34 +0200 Subject: [PATCH] Display phase emblems in the middle panel This patch introduces phase emblems on both sides of the player's name band in the middle panel. The emblems represent the current phase of the selected player's civilization: I (Village), II (Town), III (City). This information is also added to the associated tooltip and is displayed only to mutual allies and observers. Fixes #6849 See also: https://wildfiregames.com/forum/topic/107851-introduce-badge-to-indicate-the-phase-6849/ --- .../ui/session/panel_phase_emblems_city.png | 3 +++ .../ui/session/panel_phase_emblems_hidden.png | 3 +++ .../ui/session/panel_phase_emblems_town.png | 3 +++ .../session/panel_phase_emblems_village.png | 3 +++ .../public/gui/session/selection_details.js | 26 +++++++++++++++++-- .../single_details_area.xml | 2 ++ 6 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_city.png create mode 100644 binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_hidden.png create mode 100644 binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_town.png create mode 100644 binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_village.png diff --git a/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_city.png b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_city.png new file mode 100644 index 0000000000..bc320a4a7a --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_city.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c92601e546e03c1c7005191c8b3ee3814d9cac93b5654e61393c95ebec0abfff +size 119 diff --git a/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_hidden.png b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_hidden.png new file mode 100644 index 0000000000..2b77a1c302 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_hidden.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a70f0a373d594720c2982fc6253484235fb21f59ed1c5d901d7e88884ccb920 +size 1859 diff --git a/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_town.png b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_town.png new file mode 100644 index 0000000000..0daa1a8347 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_town.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e64d9f57af4b29904500a9bbcf2240b04717ee8eee2bd993a49d0bbab5e5f393 +size 120 diff --git a/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_village.png b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_village.png new file mode 100644 index 0000000000..5e5ed674dd --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/session/panel_phase_emblems_village.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ca2e3c67b17f7d847166a832668a94ce8457aa51d5294a9e9dfb914dbad2baa +size 132 diff --git a/binaries/data/mods/public/gui/session/selection_details.js b/binaries/data/mods/public/gui/session/selection_details.js index 3dd0dbbaca..766009075e 100644 --- a/binaries/data/mods/public/gui/session/selection_details.js +++ b/binaries/data/mods/public/gui/session/selection_details.js @@ -317,9 +317,31 @@ function displaySingle(entState) }); secondaryObject.hidden = hideSecondary; - let isGaia = playerState.civ == "gaia"; + const isGaia = playerState.civ == "gaia"; Engine.GetGUIObjectByName("playerCivIcon").sprite = isGaia ? "" : "cropped:1.0, 0.15625 center:grayscale:" + civEmblem; - Engine.GetGUIObjectByName("civilizationTooltip").tooltip = isGaia ? "" : civName; + + if (isGaia) + { + Engine.GetGUIObjectByName("phaseEmblems").sprite = ""; + Engine.GetGUIObjectByName("civilizationTooltip").tooltip = ""; + } + else + { + let civilizationTooltip = civName; + let civPhaseEmblems = "session/panel_phase_emblems_hidden.png"; + + // Reveal phases to mutual allies and observers + if (g_ViewedPlayer == -1 || playerState.isMutualAlly[g_ViewedPlayer]) + { + const civPhase = g_SimState.players[entState.player].phase + civPhaseEmblems = "session/panel_phase_emblems_" + civPhase + ".png"; + const civPhaseData = GetTechnologyData("phase_" + civPhase + "_" + playerState.civ, playerState.civ) || + GetTechnologyData("phase_" + civPhase, playerState.civ); + civilizationTooltip += " — " + getEntityNames(civPhaseData); + } + Engine.GetGUIObjectByName("phaseEmblems").sprite = "cropped:1.0, 1.0 center:" + civPhaseEmblems; + Engine.GetGUIObjectByName("civilizationTooltip").tooltip = civilizationTooltip; + } // TODO: we should require all entities to have icons Engine.GetGUIObjectByName("icon").sprite = template.icon ? ("stretched:session/portraits/" + template.icon) : "BackgroundBlack"; diff --git a/binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml b/binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml index 1543965c3a..ff55736a2a 100644 --- a/binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml +++ b/binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml @@ -12,6 +12,8 @@ + +