adds bib rendering. still wrong for a few buildings, but not *too* bad.

This commit is contained in:
Chris Forbes
2009-10-13 22:12:00 +13:00
parent 3b1558d678
commit 5f711e12e6
4 changed files with 34 additions and 4 deletions

View File

@@ -129,7 +129,7 @@ namespace OpenRa.Game
} }
public float2 CenterLocation; public float2 CenterLocation;
public float2 SelectedSize { get { return Render().FirstOrDefault().First.size; } } public float2 SelectedSize { get { return Render().LastOrDefault().First.size; } }
public IEnumerable<Pair<Sprite, float2>> Render() public IEnumerable<Pair<Sprite, float2>> Render()
{ {

View File

@@ -43,7 +43,8 @@ namespace OpenRa.Game
game = new Game(settings.GetValue("map", "scg11eb.ini"), renderer, new int2(ClientSize)); game = new Game(settings.GetValue("map", "scg11eb.ini"), renderer, new int2(ClientSize));
SequenceProvider.ForcePrecache(); SequenceProvider.ForcePrecache();
Traits.RenderBuilding.Prefetch();
game.world.Add( new Actor( "mcv", new int2( 5, 5 ), game.players[ 3 ]) ); game.world.Add( new Actor( "mcv", new int2( 5, 5 ), game.players[ 3 ]) );
game.world.Add( new Actor( "mcv", new int2( 7, 5 ), game.players[ 2 ] ) ); game.world.Add( new Actor( "mcv", new int2( 7, 5 ), game.players[ 2 ] ) );

View File

@@ -4,19 +4,48 @@ using System.Linq;
using System.Text; using System.Text;
using IjwFramework.Types; using IjwFramework.Types;
using OpenRa.Game.Graphics; using OpenRa.Game.Graphics;
using OpenRa.Game.GameRules;
namespace OpenRa.Game.Traits namespace OpenRa.Game.Traits
{ {
class RenderBuilding : RenderSimple class RenderBuilding : RenderSimple
{ {
static Sprite[] largeBib;
static Sprite[] smallBib;
static int2[] largeBibPos = new[] { new int2(0,0), new int2(1,0), new int2(2,0),
new int2(0,1), new int2(1,1), new int2(2,1) };
static int2[] smallBibPos = new[] { new int2(0,0), new int2(1,0),
new int2(0,1), new int2(1,1)};
public RenderBuilding(Actor self) public RenderBuilding(Actor self)
: base(self) : base(self)
{ {
anim.PlayThen("make", () => anim.PlayRepeating("idle")); anim.PlayThen("make", () => anim.PlayRepeating("idle"));
} }
public static void Prefetch()
{
largeBib = SpriteSheetBuilder.LoadAllSprites("bib2.", "tem", "sno", "int");
smallBib = SpriteSheetBuilder.LoadAllSprites("bib3.", "tem", "sno", "int");
}
public override IEnumerable<Pair<Sprite, float2>> Render(Actor self) public override IEnumerable<Pair<Sprite, float2>> Render(Actor self)
{ {
if (((UnitInfo.BuildingInfo)self.unitInfo).Bib)
{
var fp = Rules.Footprint.GetFootprint(self.unitInfo.Name );
var bibOffset = new int2(0, fp.Length - 2);
var hasSmallBib = fp.First().Length == 2;
var bib = hasSmallBib ? smallBib : largeBib;
var bibPos = hasSmallBib ? smallBibPos : largeBibPos;
for (int i = 0; i < bib.Length; i++)
yield return Pair.New(bib[i], 24f * (float2)(self.Location + bibOffset + bibPos[i]));
}
yield return Pair.New(anim.Image, 24f * (float2)self.Location); yield return Pair.New(anim.Image, 24f * (float2)self.Location);
} }
} }

View File

@@ -7,8 +7,8 @@
x : ftur sbag brik fenc gun pbox hbox silo gap kenn * x : ftur sbag brik fenc gun pbox hbox silo gap kenn *
_ x : tsla agun _ x : tsla agun
xx xx == : powr dome barr tent domf hpad atek xx xx == : powr dome barr tent domf hpad atek
xxx xxx === : fact facf weap weaf apwr stek xxx xxx === : weap weaf apwr stek
xxx xxx xxx : syrf syrd spen spef xxx xxx xxx : syrf syrd spen spef fact facf
xx : sam mslo xx : sam mslo
_x_ xxx x== === : proc _x_ xxx x== === : proc
xxx xxx : afld xxx xxx : afld