Per-terrain color validation.

This commit is contained in:
Paul Chote
2016-01-25 22:38:37 +00:00
parent cc4ca839d9
commit dd963b75f5
14 changed files with 49 additions and 2 deletions

View File

@@ -53,6 +53,7 @@ namespace OpenRA
public readonly HashSet<string> AcceptsSmudgeType = new HashSet<string>(); public readonly HashSet<string> AcceptsSmudgeType = new HashSet<string>();
public readonly bool IsWater = false; // TODO: Remove this public readonly bool IsWater = false; // TODO: Remove this
public readonly Color Color; public readonly Color Color;
public readonly bool RestrictPlayerColor = false;
public readonly string CustomCursor; public readonly string CustomCursor;
// Private default ctor for serialization comparison // Private default ctor for serialization comparison

View File

@@ -291,7 +291,7 @@ namespace OpenRA.Mods.Common.Server
// Pick a random color for the bot // Pick a random color for the bot
var validator = server.ModData.Manifest.Get<ColorValidator>(); var validator = server.ModData.Manifest.Get<ColorValidator>();
var tileset = server.Map.Rules.TileSets[server.Map.Tileset]; var tileset = server.Map.Rules.TileSets[server.Map.Tileset];
var terrainColors = tileset.TerrainInfo.Select(ti => ti.Color); var terrainColors = tileset.TerrainInfo.Where(ti => ti.RestrictPlayerColor).Select(ti => ti.Color);
var playerColors = server.LobbyInfo.Clients.Select(c => c.Color.RGB) var playerColors = server.LobbyInfo.Clients.Select(c => c.Color.RGB)
.Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB)); .Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB));
bot.Color = bot.PreferredColor = validator.RandomValidColor(server.Random, terrainColors, playerColors); bot.Color = bot.PreferredColor = validator.RandomValidColor(server.Random, terrainColors, playerColors);
@@ -975,7 +975,7 @@ namespace OpenRA.Mods.Common.Server
}; };
var tileset = server.Map.Rules.TileSets[server.Map.Tileset]; var tileset = server.Map.Rules.TileSets[server.Map.Tileset];
var terrainColors = tileset.TerrainInfo.Select(ti => ti.Color).ToList(); var terrainColors = tileset.TerrainInfo.Where(ti => ti.RestrictPlayerColor).Select(ti => ti.Color).ToList();
var playerColors = server.LobbyInfo.Clients.Where(c => c.Index != playerIndex).Select(c => c.Color.RGB) var playerColors = server.LobbyInfo.Clients.Where(c => c.Index != playerIndex).Select(c => c.Color.RGB)
.Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB)).ToList(); .Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB)).ToList();

View File

@@ -14,11 +14,13 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 54FCFC Color: 54FCFC
RestrictPlayerColor: true
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 865F45 Color: 865F45
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -42,6 +44,7 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: A1E21C Color: A1E21C
RestrictPlayerColor: true
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
@@ -56,6 +59,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5DA5CE Color: 5DA5CE
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -14,11 +14,13 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 54FCFC Color: 54FCFC
RestrictPlayerColor: true
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 285C30 Color: 285C30
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -42,6 +44,7 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: A1E21C Color: A1E21C
RestrictPlayerColor: true
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
@@ -56,6 +59,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5C74A4 Color: 5C74A4
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -14,11 +14,13 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 54FCFC Color: 54FCFC
RestrictPlayerColor: true
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: C4C4C4 Color: C4C4C4
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -42,6 +44,7 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: A1E21C Color: A1E21C
RestrictPlayerColor: true
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
@@ -56,6 +59,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5C74A4 Color: 5C74A4
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -14,11 +14,13 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 54FCFC Color: 54FCFC
RestrictPlayerColor: true
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 284428 Color: 284428
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -42,6 +44,7 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: A1E21C Color: A1E21C
RestrictPlayerColor: true
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
@@ -56,6 +59,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5C74A4 Color: 5C74A4
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -14,11 +14,13 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 54FCFC Color: 54FCFC
RestrictPlayerColor: true
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 284428 Color: 284428
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -42,6 +44,7 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: A1E21C Color: A1E21C
RestrictPlayerColor: true
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
@@ -56,6 +59,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5C74A4 Color: 5C74A4
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -33,6 +33,7 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: RockCrater AcceptsSmudgeType: RockCrater
Color: CE8C42 Color: CE8C42
RestrictPlayerColor: true
TerrainType@Rough: TerrainType@Rough:
Type: Rough Type: Rough
TargetTypes: Ground TargetTypes: Ground
@@ -43,10 +44,12 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: SandCrater AcceptsSmudgeType: SandCrater
Color: D0C0A0 Color: D0C0A0
RestrictPlayerColor: true
TerrainType@Spice: TerrainType@Spice:
Type: Spice Type: Spice
TargetTypes: Ground TargetTypes: Ground
Color: EF944A Color: EF944A
RestrictPlayerColor: true
TerrainType@Transition: TerrainType@Transition:
Type: Transition Type: Transition
TargetTypes: Ground TargetTypes: Ground

View File

@@ -24,16 +24,19 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 865F45 Color: 865F45
RestrictPlayerColor: true
TerrainType@Gems: TerrainType@Gems:
Type: Gems Type: Gems
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 8470FF Color: 8470FF
RestrictPlayerColor: true
TerrainType@Ore: TerrainType@Ore:
Type: Ore Type: Ore
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 948060 Color: 948060
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -66,6 +69,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5DA5CE Color: 5DA5CE
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -19,11 +19,13 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 8470FF Color: 8470FF
RestrictPlayerColor: true
TerrainType@Ore: TerrainType@Ore:
Type: Ore Type: Ore
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 948060 Color: 948060
RestrictPlayerColor: true
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
@@ -32,6 +34,7 @@ Terrain:
Type: Wall Type: Wall
TargetTypes: Ground TargetTypes: Ground
Color: D0C0A0 Color: D0C0A0
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -19,16 +19,19 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: C4C4C4 Color: C4C4C4
RestrictPlayerColor: true
TerrainType@Gems: TerrainType@Gems:
Type: Gems Type: Gems
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 8470FF Color: 8470FF
RestrictPlayerColor: true
TerrainType@Ore: TerrainType@Ore:
Type: Ore Type: Ore
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 948060 Color: 948060
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -61,6 +64,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5C74A4 Color: 5C74A4
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -19,16 +19,19 @@ Terrain:
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 284428 Color: 284428
RestrictPlayerColor: true
TerrainType@Gems: TerrainType@Gems:
Type: Gems Type: Gems
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 8470FF Color: 8470FF
RestrictPlayerColor: true
TerrainType@Ore: TerrainType@Ore:
Type: Ore Type: Ore
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 948060 Color: 948060
RestrictPlayerColor: true
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
@@ -61,6 +64,7 @@ Terrain:
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 5C74A4 Color: 5C74A4
RestrictPlayerColor: true
Templates: Templates:
Template@255: Template@255:

View File

@@ -13,6 +13,7 @@ Terrain:
AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch
Color: C7C9FA Color: C7C9FA
TargetTypes: Ground TargetTypes: Ground
RestrictPlayerColor: true
TerrainType@Road: TerrainType@Road:
Type: Road Type: Road
Color: 2D2B28 Color: 2D2B28
@@ -30,6 +31,7 @@ Terrain:
Color: 3D4148 Color: 3D4148
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
RestrictPlayerColor: true
TerrainType@DirtRoad: TerrainType@DirtRoad:
Type: DirtRoad Type: DirtRoad
Color: 82838F Color: 82838F
@@ -47,11 +49,13 @@ Terrain:
AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch
Color: 009000 Color: 009000
TargetTypes: Ground TargetTypes: Ground
RestrictPlayerColor: true
TerrainType@BlueTiberium: TerrainType@BlueTiberium:
Type: BlueTiberium Type: BlueTiberium
AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch
Color: 202080 Color: 202080
TargetTypes: Ground TargetTypes: Ground
RestrictPlayerColor: true
TerrainType@Veins: TerrainType@Veins:
Type: Veins Type: Veins
Color: 000000 Color: 000000

View File

@@ -13,6 +13,7 @@ Terrain:
AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch
Color: 745537 Color: 745537
TargetTypes: Ground TargetTypes: Ground
RestrictPlayerColor: true
TerrainType@Road: TerrainType@Road:
Type: Road Type: Road
Color: 745537 Color: 745537
@@ -30,6 +31,7 @@ Terrain:
Color: 745537 Color: 745537
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
RestrictPlayerColor: true
TerrainType@DirtRoad: TerrainType@DirtRoad:
Type: DirtRoad Type: DirtRoad
Color: 745537 Color: 745537
@@ -47,11 +49,13 @@ Terrain:
AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch
Color: 009000 Color: 009000
TargetTypes: Ground TargetTypes: Ground
RestrictPlayerColor: true
TerrainType@BlueTiberium: TerrainType@BlueTiberium:
Type: BlueTiberium Type: BlueTiberium
AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch
Color: 202080 Color: 202080
TargetTypes: Ground TargetTypes: Ground
RestrictPlayerColor: true
TerrainType@Veins: TerrainType@Veins:
Type: Veins Type: Veins
Color: 000000 Color: 000000