mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-06-21 01:04:06 +00:00
Mod Interface: Enable setting territory visibility
based on a patch by: aeonios `off` means that the territory visibility cannot be changed `hidden` means that it's hidden by default but can be enabled `visible` means it's visible by default
This commit is contained in:
@@ -19,5 +19,12 @@
|
||||
<element name="BorderSeparation">
|
||||
<data type="decimal"/>
|
||||
</element>
|
||||
<element name="VisibilityStatus">
|
||||
<choice>
|
||||
<value>off</value>
|
||||
<value>hidden</value>
|
||||
<value>visible</value>
|
||||
</choice>
|
||||
</element>
|
||||
</interleave>
|
||||
</element>
|
||||
|
||||
@@ -3,4 +3,5 @@
|
||||
<ImpassableCost>4</ImpassableCost>
|
||||
<BorderThickness>0.75</BorderThickness>
|
||||
<BorderSeparation>0.85</BorderSeparation>
|
||||
<VisibilityStatus>visible</VisibilityStatus>
|
||||
</TerritoryManager>
|
||||
|
||||
@@ -13,5 +13,12 @@
|
||||
<element name="BorderSeparation">
|
||||
<data type="decimal"/>
|
||||
</element>
|
||||
<element name="VisibilityStatus">
|
||||
<choice>
|
||||
<value>off</value>
|
||||
<value>hidden</value>
|
||||
<value>visible</value>
|
||||
</choice>
|
||||
</element>
|
||||
</interleave>
|
||||
</element>
|
||||
|
||||
@@ -3,4 +3,5 @@
|
||||
<ImpassableCost>4</ImpassableCost>
|
||||
<BorderThickness>0.75</BorderThickness>
|
||||
<BorderSeparation>0.85</BorderSeparation>
|
||||
<VisibilityStatus>visible</VisibilityStatus>
|
||||
</TerritoryManager>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2022 Wildfire Games.
|
||||
/* Copyright (C) 2024 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@@ -147,7 +147,7 @@ void CTerritoryTexture::RecomputeTexture(Renderer::Backend::IDeviceCommandContex
|
||||
PROFILE("recompute territory texture");
|
||||
|
||||
CmpPtr<ICmpTerritoryManager> cmpTerritoryManager(m_Simulation, SYSTEM_ENTITY);
|
||||
if (!cmpTerritoryManager)
|
||||
if (!cmpTerritoryManager || !cmpTerritoryManager->IsVisible())
|
||||
return;
|
||||
|
||||
std::unique_ptr<u8[]> bitmap = std::make_unique<u8[]>(m_MapSize * m_MapSize * 4);
|
||||
|
||||
@@ -128,7 +128,6 @@ public:
|
||||
m_EnableLineDebugOverlays = false;
|
||||
m_DirtyID = 1;
|
||||
m_DirtyBlinkingID = 1;
|
||||
m_Visible = true;
|
||||
m_ColorChanged = false;
|
||||
|
||||
m_AnimTime = 0.0;
|
||||
@@ -144,6 +143,11 @@ public:
|
||||
int impassableCost = externalParamNode.GetChild("TerritoryManager").GetChild("ImpassableCost").ToInt();
|
||||
ENSURE(0 <= impassableCost && impassableCost <= 255);
|
||||
m_ImpassableCost = (u8)impassableCost;
|
||||
|
||||
const std::string& visibilityStatus = externalParamNode.GetChild("TerritoryManager").GetChild("VisibilityStatus").ToString();
|
||||
m_Enabled = visibilityStatus != "off";
|
||||
m_Visible = m_Enabled && visibilityStatus == "visible";
|
||||
|
||||
m_BorderThickness = externalParamNode.GetChild("TerritoryManager").GetChild("BorderThickness").ToFixed().ToFloat();
|
||||
m_BorderSeparation = externalParamNode.GetChild("TerritoryManager").GetChild("BorderSeparation").ToFixed().ToFloat();
|
||||
}
|
||||
@@ -305,14 +309,22 @@ public:
|
||||
|
||||
void SetVisibility(bool visible) override
|
||||
{
|
||||
if (!m_Enabled)
|
||||
return;
|
||||
|
||||
m_Visible = visible;
|
||||
}
|
||||
|
||||
bool IsVisible() const override
|
||||
{
|
||||
return m_Enabled && m_Visible;
|
||||
}
|
||||
|
||||
void UpdateColors() override;
|
||||
|
||||
private:
|
||||
|
||||
bool m_Visible;
|
||||
bool m_Enabled;
|
||||
};
|
||||
|
||||
REGISTER_COMPONENT_TYPE(TerritoryManager)
|
||||
@@ -716,7 +728,7 @@ void CCmpTerritoryManager::Interpolate(float frameTime, float UNUSED(frameOffset
|
||||
|
||||
void CCmpTerritoryManager::RenderSubmit(SceneCollector& collector, const CFrustum& frustum, bool culling)
|
||||
{
|
||||
if (!m_Visible)
|
||||
if (!IsVisible())
|
||||
return;
|
||||
|
||||
for (size_t i = 0; i < m_BoundaryLines.size(); ++i)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2021 Wildfire Games.
|
||||
/* Copyright (C) 2024 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@@ -29,4 +29,5 @@ DEFINE_INTERFACE_METHOD("SetTerritoryBlinking", ICmpTerritoryManager, SetTerrito
|
||||
DEFINE_INTERFACE_METHOD("IsTerritoryBlinking", ICmpTerritoryManager, IsTerritoryBlinking)
|
||||
DEFINE_INTERFACE_METHOD("GetTerritoryPercentage", ICmpTerritoryManager, GetTerritoryPercentage)
|
||||
DEFINE_INTERFACE_METHOD("UpdateColors", ICmpTerritoryManager, UpdateColors)
|
||||
DEFINE_INTERFACE_METHOD("IsVisible", ICmpTerritoryManager, IsVisible)
|
||||
END_INTERFACE_WRAPPER(TerritoryManager)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2020 Wildfire Games.
|
||||
/* Copyright (C) 2024 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@@ -105,6 +105,11 @@ public:
|
||||
*/
|
||||
virtual void UpdateColors() = 0;
|
||||
|
||||
/**
|
||||
* Whether the territory lines are visible.
|
||||
*/
|
||||
virtual bool IsVisible() const = 0;
|
||||
|
||||
DECLARE_INTERFACE_TYPE(TerritoryManager)
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user