git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1183 993157c7-ee19-0410-b2c4-bb4e9862e678

This commit is contained in:
bob
2007-07-12 19:46:13 +00:00
parent 4139e4dac6
commit 9a6182bb17
9 changed files with 94 additions and 11 deletions

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Text;
using OpenRa.FileFormats;
using System.Drawing;
using BluntDirectX.Direct3D;
namespace OpenRa.Game
{
static class UnitSheetBuilder
{
static readonly Package unitsPackage = new Package( "../../../conquer.mix" );
public static readonly List<SheetRectangle<Sheet>> McvSheet = new List<SheetRectangle<Sheet>>();
public static void AddUnit( string name, GraphicsDevice device, Palette pal )
{
List<Sheet> sheets = new List<Sheet>();
Size pageSize = new Size( 1024, 512 );
Provider<Sheet> sheetProvider = delegate
{
Sheet sheet = new Sheet( new Bitmap( pageSize.Width, pageSize.Height ) );
sheets.Add( sheet );
return sheet;
};
TileSheetBuilder<Sheet> builder = new TileSheetBuilder<Sheet>( pageSize, sheetProvider );
ShpReader reader = new ShpReader( unitsPackage.GetContent( name + ".shp" ) );
foreach( ImageHeader h in reader )
{
Bitmap bitmap = BitmapBuilder.FromBytes( h.Image, reader.Width, reader.Height, pal );
SheetRectangle<Sheet> rect = builder.AddImage( bitmap.Size );
using( Graphics g = Graphics.FromImage( rect.sheet.bitmap ) )
g.DrawImage( bitmap, rect.origin );
McvSheet.Add( rect );
}
foreach( Sheet sheet in sheets )
sheet.LoadTexture( device );
}
}
}