git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1183 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
45
OpenRa.Game/UnitSheetBuilder.cs
Normal file
45
OpenRa.Game/UnitSheetBuilder.cs
Normal 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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user