Fix map editor radar ignoring color from terrain
This commit is contained in:
committed by
Matthias Mailänder
parent
4fe7daa85e
commit
cb41be113a
@@ -19,17 +19,22 @@ namespace OpenRA.Mods.Common.Traits.Radar
|
|||||||
[FieldLoader.Require]
|
[FieldLoader.Require]
|
||||||
public readonly string Terrain;
|
public readonly string Terrain;
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RadarColorFromTerrain(init.Self, Terrain); }
|
public Color GetColorFromTerrain(World world)
|
||||||
|
{
|
||||||
|
var tileSet = world.Map.Rules.TileSet;
|
||||||
|
return tileSet[tileSet.GetTerrainIndex(Terrain)].Color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override object Create(ActorInitializer init) { return new RadarColorFromTerrain(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RadarColorFromTerrain : IRadarColorModifier
|
public class RadarColorFromTerrain : IRadarColorModifier
|
||||||
{
|
{
|
||||||
Color c;
|
readonly Color c;
|
||||||
|
|
||||||
public RadarColorFromTerrain(Actor self, string terrain)
|
public RadarColorFromTerrain(Actor self, RadarColorFromTerrainInfo info)
|
||||||
{
|
{
|
||||||
var tileSet = self.World.Map.Rules.TileSet;
|
c = info.GetColorFromTerrain(self.World);
|
||||||
c = tileSet[tileSet.GetTerrainIndex(terrain)].Color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool VisibleOnRadar(Actor self) { return true; }
|
public bool VisibleOnRadar(Actor self) { return true; }
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
foreach (var previewsForCell in cellMap)
|
foreach (var previewsForCell in cellMap)
|
||||||
foreach (var preview in previewsForCell.Value)
|
foreach (var preview in previewsForCell.Value)
|
||||||
destinationBuffer.Add(Pair.New(previewsForCell.Key, preview.Owner.Color));
|
destinationBuffer.Add(Pair.New(previewsForCell.Key, preview.RadarColor));
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditorActorPreview this[string id]
|
public EditorActorPreview this[string id]
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
using OpenRA.Mods.Common.Graphics;
|
using OpenRA.Mods.Common.Graphics;
|
||||||
|
using OpenRA.Mods.Common.Traits.Radar;
|
||||||
using OpenRA.Primitives;
|
using OpenRA.Primitives;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
|
||||||
@@ -49,6 +50,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
readonly TooltipInfoBase tooltip;
|
readonly TooltipInfoBase tooltip;
|
||||||
IActorPreview[] previews;
|
IActorPreview[] previews;
|
||||||
readonly ActorReference reference;
|
readonly ActorReference reference;
|
||||||
|
public readonly Color RadarColor;
|
||||||
|
|
||||||
public EditorActorPreview(WorldRenderer worldRenderer, string id, ActorReference reference, PlayerReference owner)
|
public EditorActorPreview(WorldRenderer worldRenderer, string id, ActorReference reference, PlayerReference owner)
|
||||||
{
|
{
|
||||||
@@ -75,6 +77,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var subCellInit = reference.GetOrDefault<SubCellInit>();
|
var subCellInit = reference.GetOrDefault<SubCellInit>();
|
||||||
var subCell = subCellInit != null ? subCellInit.Value : SubCell.Any;
|
var subCell = subCellInit != null ? subCellInit.Value : SubCell.Any;
|
||||||
|
|
||||||
|
var radarColorInfo = Info.TraitInfoOrDefault<RadarColorFromTerrainInfo>();
|
||||||
|
RadarColor = radarColorInfo == null ? owner.Color : radarColorInfo.GetColorFromTerrain(world);
|
||||||
|
|
||||||
if (ios != null)
|
if (ios != null)
|
||||||
Footprint = ios.OccupiedCells(Info, location, subCell);
|
Footprint = ios.OccupiedCells(Info, location, subCell);
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user