Index: binaries/data/mods/public/simulation/data/territorymanager.rnc =================================================================== --- binaries/data/mods/public/simulation/data/territorymanager.rnc +++ binaries/data/mods/public/simulation/data/territorymanager.rnc @@ -14,4 +14,7 @@ element BorderSeparation { xsd:decimal } + element Visibility { + xsd:boolean + } } Index: binaries/data/mods/public/simulation/data/territorymanager.rng =================================================================== --- binaries/data/mods/public/simulation/data/territorymanager.rng +++ binaries/data/mods/public/simulation/data/territorymanager.rng @@ -19,5 +19,8 @@ + + + Index: binaries/data/mods/public/simulation/data/territorymanager.xml =================================================================== --- binaries/data/mods/public/simulation/data/territorymanager.xml +++ binaries/data/mods/public/simulation/data/territorymanager.xml @@ -3,4 +3,5 @@ 4 0.75 0.85 + true Index: source/graphics/TerritoryTexture.cpp =================================================================== --- source/graphics/TerritoryTexture.cpp +++ source/graphics/TerritoryTexture.cpp @@ -154,7 +154,7 @@ PROFILE("recompute territory texture"); CmpPtr cmpTerritoryManager(m_Simulation, SYSTEM_ENTITY); - if (!cmpTerritoryManager) + if (!cmpTerritoryManager || !cmpTerritoryManager->GetVisibility()) return; std::vector bitmap(m_MapSize * m_MapSize * 4); Index: source/simulation2/components/CCmpTerritoryManager.cpp =================================================================== --- source/simulation2/components/CCmpTerritoryManager.cpp +++ source/simulation2/components/CCmpTerritoryManager.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -128,7 +128,6 @@ m_EnableLineDebugOverlays = false; m_DirtyID = 1; m_DirtyBlinkingID = 1; - m_Visible = true; m_ColorChanged = false; m_AnimTime = 0.0; @@ -146,6 +145,8 @@ m_ImpassableCost = (u8)impassableCost; m_BorderThickness = externalParamNode.GetChild("TerritoryManager").GetChild("BorderThickness").ToFixed().ToFloat(); m_BorderSeparation = externalParamNode.GetChild("TerritoryManager").GetChild("BorderSeparation").ToFixed().ToFloat(); + m_Visible = externalParamNode.GetChild("TerritoryManager").GetChild("Visibility").ToBool(); + m_VisibilityEnabled = m_Visible; } virtual void Deinit() @@ -306,14 +307,21 @@ void SetVisibility(bool visible) { - m_Visible = visible; + if (m_VisibilityEnabled) + m_Visible = visible; } + bool GetVisibility() const + { + return m_Visible; + } + void UpdateColors(); private: bool m_Visible; + bool m_VisibilityEnabled; }; REGISTER_COMPONENT_TYPE(TerritoryManager) Index: source/simulation2/components/ICmpTerritoryManager.h =================================================================== --- source/simulation2/components/ICmpTerritoryManager.h +++ source/simulation2/components/ICmpTerritoryManager.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -99,6 +99,11 @@ virtual void SetVisibility(bool visible) = 0; /** + * Returns whether territory borders should be drawn. + */ + virtual bool GetVisibility() const = 0; + + /** * Updates the boundary and territory colors. */ virtual void UpdateColors() = 0;