Add multi-resolution badge support.

This commit is contained in:
Paul Chote
2020-02-11 21:57:45 +00:00
committed by abcdefg30
parent de4a7cecf0
commit 84df61c672
6 changed files with 134 additions and 54 deletions

View File

@@ -0,0 +1,46 @@
#region Copyright & License Information
/*
* Copyright 2007-2020 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, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets
{
public class BadgeWidget : Widget
{
public PlayerBadge Badge;
readonly PlayerDatabase playerDatabase;
[ObjectCreator.UseCtor]
public BadgeWidget(ModData modData)
{
playerDatabase = modData.Manifest.Get<PlayerDatabase>();
}
protected BadgeWidget(BadgeWidget other)
: base(other)
{
Badge = other.Badge;
playerDatabase = other.playerDatabase;
}
public override Widget Clone() { return new BadgeWidget(this); }
public override void Draw()
{
if (Badge == null)
return;
var icon = playerDatabase.GetIcon(Badge);
if (icon != null)
Game.Renderer.RgbaSpriteRenderer.DrawSprite(icon, RenderOrigin);
}
}
}

View File

@@ -270,7 +270,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
// Negotiate the label length that the tooltip will allow
var maxLabelWidth = 0;
var templateIcon = badgeTemplate.Get<SpriteWidget>("ICON");
var templateIcon = badgeTemplate.Get("ICON");
var templateLabel = badgeTemplate.Get<LabelWidget>("LABEL");
var templateLabelFont = Game.Renderer.Fonts[templateLabel.Font];
foreach (var badge in profile.Badges)
@@ -285,8 +285,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
foreach (var badge in profile.Badges)
{
var b = badgeTemplate.Clone();
var icon = b.Get<SpriteWidget>("ICON");
icon.GetSprite = () => badge.Icon24;
var icon = b.Get<BadgeWidget>("ICON");
icon.Badge = badge;
var label = b.Get<LabelWidget>("LABEL");
var labelFont = Game.Renderer.Fonts[label.Font];