Basic ImageButton for drawing flags

This commit is contained in:
alzeih
2010-06-13 17:36:12 +12:00
parent 5e630768a2
commit 1a20249f44
8 changed files with 98 additions and 7 deletions

View File

@@ -238,6 +238,7 @@
<Compile Include="Widgets\ColorBlockWidget.cs" />
<Compile Include="GameRules\MusicInfo.cs" />
<Compile Include="Widgets\PowerBinWidget.cs" />
<Compile Include="Widgets\ImageWidget.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">

View File

@@ -1,4 +1,4 @@
#region Copyright & License Information
#region Copyright & License Information
/*
* Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
* This file is part of OpenRA.

View File

@@ -81,6 +81,11 @@ namespace OpenRA.Widgets.Delegates
faction.OnMouseUp = CycleRace;
faction.GetText = () => c.Country;
//TODO: make part of button?
var factionflag = template.GetWidget<ImageWidget>("FACTIONFLAG");
factionflag.GetImageName = () => c.Country;
factionflag.GetImageCollection = () => "flags";
var spawn = template.GetWidget<ButtonWidget>("SPAWN");
spawn.OnMouseUp = CycleSpawnPoint;
spawn.GetText = () => (c.SpawnPoint == 0) ? "-" : c.SpawnPoint.ToString();
@@ -101,6 +106,10 @@ namespace OpenRA.Widgets.Delegates
var faction = template.GetWidget<LabelWidget>("FACTION");
faction.GetText = () => c.Country;
var factionflag = template.GetWidget<ImageWidget>("FACTIONFLAG");
factionflag.GetImageName = () => c.Country;
factionflag.GetImageCollection = () => "flags";
var spawn = template.GetWidget<LabelWidget>("SPAWN");
spawn.GetText = () => (c.SpawnPoint == 0) ? "-" : c.SpawnPoint.ToString();

View File

@@ -0,0 +1,41 @@
using System;
using OpenRA.Graphics;
namespace OpenRA.Widgets
{
public class ImageWidget : Widget
{
public string ImageCollection = "";
public string ImageName = "";
public Func<string> GetImageName;
public Func<string> GetImageCollection;
public ImageWidget ()
: base()
{
GetImageName = () => { return ImageName; };
GetImageCollection = () => { return ImageCollection; };
}
public ImageWidget(Widget other)
: base(other)
{
ImageName = (other as ImageWidget).ImageName;
GetImageName = (other as ImageWidget).GetImageName;
}
public override Widget Clone()
{
return new ImageWidget(this);
}
public override void DrawInner(World world)
{
var name = GetImageName();
var collection = GetImageCollection();
var position = DrawPosition();
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(Game.chrome.renderer, collection, name), position);
}
}
}