Merge pull request #9324 from atlimit8/ColorSpacePrefixes

Hex Color Parsing
This commit is contained in:
Oliver Brakmann
2015-11-02 20:28:04 +01:00
221 changed files with 12295 additions and 11794 deletions

View File

@@ -212,21 +212,9 @@ namespace OpenRA
} }
else if (fieldType == typeof(Color)) else if (fieldType == typeof(Color))
{ {
if (value != null) Color color;
{ if (value != null && HSLColor.TryParseRGB(value, out color))
var parts = value.Split(','); return color;
if (parts.Length == 3)
return Color.FromArgb(
Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[1]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[2]).Clamp(0, 255));
if (parts.Length == 4)
return Color.FromArgb(
Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[1]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[2]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[3]).Clamp(0, 255));
}
return InvalidValueAction(value, fieldType, fieldName); return InvalidValueAction(value, fieldType, fieldName);
} }
@@ -235,20 +223,11 @@ namespace OpenRA
if (value != null) if (value != null)
{ {
var parts = value.Split(','); var parts = value.Split(',');
var colors = new Color[parts.Length];
if (parts.Length % 4 != 0)
return InvalidValueAction(value, fieldType, fieldName);
var colors = new Color[parts.Length / 4];
for (var i = 0; i < colors.Length; i++) for (var i = 0; i < colors.Length; i++)
{ if (!HSLColor.TryParseRGB(parts[i], out colors[i]))
colors[i] = Color.FromArgb( return InvalidValueAction(value, fieldType, fieldName);
Exts.ParseIntegerInvariant(parts[4 * i]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[4 * i + 1]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[4 * i + 2]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[4 * i + 3]).Clamp(0, 255));
}
return colors; return colors;
} }
@@ -259,9 +238,12 @@ namespace OpenRA
{ {
if (value != null) if (value != null)
{ {
var parts = value.Split(','); Color rgb;
if (HSLColor.TryParseRGB(value, out rgb))
return new HSLColor(rgb);
// Allow old ColorRamp format to be parsed as HSLColor // Allow old HSLColor/ColorRamp formats to be parsed as HSLColor
var parts = value.Split(',');
if (parts.Length == 3 || parts.Length == 4) if (parts.Length == 3 || parts.Length == 4)
return new HSLColor( return new HSLColor(
(byte)Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255), (byte)Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255),

View File

@@ -16,6 +16,7 @@ using System.Drawing.Imaging;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using OpenRA.Graphics;
namespace OpenRA namespace OpenRA
{ {
@@ -73,14 +74,16 @@ namespace OpenRA
var t = v.GetType(); var t = v.GetType();
// Color.ToString() does the wrong thing; force it to format as an array // Color.ToString() does the wrong thing; force it to format as rgb[a] hex
if (t == typeof(Color)) if (t == typeof(Color))
{ {
var c = (Color)v; return HSLColor.ToHexString((Color)v);
return "{0},{1},{2},{3}".F(((int)c.A).Clamp(0, 255), }
((int)c.R).Clamp(0, 255),
((int)c.G).Clamp(0, 255), // HSLColor.ToString() does the wrong thing; force it to format as rgb[a] hex
((int)c.B).Clamp(0, 255)); if (t == typeof(HSLColor))
{
return ((HSLColor)v).ToHexString();
} }
if (t == typeof(ImageFormat)) if (t == typeof(ImageFormat))

View File

@@ -9,6 +9,7 @@
#endregion #endregion
using System.Drawing; using System.Drawing;
using System.Globalization;
using OpenRA.Scripting; using OpenRA.Scripting;
namespace OpenRA.Graphics namespace OpenRA.Graphics
@@ -27,13 +28,17 @@ namespace OpenRA.Graphics
return new HSLColor((byte)(255 * h), (byte)(255 * ss), (byte)(255 * ll)); return new HSLColor((byte)(255 * h), (byte)(255 * ss), (byte)(255 * ll));
} }
public HSLColor(Color color)
{
RGB = color;
H = (byte)((color.GetHue() / 360.0f) * 255);
S = (byte)(color.GetSaturation() * 255);
L = (byte)(color.GetBrightness() * 255);
}
public static HSLColor FromRGB(int r, int g, int b) public static HSLColor FromRGB(int r, int g, int b)
{ {
var c = Color.FromArgb(r, g, b); return new HSLColor(Color.FromArgb(r, g, b));
var h = (byte)((c.GetHue() / 360.0f) * 255);
var s = (byte)(c.GetSaturation() * 255);
var l = (byte)(c.GetBrightness() * 255);
return new HSLColor(h, s, l);
} }
public static Color RGBFromHSL(float h, float s, float l) public static Color RGBFromHSL(float h, float s, float l)
@@ -66,6 +71,27 @@ namespace OpenRA.Graphics
return Color.FromArgb((int)(rgb[0] * 255), (int)(rgb[1] * 255), (int)(rgb[2] * 255)); return Color.FromArgb((int)(rgb[0] * 255), (int)(rgb[1] * 255), (int)(rgb[2] * 255));
} }
public static bool TryParseRGB(string value, out Color color)
{
color = new Color();
value = value.Trim();
if (value.Length != 6 && value.Length != 8)
return false;
byte red, green, blue, alpha = 255;
if (!byte.TryParse(value.Substring(0, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out red)
|| !byte.TryParse(value.Substring(2, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out green)
|| !byte.TryParse(value.Substring(4, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out blue))
return false;
if (value.Length == 8
&& !byte.TryParse(value.Substring(6, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out alpha))
return false;
color = Color.FromArgb(alpha, red, green, blue);
return true;
}
public static bool operator ==(HSLColor me, HSLColor other) public static bool operator ==(HSLColor me, HSLColor other)
{ {
return me.H == other.H && me.S == other.S && me.L == other.L; return me.H == other.H && me.S == other.S && me.L == other.L;
@@ -96,6 +122,18 @@ namespace OpenRA.Graphics
return "{0},{1},{2}".F(H, S, L); return "{0},{1},{2}".F(H, S, L);
} }
public static string ToHexString(Color color)
{
if (color.A == 255)
return color.R.ToString("X2") + color.G.ToString("X2") + color.B.ToString("X2");
return color.R.ToString("X2") + color.G.ToString("X2") + color.B.ToString("X2") + color.A.ToString("X2");
}
public string ToHexString()
{
return ToHexString(RGB);
}
public override int GetHashCode() { return H.GetHashCode() ^ S.GetHashCode() ^ L.GetHashCode(); } public override int GetHashCode() { return H.GetHashCode() ^ S.GetHashCode() ^ L.GetHashCode(); }
public override bool Equals(object obj) public override bool Equals(object obj)

View File

@@ -344,6 +344,54 @@ namespace OpenRA
Visibility = MapVisibility.MissionSelector; Visibility = MapVisibility.MissionSelector;
} }
// Format 7 -> 8 replaced normalized HSL triples with rgb(a) hex colors
if (MapFormat < 8)
{
var players = yaml.Nodes.FirstOrDefault(n => n.Key == "Players");
if (players != null)
{
bool noteHexColors = false;
bool noteColorRamp = false;
foreach (var player in players.Value.Nodes)
{
var colorRampNode = player.Value.Nodes.FirstOrDefault(n => n.Key == "ColorRamp");
if (colorRampNode != null)
{
Color dummy;
var parts = colorRampNode.Value.Value.Split(',');
if (parts.Length == 3 || parts.Length == 4)
{
// Try to convert old normalized HSL value to a rgb hex color
try
{
HSLColor color = new HSLColor(
(byte)Exts.ParseIntegerInvariant(parts[0].Trim()).Clamp(0, 255),
(byte)Exts.ParseIntegerInvariant(parts[1].Trim()).Clamp(0, 255),
(byte)Exts.ParseIntegerInvariant(parts[2].Trim()).Clamp(0, 255));
colorRampNode.Value.Value = FieldSaver.FormatValue(color);
noteHexColors = true;
}
catch (Exception)
{
throw new InvalidDataException("Invalid ColorRamp value.\n File: " + path);
}
}
else if (parts.Length != 1 || !HSLColor.TryParseRGB(parts[0], out dummy))
throw new InvalidDataException("Invalid ColorRamp value.\n File: " + path);
colorRampNode.Key = "Color";
noteColorRamp = true;
}
}
Console.WriteLine("Converted " + path + " to MapFormat 8.");
if (noteHexColors)
Console.WriteLine("ColorRamp is now called Color and uses rgb(a) hex value - rrggbb[aa].");
else if (noteColorRamp)
Console.WriteLine("ColorRamp is now called Color.");
}
}
SpawnPoints = Exts.Lazy(() => SpawnPoints = Exts.Lazy(() =>
{ {
var spawns = new List<CPos>(); var spawns = new List<CPos>();
@@ -389,7 +437,7 @@ namespace OpenRA
// The Uid is calculated from the data on-disk, so // The Uid is calculated from the data on-disk, so
// format changes must be flushed to disk. // format changes must be flushed to disk.
// TODO: this isn't very nice // TODO: this isn't very nice
if (MapFormat < 7) if (MapFormat < 8)
Save(path); Save(path);
Uid = ComputeHash(); Uid = ComputeHash();
@@ -537,7 +585,7 @@ namespace OpenRA
public void Save(string toPath) public void Save(string toPath)
{ {
MapFormat = 7; MapFormat = 8;
var root = new List<MiniYamlNode>(); var root = new List<MiniYamlNode>();
var fields = new[] var fields = new[]

View File

@@ -28,10 +28,8 @@ namespace OpenRA
public bool LockFaction = false; public bool LockFaction = false;
public string Faction; public string Faction;
// ColorRamp naming retained for backward compatibility
public bool LockColor = false; public bool LockColor = false;
public HSLColor ColorRamp = new HSLColor(0, 0, 238); public HSLColor Color = new HSLColor(0, 0, 238);
public HSLColor Color { get { return ColorRamp; } set { ColorRamp = value; } }
public bool LockSpawn = false; public bool LockSpawn = false;
public int Spawn = 0; public int Spawn = 0;

View File

@@ -543,6 +543,7 @@
<Compile Include="UtilityCommands\UpgradeMapCommand.cs" /> <Compile Include="UtilityCommands\UpgradeMapCommand.cs" />
<Compile Include="UtilityCommands\UpgradeModCommand.cs" /> <Compile Include="UtilityCommands\UpgradeModCommand.cs" />
<Compile Include="UtilityCommands\UpgradeRules.cs" /> <Compile Include="UtilityCommands\UpgradeRules.cs" />
<Compile Include="UtilityCommands\Rgba2Hex.cs" />
<Compile Include="Warheads\CreateEffectWarhead.cs" /> <Compile Include="Warheads\CreateEffectWarhead.cs" />
<Compile Include="Warheads\CreateResourceWarhead.cs" /> <Compile Include="Warheads\CreateResourceWarhead.cs" />
<Compile Include="Warheads\DamageWarhead.cs" /> <Compile Include="Warheads\DamageWarhead.cs" />

View File

@@ -9,6 +9,7 @@
#endregion #endregion
using System.Drawing; using System.Drawing;
using Eluant;
using OpenRA.Graphics; using OpenRA.Graphics;
using OpenRA.Scripting; using OpenRA.Scripting;
@@ -30,11 +31,59 @@ namespace OpenRA.Mods.Common.Scripting.Global
return new HSLColor(h, s, l); return new HSLColor(h, s, l);
} }
public HSLColor White { get { return HSLColor.FromRGB(Color.White.R, Color.White.G, Color.White.B); } } [Desc("Create a new HSL color with the specified red/green/blue/[alpha] values.")]
public HSLColor Black { get { return HSLColor.FromRGB(Color.Black.R, Color.Black.G, Color.Black.B); } } public HSLColor FromRGB(int red, int green, int blue, int alpha = 255)
public HSLColor Blue { get { return HSLColor.FromRGB(Color.Blue.R, Color.Blue.G, Color.Blue.B); } } {
public HSLColor Red { get { return HSLColor.FromRGB(Color.Red.R, Color.Red.G, Color.Red.B); } } return new HSLColor(
public HSLColor Yellow { get { return HSLColor.FromRGB(Color.Yellow.R, Color.Yellow.G, Color.Yellow.B); } } Color.FromArgb(
public HSLColor Green { get { return HSLColor.FromRGB(Color.Green.R, Color.Green.G, Color.Green.B); } } alpha.Clamp(0, 255), red.Clamp(0, 255), green.Clamp(0, 255), blue.Clamp(0, 255)));
}
[Desc("Create a new HSL color with the specified red/green/blue/[alpha] hex string (rrggbb[aa]).")]
public HSLColor FromHex(string value)
{
Color rgb;
if (HSLColor.TryParseRGB(value, out rgb))
return new HSLColor(rgb);
throw new LuaException("Invalid rrggbb[aa] hex string.");
}
public HSLColor Aqua { get { return new HSLColor(Color.Aqua); } }
public HSLColor Black { get { return new HSLColor(Color.Black); } }
public HSLColor Blue { get { return new HSLColor(Color.Blue); } }
public HSLColor Brown { get { return new HSLColor(Color.Brown); } }
public HSLColor Cyan { get { return new HSLColor(Color.Cyan); } }
public HSLColor DarkBlue { get { return new HSLColor(Color.DarkBlue); } }
public HSLColor DarkCyan { get { return new HSLColor(Color.DarkCyan); } }
public HSLColor DarkGray { get { return new HSLColor(Color.DarkGray); } }
public HSLColor DarkGreen { get { return new HSLColor(Color.DarkGreen); } }
public HSLColor DarkOrange { get { return new HSLColor(Color.DarkOrange); } }
public HSLColor DarkRed { get { return new HSLColor(Color.DarkRed); } }
public HSLColor Fuchsia { get { return new HSLColor(Color.Fuchsia); } }
public HSLColor Gold { get { return new HSLColor(Color.Gold); } }
public HSLColor Gray { get { return new HSLColor(Color.Gray); } }
public HSLColor Green { get { return new HSLColor(Color.Green); } }
public HSLColor LawnGreen { get { return new HSLColor(Color.LawnGreen); } }
public HSLColor LightBlue { get { return new HSLColor(Color.LightBlue); } }
public HSLColor LightCyan { get { return new HSLColor(Color.LightCyan); } }
public HSLColor LightGray { get { return new HSLColor(Color.LightGray); } }
public HSLColor LightGreen { get { return new HSLColor(Color.LightGreen); } }
public HSLColor LightYellow { get { return new HSLColor(Color.LightYellow); } }
public HSLColor Lime { get { return new HSLColor(Color.Lime); } }
public HSLColor LimeGreen { get { return new HSLColor(Color.LimeGreen); } }
public HSLColor Magenta { get { return new HSLColor(Color.Magenta); } }
public HSLColor Maroon { get { return new HSLColor(Color.Maroon); } }
public HSLColor Navy { get { return new HSLColor(Color.Navy); } }
public HSLColor Olive { get { return new HSLColor(Color.Olive); } }
public HSLColor Orange { get { return new HSLColor(Color.Orange); } }
public HSLColor OrangeRed { get { return new HSLColor(Color.OrangeRed); } }
public HSLColor Purple { get { return new HSLColor(Color.Purple); } }
public HSLColor Red { get { return new HSLColor(Color.Red); } }
public HSLColor Salmon { get { return new HSLColor(Color.Salmon); } }
public HSLColor SkyBlue { get { return new HSLColor(Color.SkyBlue); } }
public HSLColor Teal { get { return new HSLColor(Color.Teal); } }
public HSLColor Yellow { get { return new HSLColor(Color.Yellow); } }
public HSLColor White { get { return new HSLColor(Color.White); } }
} }
} }

View File

@@ -169,7 +169,7 @@ namespace OpenRA.Mods.Common.Server
return false; return false;
} }
var mapPlayerColors = server.MapPlayers.Players.Values.Select(p => p.ColorRamp.RGB); var mapPlayerColors = server.MapPlayers.Players.Values.Select(p => p.Color.RGB);
if (!ValidateColorAgainstForbidden(askedColor, mapPlayerColors, out forbiddenColor)) if (!ValidateColorAgainstForbidden(askedColor, mapPlayerColors, out forbiddenColor))
{ {

View File

@@ -56,12 +56,12 @@ namespace OpenRA.Mods.Common.Traits
[Desc("The value range that can be swung to the left or right. SwingAmplitude min. and max. value in px/tick.")] [Desc("The value range that can be swung to the left or right. SwingAmplitude min. and max. value in px/tick.")]
public readonly float[] SwingAmplitude = { 1.0f, 1.5f }; public readonly float[] SwingAmplitude = { 1.0f, 1.5f };
[Desc("The randomly selected ArgbColors for the particles. Use this order: a,r,g,b, a,r,g,b, a,...")] [Desc("The randomly selected rgb(a) hex colors for the particles. Use this order: rrggbb[aa], rrggbb[aa], ...")]
public readonly Color[] ParticleColors = { public readonly Color[] ParticleColors = {
Color.FromArgb(255, 236, 236, 236), Color.FromArgb(236, 236, 236),
Color.FromArgb(255, 228, 228, 228), Color.FromArgb(228, 228, 228),
Color.FromArgb(255, 208, 208, 208), Color.FromArgb(208, 208, 208),
Color.FromArgb(255, 188, 188, 188) Color.FromArgb(188, 188, 188)
}; };
[Desc("Works only with line enabled and can get used to fade out the tail of the line like a contrail.")] [Desc("Works only with line enabled and can get used to fade out the tail of the line like a contrail.")]

View File

@@ -12,6 +12,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using OpenRA.Graphics;
using OpenRA.Traits; using OpenRA.Traits;
namespace OpenRA.Mods.Common.UtilityCommands namespace OpenRA.Mods.Common.UtilityCommands
@@ -164,6 +165,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
if (t == typeof(WVec)) if (t == typeof(WVec))
return "3D World Vector"; return "3D World Vector";
if (t == typeof(HSLColor))
return "Color";
return t.Name; return t.Name;
} }
} }

View File

@@ -0,0 +1,209 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
namespace OpenRA.Mods.Common.UtilityCommands
{
class Rgba2Hex : IUtilityCommand
{
public string Name { get { return "--rgba2hex"; } }
static readonly char[] Comma = new char[] { ',' };
public bool ValidateArguments(string[] args)
{
if (args.Length <= 1)
return PrintUsage();
var invalid = false;
byte component;
for (int i = 1; i < args.Length; i++)
{
var parts = args[i].Split(Comma, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length != 3 && parts.Length != 4)
{
invalid = true;
Console.WriteLine("Invalid color (argument " + i + "): " + args[i]);
}
else
{
foreach (var part in parts)
{
if (!byte.TryParse(part, out component))
{
invalid = true;
Console.WriteLine("Invalid component in color (argument " + i + "): [" + part + "]: " + args[i]);
}
}
}
}
return !invalid || PrintUsage();
}
bool PrintUsage()
{
Console.WriteLine("");
Console.WriteLine("Usage:");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --rgba2hex r1,g1,b1");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --rgba2hex r1,g1,b1,a1");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --rgba2hex r1,g1,b1 r2,g2,b2,a2");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --rgba2hex r1,g1,b1,a1 r2,g2,b2 ...");
Console.WriteLine("");
Console.WriteLine("\tNo spaces between the color components (red,green,blue[,alpha]).");
Console.WriteLine("\tSpaces between colors for a list; each argument is a color.");
Console.WriteLine("\tExtra commas are ignored.");
Console.WriteLine("");
Console.WriteLine("Where:");
Console.WriteLine("\tr# is a red component value (0-255)");
Console.WriteLine("\tg# is a green component value (0-255)");
Console.WriteLine("\tb# is a blue component value (0-255)");
Console.WriteLine("\ta# is an optional alpha component value (0-255)");
Console.WriteLine("");
return false;
}
[Desc("Convert r,g,b[,a] triples/quads into hex colors")]
public void Run(ModData modData, string[] args)
{
for (int i = 1; i < args.Length;)
{
var parts = args[i].Split(Comma, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length == 3)
{
foreach (var c in parts)
Console.Write(byte.Parse(c).ToString("X2"));
}
else
{
Console.Write(byte.Parse(parts[0]).ToString("X2"));
Console.Write(byte.Parse(parts[1]).ToString("X2"));
Console.Write(byte.Parse(parts[2]).ToString("X2"));
var alpha = byte.Parse(parts[3]);
if (alpha < 255)
Console.Write(alpha.ToString("X2"));
}
if (++i != args.Length)
Console.Write(", ");
else
Console.WriteLine();
}
}
}
class Argb2Hex : IUtilityCommand
{
public string Name { get { return "--argb2hex"; } }
static readonly char[] Comma = new char[] { ',' };
public bool ValidateArguments(string[] args)
{
if (args.Length <= 1)
return PrintUsage();
var invalid = false;
byte component;
for (int i = 1; i < args.Length; i++)
{
var parts = args[i].Split(Comma, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length != 3 && parts.Length != 4)
{
invalid = true;
Console.WriteLine("Invalid color (argument " + i + "): " + args[i]);
}
else
{
foreach (var part in parts)
{
if (!byte.TryParse(part, out component))
{
invalid = true;
Console.WriteLine("Invalid component in color (argument " + i + "): [" + part + "]: " + args[i]);
}
}
}
}
return !invalid || PrintUsage();
}
bool PrintUsage()
{
Console.WriteLine("");
Console.WriteLine("Usage:");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --argb2hex a1,r1,g1,b1");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --argb2hex r1,g1,b1");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --argb2hex a1,r1,g1,b1 a2,r2,g2,b2");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --argb2hex a1,r1,g1,b1, a2,r2,g2,b2");
Console.WriteLine("\tOpenRA.Utility.exe [MOD] --argb2hex a1,r1,g1,b1 a2,r2,g2,b2 ...");
Console.WriteLine("");
Console.WriteLine("\tNo spaces between color components ([alpha,]red,green,blue).");
Console.WriteLine("\tSpaces between colors for a list; each argument is a color.");
Console.WriteLine("\tExtra commas are ignored; useful for pasting legacy color lists to the command line.");
Console.WriteLine("");
Console.WriteLine("Where:");
Console.WriteLine("\ta# is an optional alpha component value (0-255)");
Console.WriteLine("\tr# is a red component value (0-255)");
Console.WriteLine("\tg# is a green component value (0-255)");
Console.WriteLine("\tb# is a blue component value (0-255)");
Console.WriteLine("\t[MOD] is any valid mod such as \"all\"");
Console.WriteLine("");
Console.WriteLine("Converting legacy color lists:");
Console.WriteLine("\tType into command line: OpenRA.Utility.exe all --argb2hex ");
Console.WriteLine("\tFollow with a space.");
Console.WriteLine("\tCopy legacy color list and paste into command line");
Console.WriteLine("\t1.) Copying from command line terminal:");
Console.WriteLine("\t\tPress Enter in command line terminal.");
Console.WriteLine("\t\tCopy hex color list from command line terminal.");
Console.WriteLine("\t2.) Append to file");
Console.WriteLine("\t\tSave any unsaved changes to file.");
Console.WriteLine("\t\tEnter \">>\" into command line terminal without the quotes.");
Console.WriteLine("\t\tEnter relative or absolute path follow by a \"/\" to file directory if it is not the current directory.");
Console.WriteLine("\t\tEnter full filename with extension.");
Console.WriteLine("\t\tPress Enter.");
Console.WriteLine("\t\tOpen/reload file");
Console.WriteLine("");
Console.WriteLine("");
return false;
}
[Desc("Convert a,r,g,b legacy colors into hex colors")]
public void Run(ModData modData, string[] args)
{
for (int i = 1; i < args.Length;)
{
var parts = args[i].Split(Comma, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length == 3)
{
foreach (var c in parts)
Console.Write(byte.Parse(c).ToString("X2"));
}
else
{
Console.Write(byte.Parse(parts[1]).ToString("X2"));
Console.Write(byte.Parse(parts[2]).ToString("X2"));
Console.Write(byte.Parse(parts[3]).ToString("X2"));
var alpha = byte.Parse(parts[0]);
if (alpha < 255)
Console.Write(alpha.ToString("X2"));
}
if (++i != args.Length)
Console.Write(", ");
else
Console.WriteLine();
}
}
}
}

View File

@@ -76,6 +76,28 @@ namespace OpenRA.Mods.Common.UtilityCommands
file.WriteLine(yaml.WriteToString()); file.WriteLine(yaml.WriteToString());
} }
Console.WriteLine("Processing Chrome Metrics:");
foreach (var filename in Game.ModData.Manifest.ChromeMetrics)
{
Console.WriteLine("\t" + filename);
var yaml = MiniYaml.FromFile(filename);
UpgradeRules.UpgradeChromeMetrics(engineDate, ref yaml, null, 0);
using (var file = new StreamWriter(filename))
file.WriteLine(yaml.WriteToString());
}
Console.WriteLine("Processing Chrome Layout:");
foreach (var filename in Game.ModData.Manifest.ChromeLayout)
{
Console.WriteLine("\t" + filename);
var yaml = MiniYaml.FromFile(filename);
UpgradeRules.UpgradeChromeLayout(engineDate, ref yaml, null, 0);
using (var file = new StreamWriter(filename))
file.WriteLine(yaml.WriteToString());
}
Console.WriteLine("Processing Maps:"); Console.WriteLine("Processing Maps:");
var maps = Game.ModData.MapCache var maps = Game.ModData.MapCache
.Where(m => m.Status == MapStatus.Available) .Where(m => m.Status == MapStatus.Available)

View File

@@ -10,8 +10,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using OpenRA.Graphics;
namespace OpenRA.Mods.Common.UtilityCommands namespace OpenRA.Mods.Common.UtilityCommands
{ {
@@ -148,6 +150,72 @@ namespace OpenRA.Mods.Common.UtilityCommands
} }
} }
internal static void TryUpdateColor(ref string value)
{
if (value.Length == 0)
return;
try
{
var parts = value.Split(',');
if (parts.Length == 3)
value = FieldSaver.FormatValue(Color.FromArgb(
Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[1]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[2]).Clamp(0, 255)));
else if (parts.Length == 4)
value = FieldSaver.FormatValue(Color.FromArgb(
Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[1]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[2]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[3]).Clamp(0, 255)));
}
catch { }
}
internal static void TryUpdateColors(ref string value)
{
if (value.Length == 0)
return;
try
{
var parts = value.Split(',');
if (parts.Length % 4 != 0)
return;
var colors = new Color[parts.Length / 4];
for (var i = 0; i < colors.Length; i++)
{
colors[i] = Color.FromArgb(
Exts.ParseIntegerInvariant(parts[4 * i]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[4 * i + 1]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[4 * i + 2]).Clamp(0, 255),
Exts.ParseIntegerInvariant(parts[4 * i + 3]).Clamp(0, 255));
}
value = FieldSaver.FormatValue(colors);
}
catch { }
}
internal static void TryUpdateHSLColor(ref string value)
{
if (value.Length == 0)
return;
try
{
var parts = value.Split(',');
if (parts.Length == 3 || parts.Length == 4)
value = FieldSaver.FormatValue(new HSLColor(
(byte)Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255),
(byte)Exts.ParseIntegerInvariant(parts[1]).Clamp(0, 255),
(byte)Exts.ParseIntegerInvariant(parts[2]).Clamp(0, 255)));
}
catch { }
}
internal static void UpgradeActorRules(int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth) internal static void UpgradeActorRules(int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth)
{ {
var parentKey = parent != null ? parent.Key.Split('@').First() : null; var parentKey = parent != null ? parent.Key.Split('@').First() : null;
@@ -2277,6 +2345,21 @@ namespace OpenRA.Mods.Common.UtilityCommands
} }
} }
if (engineVersion < 20151027 && depth == 2)
{
if (node.Key == "Color")
{
if (parent.Key.StartsWith("FixedColorPalette"))
TryUpdateHSLColor(ref node.Value.Value);
else
TryUpdateColor(ref node.Value.Value);
}
else if (node.Key == "RadarPingColor" || node.Key == "SelectionBoxColor" || node.Key == "BarColor")
TryUpdateColor(ref node.Value.Value);
else if (node.Key == "Fog" || node.Key == "Shroud" || node.Key == "ParticleColors")
TryUpdateColors(ref node.Value.Value);
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }
@@ -2764,6 +2847,12 @@ namespace OpenRA.Mods.Common.UtilityCommands
node.Key = "TrailImage"; node.Key = "TrailImage";
} }
if (engineVersion < 20151027)
{
if (node.Key == "Color" || node.Key == "ContrailColor")
TryUpdateColor(ref node.Value.Value);
}
UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }
@@ -2785,6 +2874,14 @@ namespace OpenRA.Mods.Common.UtilityCommands
if (depth == 2 && node.Key == "Image") if (depth == 2 && node.Key == "Image")
node.Key = "Images"; node.Key = "Images";
if (engineVersion < 20151027)
{
if (node.Key == "LeftColor" || node.Key == "RightColor" || node.Key == "Color")
TryUpdateColor(ref node.Value.Value);
else if (node.Key == "HeightDebugColors")
TryUpdateColors(ref node.Value.Value);
}
UpgradeTileset(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeTileset(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
@@ -2829,10 +2926,49 @@ namespace OpenRA.Mods.Common.UtilityCommands
lockRace.Key = "LockFaction"; lockRace.Key = "LockFaction";
} }
if (engineVersion < 20151027 && node.Key == "ColorRamp")
{
TryUpdateHSLColor(ref node.Value.Value);
node.Key = "Color";
}
UpgradePlayers(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradePlayers(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }
internal static void UpgradeChromeMetrics(int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth)
{
foreach (var node in nodes)
{
if (engineVersion < 20151027)
{
if (node.Key.EndsWith("Color") || node.Key.EndsWith("ColorDisabled") || node.Key.EndsWith("ColorInvalid"))
TryUpdateColor(ref node.Value.Value);
}
UpgradeChromeMetrics(engineVersion, ref node.Value.Nodes, node, depth + 1);
}
}
internal static void UpgradeChromeLayout(int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth)
{
foreach (var node in nodes)
{
if (engineVersion < 20151027)
{
if (node.Key == "Color" || node.Key == "ReadyTextAltColor" || node.Key == "TextColor" || node.Key == "TextColorDisabled")
{
if (parent.Key.StartsWith("MapPreview@"))
TryUpdateHSLColor(ref node.Value.Value);
else
TryUpdateColor(ref node.Value.Value);
}
}
UpgradeChromeLayout(engineVersion, ref node.Value.Nodes, node, depth + 1);
}
}
internal static void UpgradeActors(int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth) internal static void UpgradeActors(int engineVersion, ref List<MiniYamlNode> nodes, MiniYamlNode parent, int depth)
{ {
foreach (var node in nodes) foreach (var node in nodes)

View File

@@ -40,4 +40,5 @@ Container@MISSION_OBJECTIVES:
Width: PARENT_RIGHT - 100 Width: PARENT_RIGHT - 100
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Disabled: True Disabled: True
TextColorDisabled: 255,255,255 TextColorDisabled: FFFFFF

View File

@@ -1,5 +1,5 @@
Container@SKIRMISH_STATS: Container@SKIRMISH_STATS:
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Width: PARENT_RIGHT Width: PARENT_RIGHT
Logic: GameInfoStatsLogic Logic: GameInfoStatsLogic
Children: Children:
@@ -24,7 +24,7 @@ Container@SKIRMISH_STATS:
Font: Bold Font: Bold
Text: Destroy all opposition! Text: Destroy all opposition!
Disabled: yes Disabled: yes
TextColorDisabled: 255,255,255 TextColorDisabled: FFFFFF
Container@STATS_HEADERS: Container@STATS_HEADERS:
X: 17 X: 17
Y: 80 Y: 80

View File

@@ -76,7 +76,7 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
Width: 137 Width: 137
Height: 20 Height: 20
Text: Waiting Text: Waiting
TextColor: 50,205,50 TextColor: 32CD32
Font: Regular Font: Regular
Checkbox@EMPTY: Checkbox@EMPTY:
X: 5 X: 5
@@ -91,7 +91,7 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
Width: 137 Width: 137
Height: 20 Height: 20
Text: Protected Text: Protected
TextColor: 255,0,0 TextColor: FF0000
Font: Regular Font: Regular
Checkbox@ALREADY_STARTED: Checkbox@ALREADY_STARTED:
X: 5 X: 5
@@ -99,7 +99,7 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
Width: 137 Width: 137
Height: 20 Height: 20
Text: Started Text: Started
TextColor: 255,165,0 TextColor: FFA500
Font: Regular Font: Regular
Checkbox@INCOMPATIBLE_VERSION: Checkbox@INCOMPATIBLE_VERSION:
X: 5 X: 5
@@ -107,5 +107,6 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
Width: 137 Width: 137
Height: 20 Height: 20
Text: Incompatible Text: Incompatible
TextColor: 190,190,190 TextColor: BEBEBE
Font: Regular Font: Regular

View File

@@ -19,7 +19,7 @@ Background@BUTTON_TOOLTIP:
Font: Bold Font: Bold
Label@HOTKEY: Label@HOTKEY:
Visible: false Visible: false
TextColor: 255,255,0 TextColor: FFFF00
Height: 23 Height: 23
Font: Bold Font: Bold
@@ -64,7 +64,7 @@ Background@PRODUCTION_TOOLTIP:
Label@HOTKEY: Label@HOTKEY:
Visible: false Visible: false
Height: 23 Height: 23
TextColor: 255,255,0 TextColor: FFFF00
Font: Bold Font: Bold
Label@REQUIRES: Label@REQUIRES:
X: 5 X: 5
@@ -119,7 +119,7 @@ Background@SUPPORT_POWER_TOOLTIP:
Label@HOTKEY: Label@HOTKEY:
Visible: false Visible: false
Height: 20 Height: 20
TextColor: 255,255,0 TextColor: FFFF00
Font: Bold Font: Bold
Label@TIME: Label@TIME:
Y: 6 Y: 6
@@ -207,3 +207,4 @@ Background@FACTION_DESCRIPTION_TOOLTIP:
Height: 14 Height: 14
Font: TinyBold Font: TinyBold
VAlign: Top VAlign: Top

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -38,7 +38,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@GDI: PlayerReference@GDI:
@@ -49,7 +49,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -49,7 +49,7 @@ Players:
Name: Dinosaur Name: Dinosaur
NonCombatant: True NonCombatant: True
Faction: gdi Faction: gdi
ColorRamp: 14,119,96 Color: 8C5033
Enemies: Nod, Civilian Enemies: Nod, Civilian
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
@@ -59,7 +59,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: Nod Allies: Nod

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -40,7 +40,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@GDI: PlayerReference@GDI:
@@ -51,7 +51,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -43,7 +43,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI
@@ -51,7 +51,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@Neutral: PlayerReference@Neutral:

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -39,7 +39,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@Neutral: PlayerReference@Neutral:
@@ -55,7 +55,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -40,7 +40,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@GDI: PlayerReference@GDI:
@@ -51,7 +51,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -40,7 +40,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@GDI: PlayerReference@GDI:
@@ -51,7 +51,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -45,7 +45,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI, Civillians Enemies: GDI, Civillians
PlayerReference@GDI: PlayerReference@GDI:
@@ -56,7 +56,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -41,7 +41,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@GDI: PlayerReference@GDI:
@@ -52,7 +52,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI
@@ -60,7 +60,7 @@ Players:
PlayerReference@AbandonedBase: PlayerReference@AbandonedBase:
Name: AbandonedBase Name: AbandonedBase
NonCombatant: True NonCombatant: True
ColorRamp: 31,222,183 Color: F5D378
Faction: gdi Faction: gdi
PlayerReference@Neutral: PlayerReference@Neutral:
Name: Neutral Name: Neutral

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -40,7 +40,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Enemies: GDI, AbandonedBase Enemies: GDI, AbandonedBase
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
@@ -50,7 +50,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: Nod Enemies: Nod
@@ -59,12 +59,12 @@ Players:
OwnsWorld: True OwnsWorld: True
NonCombatant: True NonCombatant: True
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
PlayerReference@AbandonedBase: PlayerReference@AbandonedBase:
Name: AbandonedBase Name: AbandonedBase
NonCombatant: True NonCombatant: True
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Enemies: Nod Enemies: Nod
Actors: Actors:

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -24,10 +24,6 @@ Videos:
GameWon: sabotage.vqa GameWon: sabotage.vqa
GameLost: gdilose.vqa GameLost: gdilose.vqa
Music:
rain-ambient: Rain (ambient)
Hidden: true
Options: Options:
Crates: False Crates: False
Creeps: False Creeps: False
@@ -50,7 +46,7 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI Enemies: GDI
PlayerReference@GDI: PlayerReference@GDI:
@@ -61,7 +57,7 @@ Players:
LockFaction: True LockFaction: True
Faction: gdi Faction: gdi
LockColor: True LockColor: True
ColorRamp: 31,222,183 Color: F5D378
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: GDI Allies: GDI
@@ -1066,7 +1062,7 @@ Rules:
SwingOffset: 0, 0 SwingOffset: 0, 0
SwingSpeed: 0, 0 SwingSpeed: 0, 0
SwingAmplitude: 0, 0 SwingAmplitude: 0, 0
ParticleColors: 255,48,64,116, 255,40,56,108, 255,32,44,96, 255,24,44,84 ParticleColors: 304074, 28386C, 202C60, 182C54
LineTailAlphaValue: 150 LineTailAlphaValue: 150
GlobalLightingPaletteEffect: GlobalLightingPaletteEffect:
Red: 0.75 Red: 0.75
@@ -1165,6 +1161,10 @@ Weapons:
Voices: Voices:
Music:
rain-ambient: Rain (ambient)
Hidden: true
Notifications: Notifications:
Translations: Translations:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -47,7 +47,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Allies: Villagers Allies: Villagers
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
@@ -58,7 +58,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI, Villagers Enemies: GDI, Villagers

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -39,7 +39,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
@@ -49,7 +49,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI Enemies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -39,7 +39,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Allies: GDI Allies: GDI
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
@@ -50,7 +50,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI Enemies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -44,7 +44,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Allies: GDI Allies: GDI
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
@@ -55,7 +55,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: Nod Allies: Nod

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -44,7 +44,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Allies: GDI Allies: GDI
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
@@ -55,7 +55,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: Nod Allies: Nod

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -47,7 +47,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
@@ -57,7 +57,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI Enemies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -37,7 +37,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Enemies: Nod Enemies: Nod
PlayerReference@Neutral: PlayerReference@Neutral:
Name: Neutral Name: Neutral
@@ -52,7 +52,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI Enemies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -40,7 +40,7 @@ Players:
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Allies: GDI Allies: GDI
Enemies: Nod Enemies: Nod
PlayerReference@Neutral: PlayerReference@Neutral:
@@ -56,7 +56,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Allies: Nod Allies: Nod

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -44,7 +44,7 @@ Players:
Name: GDI Name: GDI
Playable: False Playable: False
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
@@ -54,7 +54,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI Enemies: GDI

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -39,7 +39,7 @@ Players:
Name: GDI Name: GDI
Playable: False Playable: False
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Enemies: Nod Enemies: Nod
PlayerReference@Neutral: PlayerReference@Neutral:
Name: Neutral Name: Neutral
@@ -59,7 +59,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI, Civilians Enemies: GDI, Civilians

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -39,7 +39,7 @@ Players:
Name: GDI Name: GDI
Playable: False Playable: False
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Enemies: Nod Enemies: Nod
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
@@ -49,7 +49,7 @@ Players:
LockFaction: True LockFaction: True
Faction: nod Faction: nod
LockColor: True LockColor: True
ColorRamp: 3,255,127 Color: FE1100
LockSpawn: True LockSpawn: True
LockTeam: True LockTeam: True
Enemies: GDI Enemies: GDI

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc
@@ -26,13 +26,13 @@ Players:
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Faction: nod Faction: nod
ColorRamp: 3,255,127 Color: FE1100
Allies: Nod Allies: Nod
Enemies: GDI, Creeps Enemies: GDI, Creeps
PlayerReference@GDI: PlayerReference@GDI:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
ColorRamp: 31,222,183 Color: F5D378
Allies: GDI Allies: GDI
Enemies: Nod, Creeps Enemies: Nod, Creeps
PlayerReference@Neutral: PlayerReference@Neutral:

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: cnc RequiresMod: cnc

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3,36 +3,37 @@
Metrics: Metrics:
ButtonDepth: 0 ButtonDepth: 0
ButtonFont: Bold ButtonFont: Bold
ButtonTextColor: 255,255,255 ButtonTextColor: FFFFFF
ButtonTextColorDisabled: 128,128,128 ButtonTextColorDisabled: 808080
ButtonTextContrast: false ButtonTextContrast: false
ButtonTextContrastColor: 0,0,0 ButtonTextContrastColor: 000000
ButtonBaseLine: 0 ButtonBaseLine: 0
CheckboxPressedState: true CheckboxPressedState: true
HotkeyFont: Regular HotkeyFont: Regular
HotkeyColor: 255,255,255 HotkeyColor: FFFFFF
HotkeyColorDisabled: 128,128,128 HotkeyColorDisabled: 808080
TextfieldFont: Regular TextfieldFont: Regular
TextfieldColor: 255,255,255 TextfieldColor: FFFFFF
TextfieldColorDisabled: 128,128,128 TextfieldColorDisabled: 808080
TextfieldColorInvalid: 255,192,192 TextfieldColorInvalid: FFC0C0
TextFont: Regular TextFont: Regular
TextColor: 255,255,255 TextColor: FFFFFF
TextContrast: false TextContrast: false
TextContrastColor: 0,0,0 TextContrastColor: 000000
ColorPickerRemapIndices: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190 ColorPickerRemapIndices: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190
ColorPickerActorType: ^fact.colorpicker ColorPickerActorType: ^fact.colorpicker
SpawnFont: TinyBold SpawnFont: TinyBold
SpawnColor: 255,255,255 SpawnColor: FFFFFF
SpawnContrastColor: 0,0,0 SpawnContrastColor: 000000
SpawnLabelOffset: 0,1 SpawnLabelOffset: 0,1
IncompatibleVersionColor: 255,0,0 IncompatibleVersionColor: FF0000
IncompatibleGameColor: 169,169,169 IncompatibleGameColor: A9A9A9
ProtectedGameColor: 255,0,0 ProtectedGameColor: FF0000
IncompatibleProtectedGameColor: 139,0,0 IncompatibleProtectedGameColor: 8B0000
WaitingGameColor: 0,255,0 WaitingGameColor: 00FF00
IncompatibleWaitingGameColor: 50,205,50 IncompatibleWaitingGameColor: 32CD32
GameStartedColor: 255,165,0 GameStartedColor: FFA500
IncompatibleGameStartedColor: 210,105,30 IncompatibleGameStartedColor: D2691E
GlobalChatTextColor: 255,255,255 GlobalChatTextColor: FFFFFF
GlobalChatNotificationColor: 211,211,211 GlobalChatNotificationColor: D3D3D3

View File

@@ -62,7 +62,7 @@
FixedColorPalette@BlueTiberium: FixedColorPalette@BlueTiberium:
Base: terrain Base: terrain
Name: bluetiberium Name: bluetiberium
Color: 152, 255, 196 Color: 89BAFF
RemapIndex: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190 RemapIndex: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190
PlayerColorPalette: PlayerColorPalette:
BasePalette: terrain BasePalette: terrain

View File

@@ -8,54 +8,54 @@ Terrain:
TerrainType@Beach: TerrainType@Beach:
Type: Beach Type: Beach
TargetTypes: Ground TargetTypes: Ground
Color: 255,176,156,120 Color: B09C78
TerrainType@BlueTiberium: TerrainType@BlueTiberium:
Type: BlueTiberium Type: BlueTiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,84,252,252 Color: 54FCFC
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,134,95,69 Color: 865F45
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
Color: 255,111,132,139 Color: 6F848B
TerrainType@Road: TerrainType@Road:
Type: Road Type: Road
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,168,123,83 Color: A87B53
TerrainType@Rock: TerrainType@Rock:
Type: Rock Type: Rock
TargetTypes: Ground TargetTypes: Ground
Color: 255,116,90,63 Color: 745A3F
TerrainType@Rough: TerrainType@Rough:
Type: Rough Type: Rough
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,68,68,60 Color: 44443C
TerrainType@Tiberium: TerrainType@Tiberium:
Type: Tiberium Type: Tiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,161,226,28 Color: A1E21C
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
Color: 255,28,32,36 Color: 1C2024
TerrainType@Wall: TerrainType@Wall:
Type: Wall Type: Wall
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,208,192,160 Color: D0C0A0
TerrainType@Water: TerrainType@Water:
Type: Water Type: Water
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 255,93,165,206 Color: 5DA5CE
Templates: Templates:
Template@255: Template@255:

View File

@@ -8,54 +8,54 @@ Terrain:
TerrainType@Beach: TerrainType@Beach:
Type: Beach Type: Beach
TargetTypes: Ground TargetTypes: Ground
Color: 255,176,156,120 Color: B09C78
TerrainType@BlueTiberium: TerrainType@BlueTiberium:
Type: BlueTiberium Type: BlueTiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,84,252,252 Color: 54FCFC
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,40,92,48 Color: 285C30
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
Color: 255,92,140,180 Color: 5C8CB4
TerrainType@Road: TerrainType@Road:
Type: Road Type: Road
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,84,64,49 Color: 544031
TerrainType@Rock: TerrainType@Rock:
Type: Rock Type: Rock
TargetTypes: Ground TargetTypes: Ground
Color: 255,191,199,196 Color: BFC7C4
TerrainType@Rough: TerrainType@Rough:
Type: Rough Type: Rough
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,68,68,60 Color: 44443C
TerrainType@Tiberium: TerrainType@Tiberium:
Type: Tiberium Type: Tiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,161,226,28 Color: A1E21C
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
Color: 255,28,32,36 Color: 1C2024
TerrainType@Wall: TerrainType@Wall:
Type: Wall Type: Wall
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,208,192,160 Color: D0C0A0
TerrainType@Water: TerrainType@Water:
Type: Water Type: Water
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 255,92,116,164 Color: 5C74A4
Templates: Templates:
Template@255: Template@255:

View File

@@ -8,54 +8,54 @@ Terrain:
TerrainType@Beach: TerrainType@Beach:
Type: Beach Type: Beach
TargetTypes: Ground TargetTypes: Ground
Color: 255,176,156,120 Color: B09C78
TerrainType@BlueTiberium: TerrainType@BlueTiberium:
Type: BlueTiberium Type: BlueTiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,84,252,252 Color: 54FCFC
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,196,196,196 Color: C4C4C4
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
Color: 255,92,140,180 Color: 5C8CB4
TerrainType@Road: TerrainType@Road:
Type: Road Type: Road
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,88,116,116 Color: 587474
TerrainType@Rock: TerrainType@Rock:
Type: Rock Type: Rock
TargetTypes: Ground TargetTypes: Ground
Color: 255,68,68,60 Color: 44443C
TerrainType@Rough: TerrainType@Rough:
Type: Rough Type: Rough
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,68,68,60 Color: 44443C
TerrainType@Tiberium: TerrainType@Tiberium:
Type: Tiberium Type: Tiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,161,226,28 Color: A1E21C
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
Color: 255,28,32,36 Color: 1C2024
TerrainType@Wall: TerrainType@Wall:
Type: Wall Type: Wall
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,208,192,160 Color: D0C0A0
TerrainType@Water: TerrainType@Water:
Type: Water Type: Water
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 255,92,116,164 Color: 5C74A4
Templates: Templates:
Template@255: Template@255:

View File

@@ -8,54 +8,54 @@ Terrain:
TerrainType@Beach: TerrainType@Beach:
Type: Beach Type: Beach
TargetTypes: Ground TargetTypes: Ground
Color: 255,176,156,120 Color: B09C78
TerrainType@BlueTiberium: TerrainType@BlueTiberium:
Type: BlueTiberium Type: BlueTiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,84,252,252 Color: 54FCFC
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,40,68,40 Color: 284428
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
Color: 255,92,140,180 Color: 5C8CB4
TerrainType@Road: TerrainType@Road:
Type: Road Type: Road
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,88,116,116 Color: 587474
TerrainType@Rock: TerrainType@Rock:
Type: Rock Type: Rock
TargetTypes: Ground TargetTypes: Ground
Color: 255,68,68,60 Color: 44443C
TerrainType@Rough: TerrainType@Rough:
Type: Rough Type: Rough
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,68,68,60 Color: 44443C
TerrainType@Tiberium: TerrainType@Tiberium:
Type: Tiberium Type: Tiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,161,226,28 Color: A1E21C
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
Color: 255,28,32,36 Color: 1C2024
TerrainType@Wall: TerrainType@Wall:
Type: Wall Type: Wall
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,208,192,160 Color: D0C0A0
TerrainType@Water: TerrainType@Water:
Type: Water Type: Water
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 255,92,116,164 Color: 5C74A4
Templates: Templates:
Template@255: Template@255:

View File

@@ -8,54 +8,54 @@ Terrain:
TerrainType@Beach: TerrainType@Beach:
Type: Beach Type: Beach
TargetTypes: Ground TargetTypes: Ground
Color: 255,176,156,120 Color: B09C78
TerrainType@BlueTiberium: TerrainType@BlueTiberium:
Type: BlueTiberium Type: BlueTiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,84,252,252 Color: 54FCFC
TerrainType@Clear: TerrainType@Clear:
Type: Clear Type: Clear
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,40,68,40 Color: 284428
TerrainType@River: TerrainType@River:
Type: River Type: River
TargetTypes: Ground TargetTypes: Ground
Color: 255,92,140,180 Color: 5C8CB4
TerrainType@Road: TerrainType@Road:
Type: Road Type: Road
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,88,116,116 Color: 587474
TerrainType@Rock: TerrainType@Rock:
Type: Rock Type: Rock
TargetTypes: Ground TargetTypes: Ground
Color: 255,68,68,60 Color: 44443C
TerrainType@Rough: TerrainType@Rough:
Type: Rough Type: Rough
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,68,68,60 Color: 44443C
TerrainType@Tiberium: TerrainType@Tiberium:
Type: Tiberium Type: Tiberium
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,161,226,28 Color: A1E21C
TerrainType@Tree: TerrainType@Tree:
Type: Tree Type: Tree
TargetTypes: Ground TargetTypes: Ground
Color: 255,28,32,36 Color: 1C2024
TerrainType@Wall: TerrainType@Wall:
Type: Wall Type: Wall
TargetTypes: Ground TargetTypes: Ground
AcceptsSmudgeType: Crater, Scorch AcceptsSmudgeType: Crater, Scorch
Color: 255,208,192,160 Color: D0C0A0
TerrainType@Water: TerrainType@Water:
Type: Water Type: Water
TargetTypes: Water TargetTypes: Water
IsWater: True IsWater: True
Color: 255,92,116,164 Color: 5C74A4
Templates: Templates:
Template@255: Template@255:

View File

@@ -1,5 +1,5 @@
Container@SKIRMISH_STATS: Container@SKIRMISH_STATS:
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Width: PARENT_RIGHT Width: PARENT_RIGHT
Logic: GameInfoStatsLogic Logic: GameInfoStatsLogic
Children: Children:
@@ -24,7 +24,7 @@ Container@SKIRMISH_STATS:
Font: Bold Font: Bold
Text: Destroy all opposition! Text: Destroy all opposition!
Disabled: yes Disabled: yes
TextColorDisabled: 255,255,255 TextColorDisabled: FFFFFF
Container@STATS_HEADERS: Container@STATS_HEADERS:
X: 22 X: 22
Y: 80 Y: 80

View File

@@ -23,7 +23,7 @@ Background@BUTTON_TOOLTIP:
Visible: false Visible: false
Y: 3 Y: 3
Height: 23 Height: 23
TextColor: 255,255,0 TextColor: FFFF00
Font: Bold Font: Bold
Background@WORLD_TOOLTIP: Background@WORLD_TOOLTIP:
@@ -128,7 +128,7 @@ Background@PRODUCTION_TOOLTIP:
Visible: false Visible: false
Y: 2 Y: 2
Height: 23 Height: 23
TextColor: 255,255,0 TextColor: FFFF00
Font: Bold Font: Bold
Label@REQUIRES: Label@REQUIRES:
X: 7 X: 7
@@ -185,7 +185,7 @@ Background@SUPPORT_POWER_TOOLTIP:
Visible: false Visible: false
Y: 2 Y: 2
Height: 23 Height: 23
TextColor: 255,255,0 TextColor: FFFF00
Font: Bold Font: Bold
Label@TIME: Label@TIME:
Y: 9 Y: 9
@@ -215,3 +215,4 @@ Background@FACTION_DESCRIPTION_TOOLTIP:
Height: 14 Height: 14
Font: TinyBold Font: TinyBold
VAlign: Top VAlign: Top

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: d2k RequiresMod: d2k
@@ -50,14 +50,14 @@ Players:
Playable: true Playable: true
Faction: atreides Faction: atreides
LockFaction: true LockFaction: true
ColorRamp: 170,255,200 Color: 9191FF
LockColor: true LockColor: true
Enemies: Harkonnen, Creeps Enemies: Harkonnen, Creeps
PlayerReference@Harkonnen: PlayerReference@Harkonnen:
Name: Harkonnen Name: Harkonnen
Faction: harkonnen Faction: harkonnen
LockFaction: true LockFaction: true
ColorRamp: 0,255,127 Color: FE0000
LockColor: true LockColor: true
Enemies: Atreides, Creeps Enemies: Atreides, Creeps

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: d2k RequiresMod: d2k
@@ -50,14 +50,14 @@ Players:
Playable: true Playable: true
Faction: atreides Faction: atreides
LockFaction: true LockFaction: true
ColorRamp: 170,255,200 Color: 9191FF
LockColor: true LockColor: true
Enemies: Harkonnen, Creeps Enemies: Harkonnen, Creeps
PlayerReference@Harkonnen: PlayerReference@Harkonnen:
Name: Harkonnen Name: Harkonnen
Faction: harkonnen Faction: harkonnen
LockFaction: true LockFaction: true
ColorRamp: 0,255,127 Color: FE0000
LockColor: true LockColor: true
Enemies: Atreides, Creeps Enemies: Atreides, Creeps

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: d2k RequiresMod: d2k
@@ -49,14 +49,14 @@ Players:
LockFaction: True LockFaction: True
Faction: atreides Faction: atreides
LockColor: True LockColor: True
ColorRamp: 170,255,200 Color: 9191FF
Enemies: Harkonnen, Creeps Enemies: Harkonnen, Creeps
PlayerReference@Harkonnen: PlayerReference@Harkonnen:
Name: Harkonnen Name: Harkonnen
LockFaction: True LockFaction: True
Faction: harkonnen Faction: harkonnen
LockColor: True LockColor: True
ColorRamp: 0,255,127 Color: FE0000
Enemies: Atreides, Creeps Enemies: Atreides, Creeps
Actors: Actors:

View File

@@ -1,4 +1,4 @@
MapFormat: 7 MapFormat: 8
RequiresMod: d2k RequiresMod: d2k
@@ -49,14 +49,14 @@ Players:
LockFaction: True LockFaction: True
Faction: atreides Faction: atreides
LockColor: True LockColor: True
ColorRamp: 170,255,200 Color: 9191FF
Enemies: Harkonnen, Creeps Enemies: Harkonnen, Creeps
PlayerReference@Harkonnen: PlayerReference@Harkonnen:
Name: Harkonnen Name: Harkonnen
LockFaction: True LockFaction: True
Faction: harkonnen Faction: harkonnen
LockColor: True LockColor: True
ColorRamp: 0,255,127 Color: FE0000
Enemies: Atreides, Creeps Enemies: Atreides, Creeps
Actors: Actors:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More