Replace ColorRamp with HSLColor everywhere.

Fixes:
* Nuclear-purple color exploit.
* #3247.
* Removes a bunch of unnecessary color conversions every frame.

Caveats:
* The ramp range is now defined on the palette, so ramps can no longer be set per-player (may impact maps which define custom colors).
* It's no longer possible to perfectly recreate the original WW color ramps (I doubt we care).
* The old ColorRamp setting isn't migrated, so players will lose their color settings.
This commit is contained in:
Paul Chote
2013-05-10 17:14:22 +12:00
parent abcc30f0b7
commit 656476991f
41 changed files with 112 additions and 168 deletions

View File

@@ -107,20 +107,20 @@ namespace OpenRA.Mods.RA.Widgets.Logic
{
if (client.Bot == null)
{
Game.Settings.Player.ColorRamp = preview.Ramp;
Game.Settings.Player.Color = preview.Color;
Game.Settings.Save();
}
color.RemovePanel();
orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, preview.Ramp)));
orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, preview.Color)));
};
Action<HSLColor> onChange = c => preview.Ramp = new ColorRamp(c, 10);
Action<HSLColor> onChange = c => preview.Color = c;
var colorChooser = Game.LoadWidget(orderManager.world, "COLOR_CHOOSER", null, new WidgetArgs()
{
{ "onChange", onChange },
{ "initialColor", client.ColorRamp.Color }
{ "initialColor", client.Color }
});
color.AttachPanel(colorChooser, onExit);
@@ -282,7 +282,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
public static void SetupColorWidget(Widget parent, Session.Slot s, Session.Client c)
{
var color = parent.Get<ColorBlockWidget>("COLORBLOCK");
color.GetColor = () => c.ColorRamp.GetColor(0);
color.GetColor = () => c.Color.RGB;
}
public static void SetupEditableFactionWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, Dictionary<string,string> countryNames)