Separate terrain geometry visualization from DevMode.
Also adds a “terrainoverlay" console command.
This commit is contained in:
@@ -23,7 +23,6 @@ namespace OpenRA.Traits
|
|||||||
public bool BuildAnywhere;
|
public bool BuildAnywhere;
|
||||||
public bool ShowCombatGeometry;
|
public bool ShowCombatGeometry;
|
||||||
public bool ShowDebugGeometry;
|
public bool ShowDebugGeometry;
|
||||||
public bool ShowTerrainGeometry;
|
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new DeveloperMode(this); }
|
public object Create(ActorInitializer init) { return new DeveloperMode(this); }
|
||||||
}
|
}
|
||||||
@@ -42,7 +41,6 @@ namespace OpenRA.Traits
|
|||||||
// Client side only
|
// Client side only
|
||||||
public bool ShowCombatGeometry;
|
public bool ShowCombatGeometry;
|
||||||
public bool ShowDebugGeometry;
|
public bool ShowDebugGeometry;
|
||||||
public bool ShowTerrainGeometry;
|
|
||||||
public bool EnableAll;
|
public bool EnableAll;
|
||||||
|
|
||||||
public DeveloperMode(DeveloperModeInfo info)
|
public DeveloperMode(DeveloperModeInfo info)
|
||||||
@@ -56,7 +54,6 @@ namespace OpenRA.Traits
|
|||||||
BuildAnywhere = info.BuildAnywhere;
|
BuildAnywhere = info.BuildAnywhere;
|
||||||
ShowCombatGeometry = info.ShowCombatGeometry;
|
ShowCombatGeometry = info.ShowCombatGeometry;
|
||||||
ShowDebugGeometry = info.ShowDebugGeometry;
|
ShowDebugGeometry = info.ShowDebugGeometry;
|
||||||
ShowTerrainGeometry = info.ShowTerrainGeometry;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -13,28 +13,42 @@ using System.Collections.Generic;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
|
using OpenRA.Mods.Common.Commands;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Renders a debug overlay showing the terrain cells. Attach this to the world actor.")]
|
[Desc("Renders a debug overlay showing the terrain cells. Attach this to the world actor.")]
|
||||||
public class TerrainGeometryOverlayInfo : ITraitInfo
|
public class TerrainGeometryOverlayInfo : TraitInfo<TerrainGeometryOverlay> { }
|
||||||
{
|
|
||||||
public object Create(ActorInitializer init) { return new TerrainGeometryOverlay(init.Self); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class TerrainGeometryOverlay : IRenderOverlay
|
public class TerrainGeometryOverlay : IRenderOverlay, IWorldLoaded, IChatCommand
|
||||||
{
|
{
|
||||||
readonly Lazy<DeveloperMode> devMode;
|
const string CommandName = "terrainoverlay";
|
||||||
|
const string CommandDesc = "Toggles the terrain geometry overlay";
|
||||||
|
|
||||||
public TerrainGeometryOverlay(Actor self)
|
public bool Enabled;
|
||||||
|
|
||||||
|
public void WorldLoaded(World w, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
devMode = Exts.Lazy(() => self.World.LocalPlayer != null ? self.World.LocalPlayer.PlayerActor.Trait<DeveloperMode>() : null);
|
var console = w.WorldActor.TraitOrDefault<ChatCommands>();
|
||||||
|
var help = w.WorldActor.TraitOrDefault<HelpCommand>();
|
||||||
|
|
||||||
|
if (console == null || help == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
console.RegisterCommand(CommandName, this);
|
||||||
|
help.RegisterHelp(CommandName, CommandDesc);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InvokeCommand(string name, string arg)
|
||||||
|
{
|
||||||
|
if (name == CommandName)
|
||||||
|
Enabled ^= true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Render(WorldRenderer wr)
|
public void Render(WorldRenderer wr)
|
||||||
{
|
{
|
||||||
if (devMode.Value == null || !devMode.Value.ShowTerrainGeometry)
|
if (!Enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var map = wr.World.Map;
|
var map = wr.World.Map;
|
||||||
|
|||||||
@@ -75,11 +75,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
showGeometryCheckbox.OnClick = () => devTrait.ShowDebugGeometry ^= true;
|
showGeometryCheckbox.OnClick = () => devTrait.ShowDebugGeometry ^= true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var terrainGeometryTrait = world.WorldActor.Trait<TerrainGeometryOverlay>();
|
||||||
var showTerrainGeometryCheckbox = widget.GetOrNull<CheckboxWidget>("SHOW_TERRAIN_OVERLAY");
|
var showTerrainGeometryCheckbox = widget.GetOrNull<CheckboxWidget>("SHOW_TERRAIN_OVERLAY");
|
||||||
if (showTerrainGeometryCheckbox != null)
|
if (showTerrainGeometryCheckbox != null && terrainGeometryTrait != null)
|
||||||
{
|
{
|
||||||
showTerrainGeometryCheckbox.IsChecked = () => devTrait.ShowTerrainGeometry;
|
showTerrainGeometryCheckbox.IsChecked = () => terrainGeometryTrait.Enabled;
|
||||||
showTerrainGeometryCheckbox.OnClick = () => devTrait.ShowTerrainGeometry ^= true;
|
showTerrainGeometryCheckbox.OnClick = () => terrainGeometryTrait.Enabled ^= true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var allTechCheckbox = widget.GetOrNull<CheckboxWidget>("ENABLE_TECH");
|
var allTechCheckbox = widget.GetOrNull<CheckboxWidget>("ENABLE_TECH");
|
||||||
|
|||||||
Reference in New Issue
Block a user