Reduce duplication between Map and PlayerRadarTerrain.

This commit is contained in:
Paul Chote
2020-07-03 17:41:28 +01:00
committed by Oliver Brakmann
parent 5f588561b6
commit b3ee8b447e
2 changed files with 54 additions and 64 deletions

View File

@@ -91,31 +91,14 @@ namespace OpenRA.Mods.Common.Traits
public static Pair<int, int> GetColor(Map map, MPos uv)
{
var custom = map.CustomTerrain[uv];
Color leftColor, rightColor;
if (custom == byte.MaxValue)
if (custom != byte.MaxValue)
{
var tileset = map.Rules.TileSet;
var type = tileset.GetTileInfo(map.Tiles[uv]);
if (type != null)
{
if (tileset.MinHeightColorBrightness != 1.0f || tileset.MaxHeightColorBrightness != 1.0f)
{
var left = Exts.ColorLerp(Game.CosmeticRandom.NextFloat(), type.MinColor, type.MaxColor);
var right = Exts.ColorLerp(Game.CosmeticRandom.NextFloat(), type.MinColor, type.MaxColor);
var scale = float2.Lerp(tileset.MinHeightColorBrightness, tileset.MaxHeightColorBrightness, map.Height[uv] * 1f / map.Grid.MaximumTerrainHeight);
leftColor = Color.FromArgb((int)(scale * left.R).Clamp(0, 255), (int)(scale * left.G).Clamp(0, 255), (int)(scale * left.B).Clamp(0, 255));
rightColor = Color.FromArgb((int)(scale * right.R).Clamp(0, 255), (int)(scale * right.G).Clamp(0, 255), (int)(scale * right.B).Clamp(0, 255));
}
else
leftColor = rightColor = type.MinColor;
}
else
leftColor = rightColor = Color.Black;
var c = map.Rules.TileSet[custom].Color.ToArgb();
return Pair.New(c, c);
}
else
leftColor = rightColor = map.Rules.TileSet[custom].Color;
return Pair.New(leftColor.ToArgb(), rightColor.ToArgb());
var tc = map.GetTerrainColorPair(uv);
return Pair.New(tc.First.ToArgb(), tc.Second.ToArgb());
}
}
}