Adds an IconPalette property to Buildable and SupportPower traits.
This commit is contained in:
@@ -27,14 +27,14 @@ namespace OpenRA.Widgets
|
|||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos);
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawSHPCentered(Sprite s, float2 pos, WorldRenderer wr)
|
public static void DrawSHPCentered(Sprite s, float2 pos, PaletteReference p)
|
||||||
{
|
{
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * s.Size, wr.Palette("chrome"));
|
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * s.Size, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawSHPCentered(Sprite s, float2 pos, WorldRenderer wr, float scale)
|
public static void DrawSHPCentered(Sprite s, float2 pos, PaletteReference p, float scale)
|
||||||
{
|
{
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * scale * s.Size, wr.Palette("chrome"), scale * s.Size);
|
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * scale * s.Size, p, scale * s.Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawPanel(string collection, Rectangle bounds)
|
public static void DrawPanel(string collection, Rectangle bounds)
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Force a specific race variant, overriding the race of the producing actor.")]
|
[Desc("Force a specific race variant, overriding the race of the producing actor.")]
|
||||||
public readonly string ForceRace = null;
|
public readonly string ForceRace = null;
|
||||||
|
|
||||||
|
[Desc("Palette used for the production icon.")]
|
||||||
|
public readonly string IconPalette = "chrome";
|
||||||
|
|
||||||
// TODO: UI fluff; doesn't belong here
|
// TODO: UI fluff; doesn't belong here
|
||||||
public readonly int BuildPaletteOrder = 9999;
|
public readonly int BuildPaletteOrder = 9999;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public readonly bool DisplayTimer = false;
|
public readonly bool DisplayTimer = false;
|
||||||
|
|
||||||
|
[Desc("Palette used for the icon.")]
|
||||||
|
public readonly string IconPalette = "chrome";
|
||||||
|
|
||||||
[Desc("Beacons are only supported on the Airstrike and Nuke powers")]
|
[Desc("Beacons are only supported on the Airstrike and Nuke powers")]
|
||||||
public readonly bool DisplayBeacon = false;
|
public readonly bool DisplayBeacon = false;
|
||||||
public readonly string BeaconPalettePrefix = "player";
|
public readonly string BeaconPalettePrefix = "player";
|
||||||
|
|||||||
@@ -75,15 +75,16 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
var rsi = actor.Traits.Get<RenderSpritesInfo>();
|
var rsi = actor.Traits.Get<RenderSpritesInfo>();
|
||||||
var icon = new Animation(world, rsi.GetImage(actor, world.Map.SequenceProvider, race));
|
var icon = new Animation(world, rsi.GetImage(actor, world.Map.SequenceProvider, race));
|
||||||
icon.Play(actor.Traits.Get<TooltipInfo>().Icon);
|
icon.Play(actor.Traits.Get<TooltipInfo>().Icon);
|
||||||
|
var bi = actor.Traits.Get<BuildableInfo>();
|
||||||
var location = new float2(RenderBounds.Location) + new float2(queue.i * (IconWidth + IconSpacing), 0);
|
var location = new float2(RenderBounds.Location) + new float2(queue.i * (IconWidth + IconSpacing), 0);
|
||||||
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer.Palette(bi.IconPalette), 0.5f);
|
||||||
|
|
||||||
var clock = clocks[queue.Trait];
|
var clock = clocks[queue.Trait];
|
||||||
clock.PlayFetchIndex("idle",
|
clock.PlayFetchIndex("idle",
|
||||||
() => current.TotalTime == 0 ? 0 : ((current.TotalTime - current.RemainingTime)
|
() => current.TotalTime == 0 ? 0 : ((current.TotalTime - current.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / current.TotalTime));
|
* (clock.CurrentSequence.Length - 1) / current.TotalTime));
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer.Palette(bi.IconPalette), 0.5f);
|
||||||
|
|
||||||
var tiny = Game.Renderer.Fonts["Tiny"];
|
var tiny = Game.Renderer.Fonts["Tiny"];
|
||||||
var text = GetOverlayForItem(current);
|
var text = GetOverlayForItem(current);
|
||||||
|
|||||||
@@ -72,14 +72,14 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
|
|
||||||
icon.Play(item.Info.Icon);
|
icon.Play(item.Info.Icon);
|
||||||
var location = new float2(RenderBounds.Location) + new float2(power.i * (IconWidth + IconSpacing), 0);
|
var location = new float2(RenderBounds.Location) + new float2(power.i * (IconWidth + IconSpacing), 0);
|
||||||
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer.Palette(item.Info.IconPalette), 0.5f);
|
||||||
|
|
||||||
var clock = clocks[power.a.Key];
|
var clock = clocks[power.a.Key];
|
||||||
clock.PlayFetchIndex("idle",
|
clock.PlayFetchIndex("idle",
|
||||||
() => item.TotalTime == 0 ? 0 : ((item.TotalTime - item.RemainingTime)
|
() => item.TotalTime == 0 ? 0 : ((item.TotalTime - item.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / item.TotalTime));
|
* (clock.CurrentSequence.Length - 1) / item.TotalTime));
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer.Palette(item.Info.IconPalette), 0.5f);
|
||||||
|
|
||||||
var tiny = Game.Renderer.Fonts["Tiny"];
|
var tiny = Game.Renderer.Fonts["Tiny"];
|
||||||
var text = GetOverlayForItem(item);
|
var text = GetOverlayForItem(item);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
public string Name;
|
public string Name;
|
||||||
public Hotkey Hotkey;
|
public Hotkey Hotkey;
|
||||||
public Sprite Sprite;
|
public Sprite Sprite;
|
||||||
|
public PaletteReference Palette;
|
||||||
public float2 Pos;
|
public float2 Pos;
|
||||||
public List<ProductionItem> Queued;
|
public List<ProductionItem> Queued;
|
||||||
}
|
}
|
||||||
@@ -312,12 +313,15 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
var icon = new Animation(World, rsi.GetImage(item, World.Map.SequenceProvider, race));
|
var icon = new Animation(World, rsi.GetImage(item, World.Map.SequenceProvider, race));
|
||||||
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
||||||
|
|
||||||
|
var bi = item.Traits.Get<BuildableInfo>();
|
||||||
|
|
||||||
var pi = new ProductionIcon()
|
var pi = new ProductionIcon()
|
||||||
{
|
{
|
||||||
Actor = item,
|
Actor = item,
|
||||||
Name = item.Name,
|
Name = item.Name,
|
||||||
Hotkey = ks.GetProductionHotkey(DisplayedIconCount),
|
Hotkey = ks.GetProductionHotkey(DisplayedIconCount),
|
||||||
Sprite = icon.Image,
|
Sprite = icon.Image,
|
||||||
|
Palette = worldRenderer.Palette(bi.IconPalette),
|
||||||
Pos = new float2(rect.Location),
|
Pos = new float2(rect.Location),
|
||||||
Queued = CurrentQueue.AllQueued().Where(a => a.Item == item.Name).ToList()
|
Queued = CurrentQueue.AllQueued().Where(a => a.Item == item.Name).ToList()
|
||||||
};
|
};
|
||||||
@@ -350,7 +354,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
// Icons
|
// Icons
|
||||||
foreach (var icon in icons.Values)
|
foreach (var icon in icons.Values)
|
||||||
{
|
{
|
||||||
WidgetUtils.DrawSHPCentered(icon.Sprite, icon.Pos + iconOffset, worldRenderer);
|
WidgetUtils.DrawSHPCentered(icon.Sprite, icon.Pos + iconOffset, icon.Palette);
|
||||||
|
|
||||||
// Build progress
|
// Build progress
|
||||||
if (icon.Queued.Count > 0)
|
if (icon.Queued.Count > 0)
|
||||||
@@ -361,10 +365,10 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
|
|
||||||
WidgetUtils.DrawSHPCentered(clock.Image, icon.Pos + iconOffset, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, icon.Pos + iconOffset, icon.Palette);
|
||||||
}
|
}
|
||||||
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
||||||
WidgetUtils.DrawSHPCentered(cantBuild.Image, icon.Pos + iconOffset, worldRenderer);
|
WidgetUtils.DrawSHPCentered(cantBuild.Image, icon.Pos + iconOffset, icon.Palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overlays
|
// Overlays
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
public SupportPowerInstance Power;
|
public SupportPowerInstance Power;
|
||||||
public float2 Pos;
|
public float2 Pos;
|
||||||
public Sprite Sprite;
|
public Sprite Sprite;
|
||||||
|
public PaletteReference Palette;
|
||||||
public Hotkey Hotkey;
|
public Hotkey Hotkey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,6 +90,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
Power = p,
|
Power = p,
|
||||||
Pos = new float2(rect.Location),
|
Pos = new float2(rect.Location),
|
||||||
Sprite = icon.Image,
|
Sprite = icon.Image,
|
||||||
|
Palette = worldRenderer.Palette(p.Info.IconPalette),
|
||||||
Hotkey = ks.GetSupportPowerHotkey(IconCount)
|
Hotkey = ks.GetSupportPowerHotkey(IconCount)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -139,7 +141,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
// Icons
|
// Icons
|
||||||
foreach (var p in icons.Values)
|
foreach (var p in icons.Values)
|
||||||
{
|
{
|
||||||
WidgetUtils.DrawSHPCentered(p.Sprite, p.Pos + iconOffset, worldRenderer);
|
WidgetUtils.DrawSHPCentered(p.Sprite, p.Pos + iconOffset, p.Palette);
|
||||||
|
|
||||||
// Charge progress
|
// Charge progress
|
||||||
var sp = p.Power;
|
var sp = p.Power;
|
||||||
@@ -148,7 +150,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
* (clock.CurrentSequence.Length - 1) / sp.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / sp.TotalTime);
|
||||||
|
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, p.Palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overlay
|
// Overlay
|
||||||
|
|||||||
Reference in New Issue
Block a user