Refer to editor marker tiles by their color.
This commit is contained in:
committed by
Gustas Kažukauskas
parent
994eddd46f
commit
831cce2f9c
@@ -163,9 +163,13 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
this.paintTiles = paintTiles;
|
||||
this.markerLayerOverlay = markerLayerOverlay;
|
||||
|
||||
Text = type != null
|
||||
? FluentProvider.GetMessage(AddedMarkerTiles, "count", paintTiles.Length, "type", type)
|
||||
: FluentProvider.GetMessage(RemovedMarkerTiles, "count", paintTiles.Length);
|
||||
if (type != null)
|
||||
{
|
||||
var typeLabel = FluentProvider.GetMessage(markerLayerOverlay.Info.Colors.ElementAt(type.Value).Key);
|
||||
Text = FluentProvider.GetMessage(AddedMarkerTiles, "count", paintTiles.Length, "type", typeLabel);
|
||||
}
|
||||
else
|
||||
Text = FluentProvider.GetMessage(RemovedMarkerTiles, "count", paintTiles.Length);
|
||||
}
|
||||
|
||||
public void Execute() { }
|
||||
@@ -202,7 +206,8 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
this.markerLayerOverlay = markerLayerOverlay;
|
||||
|
||||
tiles = markerLayerOverlay.Tiles[tile].ToImmutableArray();
|
||||
Text = FluentProvider.GetMessage(ClearedSelectedMarkerTiles, "count", tiles.Length, "type", tile);
|
||||
var typeLabel = FluentProvider.GetMessage(markerLayerOverlay.Info.Colors.ElementAt(tile).Key);
|
||||
Text = FluentProvider.GetMessage(ClearedSelectedMarkerTiles, "count", tiles.Length, "type", typeLabel);
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
|
||||
@@ -31,18 +31,19 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Desc("The widget tree to open when the tool is selected.")]
|
||||
public readonly string PanelWidget = "MARKER_TOOL_PANEL";
|
||||
|
||||
[FluentReference(LintDictionaryReference.Keys)]
|
||||
[Desc("A list of colors to be used for drawing.")]
|
||||
public readonly Color[] Colors =
|
||||
[
|
||||
Color.FromArgb(255, 0, 0),
|
||||
Color.FromArgb(255, 127, 0),
|
||||
Color.FromArgb(255, 238, 70),
|
||||
Color.FromArgb(0, 255, 33),
|
||||
Color.FromArgb(0, 255, 255),
|
||||
Color.FromArgb(0, 42, 255),
|
||||
Color.FromArgb(165, 0, 255),
|
||||
Color.FromArgb(255, 0, 220),
|
||||
];
|
||||
public readonly Dictionary<string, Color> Colors = new()
|
||||
{
|
||||
{ "notification-added-marker-tiles-markers.red", Color.FromArgb(255, 0, 0) },
|
||||
{ "notification-added-marker-tiles-markers.orange", Color.FromArgb(255, 127, 0) },
|
||||
{ "notification-added-marker-tiles-markers.yellow", Color.FromArgb(255, 238, 70) },
|
||||
{ "notification-added-marker-tiles-markers.green", Color.FromArgb(0, 255, 33) },
|
||||
{ "notification-added-marker-tiles-markers.cyan", Color.FromArgb(0, 255, 255) },
|
||||
{ "notification-added-marker-tiles-markers.blue", Color.FromArgb(0, 42, 255) },
|
||||
{ "notification-added-marker-tiles-markers.purple", Color.FromArgb(165, 0, 255) },
|
||||
{ "notification-added-marker-tiles-markers.magenta", Color.FromArgb(255, 0, 220) }
|
||||
};
|
||||
|
||||
[Desc("Default alpha blend.")]
|
||||
public readonly int Alpha = 85;
|
||||
@@ -139,7 +140,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
PanelWidget = info.PanelWidget;
|
||||
|
||||
tileAlpha = info.Alpha;
|
||||
alphaBlendColors = new Color[info.Colors.Length];
|
||||
alphaBlendColors = new Color[info.Colors.Count];
|
||||
UpdateTileAlpha();
|
||||
|
||||
CellLayer = new CellLayer<int?>(map);
|
||||
@@ -184,8 +185,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void UpdateTileAlpha()
|
||||
{
|
||||
for (var i = 0; i < Info.Colors.Length; i++)
|
||||
alphaBlendColors[i] = Color.FromArgb(tileAlpha, Info.Colors[i]);
|
||||
for (var i = 0; i < Info.Colors.Count; i++)
|
||||
alphaBlendColors[i] = Color.FromArgb(tileAlpha, Info.Colors.ElementAt(i).Value);
|
||||
}
|
||||
|
||||
public void ClearSelected(int tileType)
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright (c) The OpenRA Developers and Contributors
|
||||
* 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, either version 3 of
|
||||
* the License, or (at your option) any later version. For more
|
||||
* information, see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Primitives;
|
||||
|
||||
namespace OpenRA.Mods.Common.UpdateRules.Rules
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds color names to the editor history list.
|
||||
/// </summary>
|
||||
public class EditorMarkerTileLabels : UpdateRule, IBeforeUpdateActors
|
||||
{
|
||||
public override string Name => "Add labels to MarkerLayerOverlay colors.";
|
||||
public override string Description => "Adds color names to the editor history list.";
|
||||
|
||||
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNodeBuilder actorNode)
|
||||
{
|
||||
foreach (var layerNode in actorNode.ChildrenMatching("MarkerLayerOverlay"))
|
||||
{
|
||||
foreach (var colorsNode in layerNode.ChildrenMatching("Colors"))
|
||||
{
|
||||
var colors = FieldLoader.GetValue<Color[]>("Colors", colorsNode.Value.Value);
|
||||
colorsNode.Value.Value = null;
|
||||
foreach (var color in colors)
|
||||
{
|
||||
var c = FieldSaver.FormatValue(color);
|
||||
colorsNode.AddNode("notification-added-marker-tiles-markers." + c, c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -71,6 +71,7 @@ namespace OpenRA.Mods.Common.UpdateRules
|
||||
// bleed only changes here.
|
||||
new ReplaceBaseAttackNotifier(),
|
||||
new RemoveBuildingInfoAllowPlacementOnResources(),
|
||||
new EditorMarkerTileLabels(),
|
||||
]),
|
||||
];
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
tileColorPanel.RemoveChildren();
|
||||
|
||||
var colors = markerLayerTrait.Info.Colors;
|
||||
for (var colorIndex = 0; colorIndex < colors.Length; colorIndex++)
|
||||
for (var colorIndex = 0; colorIndex < colors.Count; colorIndex++)
|
||||
{
|
||||
var scrollItem = SetupColorSwatchItem(colorIndex, colorSwatchTemplate);
|
||||
tileColorPanel.AddChild(scrollItem);
|
||||
@@ -92,8 +92,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
editor.SetBrush(new EditorMarkerLayerBrush(editor, index, worldRenderer));
|
||||
});
|
||||
|
||||
var colorWidget = item.Get<ColorBlockWidget>("TILE_PREVIEW");
|
||||
colorWidget.GetColor = () => colors[index];
|
||||
var color = colors.ElementAt(index).Value;
|
||||
item.Get<ColorBlockWidget>("TILE_PREVIEW").GetColor = () => color;
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -809,17 +809,30 @@ notification-added-tile = Added tile { $id }
|
||||
notification-filled-tile = Filled with tile { $id }
|
||||
|
||||
## EditorMarkerLayerBrush
|
||||
notification-added-marker-tiles-markers =
|
||||
.red = red
|
||||
.orange = orange
|
||||
.yellow = yellow
|
||||
.green = green
|
||||
.cyan = cyan
|
||||
.blue = blue
|
||||
.purple = purple
|
||||
.magenta = magenta
|
||||
notification-added-marker-tiles =
|
||||
{ $count ->
|
||||
[one] Added one marker tile of type { $type }
|
||||
*[other] Added { $count } marker tiles of type { $type }
|
||||
[one] Added { $type } marker tile
|
||||
*[other] Added { $count } { $type } marker tiles
|
||||
}
|
||||
notification-removed-marker-tiles =
|
||||
{ $count ->
|
||||
[one] Removed one marker tile
|
||||
[one] Removed marker tile
|
||||
*[other] Removed { $count } marker tiles
|
||||
}
|
||||
notification-cleared-selected-marker-tiles = Cleared { $count } marker tiles of type { $type }
|
||||
notification-cleared-selected-marker-tiles =
|
||||
{ $count ->
|
||||
[one] Cleared { $type } marker tile
|
||||
*[other] Cleared { $count } { $type } marker tiles
|
||||
}
|
||||
notification-cleared-all-marker-tiles = Cleared { $count } marker tiles
|
||||
|
||||
## EditorActionManager
|
||||
|
||||
Reference in New Issue
Block a user