Differentiate road colors

Closes #222
This commit is contained in:
Kurt 2020-05-15 08:17:19 -07:00
parent 71be1fc419
commit d586085b18
2 changed files with 29 additions and 1 deletions

View File

@ -10,7 +10,7 @@ public static class TerrainTileColor
public static Color GetTileColor(TerrainTile tile)
{
if (tile.UnitModelRoad.IsRoad())
return Color.RosyBrown;
return GetRoadColor(tile.UnitModelRoad);
var baseColor = GetTileDefaultColor(tile.UnitModel);
if (tile.Elevation == 0)
return baseColor;
@ -18,6 +18,25 @@ public static Color GetTileColor(TerrainTile tile)
return ColorUtil.Blend(baseColor, Color.White, 1.4d / (tile.Elevation + 1));
}
private static Color GetRoadColor(TerrainUnitModel mdl)
{
if (mdl.IsRoadBrick())
return Color.Firebrick;
if (mdl.IsRoadDarkSoil())
return Color.SaddleBrown;
if (mdl.IsRoadSoil())
return Color.Peru;
if (mdl.IsRoadStone())
return Color.DarkGray;
if (mdl.IsRoadPattern())
return Color.Ivory;
if (mdl.IsRoadTile())
return Color.SteelBlue;
if (mdl.IsRoadSand())
return Color.SandyBrown;
return Color.BurlyWood;
}
private static readonly Color CliffBase = ColorUtil.Blend(Color.ForestGreen, Color.Black, 0.6d);
private static Color GetTileDefaultColor(TerrainUnitModel mdl)

View File

@ -255,6 +255,15 @@ public enum TerrainUnitModel : ushort
public static class TerrainUnitModelExtensions
{
public static bool IsRoad(this TerrainUnitModel t) => t >= RoadBrick0A || (RoadSoil0A <= t && t <= RoadStone8A);
public static bool IsRoadWood(this TerrainUnitModel t) => RoadWood0A <= t && t <= RoadWood8A;
public static bool IsRoadTile(this TerrainUnitModel t) => RoadTile0A <= t && t <= RoadTile8A;
public static bool IsRoadSand(this TerrainUnitModel t) => RoadSand0A <= t && t <= RoadSand8A;
public static bool IsRoadPattern(this TerrainUnitModel t) => RoadFanPattern0A <= t && t <= RoadFanPattern8A;
public static bool IsRoadDarkSoil(this TerrainUnitModel t) => RoadDarkSoil0A <= t && t <= RoadDarkSoil8A;
public static bool IsRoadBrick(this TerrainUnitModel t) => RoadBrick0A <= t && t <= RoadBrick8A;
public static bool IsRoadStone(this TerrainUnitModel t) => RoadStone0A <= t && t <= RoadStone8A;
public static bool IsRoadSoil(this TerrainUnitModel t) => RoadSoil0A <= t && t <= RoadSoil8A;
public static bool IsFall(this TerrainUnitModel t) => (Fall101 <= t && t <= Fall404) || (Fall103 <= t && t <= Fall424);
public static bool IsCliff(this TerrainUnitModel t) => (Cliff0A <= t && t <= Cliff8) || (t == Cliff2B);
public static bool IsRiver(this TerrainUnitModel t) => River0A <= t && t <= River8A;