Merge pull request #9324 from atlimit8/ColorSpacePrefixes
Hex Color Parsing
This commit is contained in:
@@ -212,21 +212,9 @@ namespace OpenRA
|
||||
}
|
||||
else if (fieldType == typeof(Color))
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
var parts = value.Split(',');
|
||||
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));
|
||||
}
|
||||
Color color;
|
||||
if (value != null && HSLColor.TryParseRGB(value, out color))
|
||||
return color;
|
||||
|
||||
return InvalidValueAction(value, fieldType, fieldName);
|
||||
}
|
||||
@@ -235,20 +223,11 @@ namespace OpenRA
|
||||
if (value != null)
|
||||
{
|
||||
var parts = value.Split(',');
|
||||
|
||||
if (parts.Length % 4 != 0)
|
||||
return InvalidValueAction(value, fieldType, fieldName);
|
||||
|
||||
var colors = new Color[parts.Length / 4];
|
||||
var colors = new Color[parts.Length];
|
||||
|
||||
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));
|
||||
}
|
||||
if (!HSLColor.TryParseRGB(parts[i], out colors[i]))
|
||||
return InvalidValueAction(value, fieldType, fieldName);
|
||||
|
||||
return colors;
|
||||
}
|
||||
@@ -259,9 +238,12 @@ namespace OpenRA
|
||||
{
|
||||
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)
|
||||
return new HSLColor(
|
||||
(byte)Exts.ParseIntegerInvariant(parts[0]).Clamp(0, 255),
|
||||
|
||||
@@ -16,6 +16,7 @@ using System.Drawing.Imaging;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using OpenRA.Graphics;
|
||||
|
||||
namespace OpenRA
|
||||
{
|
||||
@@ -73,14 +74,16 @@ namespace OpenRA
|
||||
|
||||
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))
|
||||
{
|
||||
var c = (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),
|
||||
((int)c.B).Clamp(0, 255));
|
||||
return HSLColor.ToHexString((Color)v);
|
||||
}
|
||||
|
||||
// HSLColor.ToString() does the wrong thing; force it to format as rgb[a] hex
|
||||
if (t == typeof(HSLColor))
|
||||
{
|
||||
return ((HSLColor)v).ToHexString();
|
||||
}
|
||||
|
||||
if (t == typeof(ImageFormat))
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#endregion
|
||||
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using OpenRA.Scripting;
|
||||
|
||||
namespace OpenRA.Graphics
|
||||
@@ -27,13 +28,17 @@ namespace OpenRA.Graphics
|
||||
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)
|
||||
{
|
||||
var c = 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);
|
||||
return new HSLColor(Color.FromArgb(r, g, b));
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
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 bool Equals(object obj)
|
||||
|
||||
@@ -344,6 +344,54 @@ namespace OpenRA
|
||||
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(() =>
|
||||
{
|
||||
var spawns = new List<CPos>();
|
||||
@@ -389,7 +437,7 @@ namespace OpenRA
|
||||
// The Uid is calculated from the data on-disk, so
|
||||
// format changes must be flushed to disk.
|
||||
// TODO: this isn't very nice
|
||||
if (MapFormat < 7)
|
||||
if (MapFormat < 8)
|
||||
Save(path);
|
||||
|
||||
Uid = ComputeHash();
|
||||
@@ -537,7 +585,7 @@ namespace OpenRA
|
||||
|
||||
public void Save(string toPath)
|
||||
{
|
||||
MapFormat = 7;
|
||||
MapFormat = 8;
|
||||
|
||||
var root = new List<MiniYamlNode>();
|
||||
var fields = new[]
|
||||
|
||||
@@ -28,10 +28,8 @@ namespace OpenRA
|
||||
public bool LockFaction = false;
|
||||
public string Faction;
|
||||
|
||||
// ColorRamp naming retained for backward compatibility
|
||||
public bool LockColor = false;
|
||||
public HSLColor ColorRamp = new HSLColor(0, 0, 238);
|
||||
public HSLColor Color { get { return ColorRamp; } set { ColorRamp = value; } }
|
||||
public HSLColor Color = new HSLColor(0, 0, 238);
|
||||
|
||||
public bool LockSpawn = false;
|
||||
public int Spawn = 0;
|
||||
|
||||
@@ -543,6 +543,7 @@
|
||||
<Compile Include="UtilityCommands\UpgradeMapCommand.cs" />
|
||||
<Compile Include="UtilityCommands\UpgradeModCommand.cs" />
|
||||
<Compile Include="UtilityCommands\UpgradeRules.cs" />
|
||||
<Compile Include="UtilityCommands\Rgba2Hex.cs" />
|
||||
<Compile Include="Warheads\CreateEffectWarhead.cs" />
|
||||
<Compile Include="Warheads\CreateResourceWarhead.cs" />
|
||||
<Compile Include="Warheads\DamageWarhead.cs" />
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#endregion
|
||||
|
||||
using System.Drawing;
|
||||
using Eluant;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Scripting;
|
||||
|
||||
@@ -30,11 +31,59 @@ namespace OpenRA.Mods.Common.Scripting.Global
|
||||
return new HSLColor(h, s, l);
|
||||
}
|
||||
|
||||
public HSLColor White { get { return HSLColor.FromRGB(Color.White.R, Color.White.G, Color.White.B); } }
|
||||
public HSLColor Black { get { return HSLColor.FromRGB(Color.Black.R, Color.Black.G, Color.Black.B); } }
|
||||
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); } }
|
||||
public HSLColor Yellow { get { return HSLColor.FromRGB(Color.Yellow.R, Color.Yellow.G, Color.Yellow.B); } }
|
||||
public HSLColor Green { get { return HSLColor.FromRGB(Color.Green.R, Color.Green.G, Color.Green.B); } }
|
||||
[Desc("Create a new HSL color with the specified red/green/blue/[alpha] values.")]
|
||||
public HSLColor FromRGB(int red, int green, int blue, int alpha = 255)
|
||||
{
|
||||
return new HSLColor(
|
||||
Color.FromArgb(
|
||||
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); } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ namespace OpenRA.Mods.Common.Server
|
||||
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))
|
||||
{
|
||||
|
||||
@@ -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.")]
|
||||
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 = {
|
||||
Color.FromArgb(255, 236, 236, 236),
|
||||
Color.FromArgb(255, 228, 228, 228),
|
||||
Color.FromArgb(255, 208, 208, 208),
|
||||
Color.FromArgb(255, 188, 188, 188)
|
||||
Color.FromArgb(236, 236, 236),
|
||||
Color.FromArgb(228, 228, 228),
|
||||
Color.FromArgb(208, 208, 208),
|
||||
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.")]
|
||||
|
||||
@@ -12,6 +12,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Traits;
|
||||
|
||||
namespace OpenRA.Mods.Common.UtilityCommands
|
||||
@@ -164,6 +165,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
if (t == typeof(WVec))
|
||||
return "3D World Vector";
|
||||
|
||||
if (t == typeof(HSLColor))
|
||||
return "Color";
|
||||
|
||||
return t.Name;
|
||||
}
|
||||
}
|
||||
|
||||
209
OpenRA.Mods.Common/UtilityCommands/Rgba2Hex.cs
Normal file
209
OpenRA.Mods.Common/UtilityCommands/Rgba2Hex.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,6 +76,28 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
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:");
|
||||
var maps = Game.ModData.MapCache
|
||||
.Where(m => m.Status == MapStatus.Available)
|
||||
|
||||
@@ -10,8 +10,10 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using OpenRA.Graphics;
|
||||
|
||||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -2764,6 +2847,12 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -2785,6 +2874,14 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
if (depth == 2 && node.Key == "Image")
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -2829,10 +2926,49 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
foreach (var node in nodes)
|
||||
|
||||
@@ -40,4 +40,5 @@ Container@MISSION_OBJECTIVES:
|
||||
Width: PARENT_RIGHT - 100
|
||||
Height: PARENT_BOTTOM
|
||||
Disabled: True
|
||||
TextColorDisabled: 255,255,255
|
||||
TextColorDisabled: FFFFFF
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Container@SKIRMISH_STATS:
|
||||
Height: PARENT_BOTTOM
|
||||
Height: PARENT_BOTTOM
|
||||
Width: PARENT_RIGHT
|
||||
Logic: GameInfoStatsLogic
|
||||
Children:
|
||||
@@ -24,7 +24,7 @@ Container@SKIRMISH_STATS:
|
||||
Font: Bold
|
||||
Text: Destroy all opposition!
|
||||
Disabled: yes
|
||||
TextColorDisabled: 255,255,255
|
||||
TextColorDisabled: FFFFFF
|
||||
Container@STATS_HEADERS:
|
||||
X: 17
|
||||
Y: 80
|
||||
|
||||
@@ -76,7 +76,7 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
|
||||
Width: 137
|
||||
Height: 20
|
||||
Text: Waiting
|
||||
TextColor: 50,205,50
|
||||
TextColor: 32CD32
|
||||
Font: Regular
|
||||
Checkbox@EMPTY:
|
||||
X: 5
|
||||
@@ -91,7 +91,7 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
|
||||
Width: 137
|
||||
Height: 20
|
||||
Text: Protected
|
||||
TextColor: 255,0,0
|
||||
TextColor: FF0000
|
||||
Font: Regular
|
||||
Checkbox@ALREADY_STARTED:
|
||||
X: 5
|
||||
@@ -99,7 +99,7 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
|
||||
Width: 137
|
||||
Height: 20
|
||||
Text: Started
|
||||
TextColor: 255,165,0
|
||||
TextColor: FFA500
|
||||
Font: Regular
|
||||
Checkbox@INCOMPATIBLE_VERSION:
|
||||
X: 5
|
||||
@@ -107,5 +107,6 @@ ScrollPanel@MULTIPLAYER_FILTER_PANEL:
|
||||
Width: 137
|
||||
Height: 20
|
||||
Text: Incompatible
|
||||
TextColor: 190,190,190
|
||||
Font: Regular
|
||||
TextColor: BEBEBE
|
||||
Font: Regular
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Background@BUTTON_TOOLTIP:
|
||||
Font: Bold
|
||||
Label@HOTKEY:
|
||||
Visible: false
|
||||
TextColor: 255,255,0
|
||||
TextColor: FFFF00
|
||||
Height: 23
|
||||
Font: Bold
|
||||
|
||||
@@ -64,7 +64,7 @@ Background@PRODUCTION_TOOLTIP:
|
||||
Label@HOTKEY:
|
||||
Visible: false
|
||||
Height: 23
|
||||
TextColor: 255,255,0
|
||||
TextColor: FFFF00
|
||||
Font: Bold
|
||||
Label@REQUIRES:
|
||||
X: 5
|
||||
@@ -119,7 +119,7 @@ Background@SUPPORT_POWER_TOOLTIP:
|
||||
Label@HOTKEY:
|
||||
Visible: false
|
||||
Height: 20
|
||||
TextColor: 255,255,0
|
||||
TextColor: FFFF00
|
||||
Font: Bold
|
||||
Label@TIME:
|
||||
Y: 6
|
||||
@@ -207,3 +207,4 @@ Background@FACTION_DESCRIPTION_TOOLTIP:
|
||||
Height: 14
|
||||
Font: TinyBold
|
||||
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.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -38,7 +38,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@GDI:
|
||||
@@ -49,7 +49,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -49,7 +49,7 @@ Players:
|
||||
Name: Dinosaur
|
||||
NonCombatant: True
|
||||
Faction: gdi
|
||||
ColorRamp: 14,119,96
|
||||
Color: 8C5033
|
||||
Enemies: Nod, Civilian
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
@@ -59,7 +59,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: Nod
|
||||
|
||||
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -40,7 +40,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@GDI:
|
||||
@@ -51,7 +51,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -43,7 +43,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
@@ -51,7 +51,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@Neutral:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -39,7 +39,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@Neutral:
|
||||
@@ -55,7 +55,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -40,7 +40,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@GDI:
|
||||
@@ -51,7 +51,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -40,7 +40,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@GDI:
|
||||
@@ -51,7 +51,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -45,7 +45,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI, Civillians
|
||||
PlayerReference@GDI:
|
||||
@@ -56,7 +56,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -41,7 +41,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@GDI:
|
||||
@@ -52,7 +52,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
@@ -60,7 +60,7 @@ Players:
|
||||
PlayerReference@AbandonedBase:
|
||||
Name: AbandonedBase
|
||||
NonCombatant: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Faction: gdi
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -40,7 +40,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Enemies: GDI, AbandonedBase
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
@@ -50,7 +50,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: Nod
|
||||
@@ -59,12 +59,12 @@ Players:
|
||||
OwnsWorld: True
|
||||
NonCombatant: True
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
PlayerReference@AbandonedBase:
|
||||
Name: AbandonedBase
|
||||
NonCombatant: True
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Enemies: Nod
|
||||
|
||||
Actors:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -24,10 +24,6 @@ Videos:
|
||||
GameWon: sabotage.vqa
|
||||
GameLost: gdilose.vqa
|
||||
|
||||
Music:
|
||||
rain-ambient: Rain (ambient)
|
||||
Hidden: true
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Creeps: False
|
||||
@@ -50,7 +46,7 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
PlayerReference@GDI:
|
||||
@@ -61,7 +57,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: gdi
|
||||
LockColor: True
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: GDI
|
||||
@@ -1066,7 +1062,7 @@ Rules:
|
||||
SwingOffset: 0, 0
|
||||
SwingSpeed: 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
|
||||
GlobalLightingPaletteEffect:
|
||||
Red: 0.75
|
||||
@@ -1165,6 +1161,10 @@ Weapons:
|
||||
|
||||
Voices:
|
||||
|
||||
Music:
|
||||
rain-ambient: Rain (ambient)
|
||||
Hidden: true
|
||||
|
||||
Notifications:
|
||||
|
||||
Translations:
|
||||
|
||||
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -47,7 +47,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Allies: Villagers
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
@@ -58,7 +58,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI, Villagers
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -39,7 +39,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
@@ -49,7 +49,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -39,7 +39,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Allies: GDI
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
@@ -50,7 +50,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -44,7 +44,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Allies: GDI
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
@@ -55,7 +55,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: Nod
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -44,7 +44,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Allies: GDI
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
@@ -55,7 +55,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: Nod
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -47,7 +47,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
@@ -57,7 +57,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -37,7 +37,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Enemies: Nod
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
@@ -52,7 +52,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -40,7 +40,7 @@ Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Allies: GDI
|
||||
Enemies: Nod
|
||||
PlayerReference@Neutral:
|
||||
@@ -56,7 +56,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: Nod
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -44,7 +44,7 @@ Players:
|
||||
Name: GDI
|
||||
Playable: False
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
@@ -54,7 +54,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -39,7 +39,7 @@ Players:
|
||||
Name: GDI
|
||||
Playable: False
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Enemies: Nod
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
@@ -59,7 +59,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI, Civilians
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -39,7 +39,7 @@ Players:
|
||||
Name: GDI
|
||||
Playable: False
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Enemies: Nod
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
@@ -49,7 +49,7 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Enemies: GDI
|
||||
|
||||
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.
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
@@ -26,13 +26,13 @@ Players:
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Faction: nod
|
||||
ColorRamp: 3,255,127
|
||||
Color: FE1100
|
||||
Allies: Nod
|
||||
Enemies: GDI, Creeps
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
ColorRamp: 31,222,183
|
||||
Color: F5D378
|
||||
Allies: GDI
|
||||
Enemies: Nod, Creeps
|
||||
PlayerReference@Neutral:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
|
||||
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.
@@ -3,36 +3,37 @@
|
||||
Metrics:
|
||||
ButtonDepth: 0
|
||||
ButtonFont: Bold
|
||||
ButtonTextColor: 255,255,255
|
||||
ButtonTextColorDisabled: 128,128,128
|
||||
ButtonTextColor: FFFFFF
|
||||
ButtonTextColorDisabled: 808080
|
||||
ButtonTextContrast: false
|
||||
ButtonTextContrastColor: 0,0,0
|
||||
ButtonTextContrastColor: 000000
|
||||
ButtonBaseLine: 0
|
||||
CheckboxPressedState: true
|
||||
HotkeyFont: Regular
|
||||
HotkeyColor: 255,255,255
|
||||
HotkeyColorDisabled: 128,128,128
|
||||
HotkeyColor: FFFFFF
|
||||
HotkeyColorDisabled: 808080
|
||||
TextfieldFont: Regular
|
||||
TextfieldColor: 255,255,255
|
||||
TextfieldColorDisabled: 128,128,128
|
||||
TextfieldColorInvalid: 255,192,192
|
||||
TextfieldColor: FFFFFF
|
||||
TextfieldColorDisabled: 808080
|
||||
TextfieldColorInvalid: FFC0C0
|
||||
TextFont: Regular
|
||||
TextColor: 255,255,255
|
||||
TextColor: FFFFFF
|
||||
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
|
||||
ColorPickerActorType: ^fact.colorpicker
|
||||
SpawnFont: TinyBold
|
||||
SpawnColor: 255,255,255
|
||||
SpawnContrastColor: 0,0,0
|
||||
SpawnColor: FFFFFF
|
||||
SpawnContrastColor: 000000
|
||||
SpawnLabelOffset: 0,1
|
||||
IncompatibleVersionColor: 255,0,0
|
||||
IncompatibleGameColor: 169,169,169
|
||||
ProtectedGameColor: 255,0,0
|
||||
IncompatibleProtectedGameColor: 139,0,0
|
||||
WaitingGameColor: 0,255,0
|
||||
IncompatibleWaitingGameColor: 50,205,50
|
||||
GameStartedColor: 255,165,0
|
||||
IncompatibleGameStartedColor: 210,105,30
|
||||
GlobalChatTextColor: 255,255,255
|
||||
GlobalChatNotificationColor: 211,211,211
|
||||
IncompatibleVersionColor: FF0000
|
||||
IncompatibleGameColor: A9A9A9
|
||||
ProtectedGameColor: FF0000
|
||||
IncompatibleProtectedGameColor: 8B0000
|
||||
WaitingGameColor: 00FF00
|
||||
IncompatibleWaitingGameColor: 32CD32
|
||||
GameStartedColor: FFA500
|
||||
IncompatibleGameStartedColor: D2691E
|
||||
GlobalChatTextColor: FFFFFF
|
||||
GlobalChatNotificationColor: D3D3D3
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
FixedColorPalette@BlueTiberium:
|
||||
Base: terrain
|
||||
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
|
||||
PlayerColorPalette:
|
||||
BasePalette: terrain
|
||||
|
||||
@@ -8,54 +8,54 @@ Terrain:
|
||||
TerrainType@Beach:
|
||||
Type: Beach
|
||||
TargetTypes: Ground
|
||||
Color: 255,176,156,120
|
||||
Color: B09C78
|
||||
TerrainType@BlueTiberium:
|
||||
Type: BlueTiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,84,252,252
|
||||
Color: 54FCFC
|
||||
TerrainType@Clear:
|
||||
Type: Clear
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,134,95,69
|
||||
Color: 865F45
|
||||
TerrainType@River:
|
||||
Type: River
|
||||
TargetTypes: Ground
|
||||
Color: 255,111,132,139
|
||||
Color: 6F848B
|
||||
TerrainType@Road:
|
||||
Type: Road
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,168,123,83
|
||||
Color: A87B53
|
||||
TerrainType@Rock:
|
||||
Type: Rock
|
||||
TargetTypes: Ground
|
||||
Color: 255,116,90,63
|
||||
Color: 745A3F
|
||||
TerrainType@Rough:
|
||||
Type: Rough
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Tiberium:
|
||||
Type: Tiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,161,226,28
|
||||
Color: A1E21C
|
||||
TerrainType@Tree:
|
||||
Type: Tree
|
||||
TargetTypes: Ground
|
||||
Color: 255,28,32,36
|
||||
Color: 1C2024
|
||||
TerrainType@Wall:
|
||||
Type: Wall
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,208,192,160
|
||||
Color: D0C0A0
|
||||
TerrainType@Water:
|
||||
Type: Water
|
||||
TargetTypes: Water
|
||||
IsWater: True
|
||||
Color: 255,93,165,206
|
||||
Color: 5DA5CE
|
||||
|
||||
Templates:
|
||||
Template@255:
|
||||
|
||||
@@ -8,54 +8,54 @@ Terrain:
|
||||
TerrainType@Beach:
|
||||
Type: Beach
|
||||
TargetTypes: Ground
|
||||
Color: 255,176,156,120
|
||||
Color: B09C78
|
||||
TerrainType@BlueTiberium:
|
||||
Type: BlueTiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,84,252,252
|
||||
Color: 54FCFC
|
||||
TerrainType@Clear:
|
||||
Type: Clear
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,40,92,48
|
||||
Color: 285C30
|
||||
TerrainType@River:
|
||||
Type: River
|
||||
TargetTypes: Ground
|
||||
Color: 255,92,140,180
|
||||
Color: 5C8CB4
|
||||
TerrainType@Road:
|
||||
Type: Road
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,84,64,49
|
||||
Color: 544031
|
||||
TerrainType@Rock:
|
||||
Type: Rock
|
||||
TargetTypes: Ground
|
||||
Color: 255,191,199,196
|
||||
Color: BFC7C4
|
||||
TerrainType@Rough:
|
||||
Type: Rough
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Tiberium:
|
||||
Type: Tiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,161,226,28
|
||||
Color: A1E21C
|
||||
TerrainType@Tree:
|
||||
Type: Tree
|
||||
TargetTypes: Ground
|
||||
Color: 255,28,32,36
|
||||
Color: 1C2024
|
||||
TerrainType@Wall:
|
||||
Type: Wall
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,208,192,160
|
||||
Color: D0C0A0
|
||||
TerrainType@Water:
|
||||
Type: Water
|
||||
TargetTypes: Water
|
||||
IsWater: True
|
||||
Color: 255,92,116,164
|
||||
Color: 5C74A4
|
||||
|
||||
Templates:
|
||||
Template@255:
|
||||
|
||||
@@ -8,54 +8,54 @@ Terrain:
|
||||
TerrainType@Beach:
|
||||
Type: Beach
|
||||
TargetTypes: Ground
|
||||
Color: 255,176,156,120
|
||||
Color: B09C78
|
||||
TerrainType@BlueTiberium:
|
||||
Type: BlueTiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,84,252,252
|
||||
Color: 54FCFC
|
||||
TerrainType@Clear:
|
||||
Type: Clear
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,196,196,196
|
||||
Color: C4C4C4
|
||||
TerrainType@River:
|
||||
Type: River
|
||||
TargetTypes: Ground
|
||||
Color: 255,92,140,180
|
||||
Color: 5C8CB4
|
||||
TerrainType@Road:
|
||||
Type: Road
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,88,116,116
|
||||
Color: 587474
|
||||
TerrainType@Rock:
|
||||
Type: Rock
|
||||
TargetTypes: Ground
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Rough:
|
||||
Type: Rough
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Tiberium:
|
||||
Type: Tiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,161,226,28
|
||||
Color: A1E21C
|
||||
TerrainType@Tree:
|
||||
Type: Tree
|
||||
TargetTypes: Ground
|
||||
Color: 255,28,32,36
|
||||
Color: 1C2024
|
||||
TerrainType@Wall:
|
||||
Type: Wall
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,208,192,160
|
||||
Color: D0C0A0
|
||||
TerrainType@Water:
|
||||
Type: Water
|
||||
TargetTypes: Water
|
||||
IsWater: True
|
||||
Color: 255,92,116,164
|
||||
Color: 5C74A4
|
||||
|
||||
Templates:
|
||||
Template@255:
|
||||
|
||||
@@ -8,54 +8,54 @@ Terrain:
|
||||
TerrainType@Beach:
|
||||
Type: Beach
|
||||
TargetTypes: Ground
|
||||
Color: 255,176,156,120
|
||||
Color: B09C78
|
||||
TerrainType@BlueTiberium:
|
||||
Type: BlueTiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,84,252,252
|
||||
Color: 54FCFC
|
||||
TerrainType@Clear:
|
||||
Type: Clear
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,40,68,40
|
||||
Color: 284428
|
||||
TerrainType@River:
|
||||
Type: River
|
||||
TargetTypes: Ground
|
||||
Color: 255,92,140,180
|
||||
Color: 5C8CB4
|
||||
TerrainType@Road:
|
||||
Type: Road
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,88,116,116
|
||||
Color: 587474
|
||||
TerrainType@Rock:
|
||||
Type: Rock
|
||||
TargetTypes: Ground
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Rough:
|
||||
Type: Rough
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Tiberium:
|
||||
Type: Tiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,161,226,28
|
||||
Color: A1E21C
|
||||
TerrainType@Tree:
|
||||
Type: Tree
|
||||
TargetTypes: Ground
|
||||
Color: 255,28,32,36
|
||||
Color: 1C2024
|
||||
TerrainType@Wall:
|
||||
Type: Wall
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,208,192,160
|
||||
Color: D0C0A0
|
||||
TerrainType@Water:
|
||||
Type: Water
|
||||
TargetTypes: Water
|
||||
IsWater: True
|
||||
Color: 255,92,116,164
|
||||
Color: 5C74A4
|
||||
|
||||
Templates:
|
||||
Template@255:
|
||||
|
||||
@@ -8,54 +8,54 @@ Terrain:
|
||||
TerrainType@Beach:
|
||||
Type: Beach
|
||||
TargetTypes: Ground
|
||||
Color: 255,176,156,120
|
||||
Color: B09C78
|
||||
TerrainType@BlueTiberium:
|
||||
Type: BlueTiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,84,252,252
|
||||
Color: 54FCFC
|
||||
TerrainType@Clear:
|
||||
Type: Clear
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,40,68,40
|
||||
Color: 284428
|
||||
TerrainType@River:
|
||||
Type: River
|
||||
TargetTypes: Ground
|
||||
Color: 255,92,140,180
|
||||
Color: 5C8CB4
|
||||
TerrainType@Road:
|
||||
Type: Road
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,88,116,116
|
||||
Color: 587474
|
||||
TerrainType@Rock:
|
||||
Type: Rock
|
||||
TargetTypes: Ground
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Rough:
|
||||
Type: Rough
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,68,68,60
|
||||
Color: 44443C
|
||||
TerrainType@Tiberium:
|
||||
Type: Tiberium
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,161,226,28
|
||||
Color: A1E21C
|
||||
TerrainType@Tree:
|
||||
Type: Tree
|
||||
TargetTypes: Ground
|
||||
Color: 255,28,32,36
|
||||
Color: 1C2024
|
||||
TerrainType@Wall:
|
||||
Type: Wall
|
||||
TargetTypes: Ground
|
||||
AcceptsSmudgeType: Crater, Scorch
|
||||
Color: 255,208,192,160
|
||||
Color: D0C0A0
|
||||
TerrainType@Water:
|
||||
Type: Water
|
||||
TargetTypes: Water
|
||||
IsWater: True
|
||||
Color: 255,92,116,164
|
||||
Color: 5C74A4
|
||||
|
||||
Templates:
|
||||
Template@255:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Container@SKIRMISH_STATS:
|
||||
Height: PARENT_BOTTOM
|
||||
Height: PARENT_BOTTOM
|
||||
Width: PARENT_RIGHT
|
||||
Logic: GameInfoStatsLogic
|
||||
Children:
|
||||
@@ -24,7 +24,7 @@ Container@SKIRMISH_STATS:
|
||||
Font: Bold
|
||||
Text: Destroy all opposition!
|
||||
Disabled: yes
|
||||
TextColorDisabled: 255,255,255
|
||||
TextColorDisabled: FFFFFF
|
||||
Container@STATS_HEADERS:
|
||||
X: 22
|
||||
Y: 80
|
||||
|
||||
@@ -23,7 +23,7 @@ Background@BUTTON_TOOLTIP:
|
||||
Visible: false
|
||||
Y: 3
|
||||
Height: 23
|
||||
TextColor: 255,255,0
|
||||
TextColor: FFFF00
|
||||
Font: Bold
|
||||
|
||||
Background@WORLD_TOOLTIP:
|
||||
@@ -128,7 +128,7 @@ Background@PRODUCTION_TOOLTIP:
|
||||
Visible: false
|
||||
Y: 2
|
||||
Height: 23
|
||||
TextColor: 255,255,0
|
||||
TextColor: FFFF00
|
||||
Font: Bold
|
||||
Label@REQUIRES:
|
||||
X: 7
|
||||
@@ -185,7 +185,7 @@ Background@SUPPORT_POWER_TOOLTIP:
|
||||
Visible: false
|
||||
Y: 2
|
||||
Height: 23
|
||||
TextColor: 255,255,0
|
||||
TextColor: FFFF00
|
||||
Font: Bold
|
||||
Label@TIME:
|
||||
Y: 9
|
||||
@@ -215,3 +215,4 @@ Background@FACTION_DESCRIPTION_TOOLTIP:
|
||||
Height: 14
|
||||
Font: TinyBold
|
||||
VAlign: Top
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: d2k
|
||||
|
||||
@@ -50,14 +50,14 @@ Players:
|
||||
Playable: true
|
||||
Faction: atreides
|
||||
LockFaction: true
|
||||
ColorRamp: 170,255,200
|
||||
Color: 9191FF
|
||||
LockColor: true
|
||||
Enemies: Harkonnen, Creeps
|
||||
PlayerReference@Harkonnen:
|
||||
Name: Harkonnen
|
||||
Faction: harkonnen
|
||||
LockFaction: true
|
||||
ColorRamp: 0,255,127
|
||||
Color: FE0000
|
||||
LockColor: true
|
||||
Enemies: Atreides, Creeps
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: d2k
|
||||
|
||||
@@ -50,14 +50,14 @@ Players:
|
||||
Playable: true
|
||||
Faction: atreides
|
||||
LockFaction: true
|
||||
ColorRamp: 170,255,200
|
||||
Color: 9191FF
|
||||
LockColor: true
|
||||
Enemies: Harkonnen, Creeps
|
||||
PlayerReference@Harkonnen:
|
||||
Name: Harkonnen
|
||||
Faction: harkonnen
|
||||
LockFaction: true
|
||||
ColorRamp: 0,255,127
|
||||
Color: FE0000
|
||||
LockColor: true
|
||||
Enemies: Atreides, Creeps
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: d2k
|
||||
|
||||
@@ -49,14 +49,14 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: atreides
|
||||
LockColor: True
|
||||
ColorRamp: 170,255,200
|
||||
Color: 9191FF
|
||||
Enemies: Harkonnen, Creeps
|
||||
PlayerReference@Harkonnen:
|
||||
Name: Harkonnen
|
||||
LockFaction: True
|
||||
Faction: harkonnen
|
||||
LockColor: True
|
||||
ColorRamp: 0,255,127
|
||||
Color: FE0000
|
||||
Enemies: Atreides, Creeps
|
||||
|
||||
Actors:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MapFormat: 7
|
||||
MapFormat: 8
|
||||
|
||||
RequiresMod: d2k
|
||||
|
||||
@@ -49,14 +49,14 @@ Players:
|
||||
LockFaction: True
|
||||
Faction: atreides
|
||||
LockColor: True
|
||||
ColorRamp: 170,255,200
|
||||
Color: 9191FF
|
||||
Enemies: Harkonnen, Creeps
|
||||
PlayerReference@Harkonnen:
|
||||
Name: Harkonnen
|
||||
LockFaction: True
|
||||
Faction: harkonnen
|
||||
LockColor: True
|
||||
ColorRamp: 0,255,127
|
||||
Color: FE0000
|
||||
Enemies: Atreides, Creeps
|
||||
|
||||
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
Reference in New Issue
Block a user