public Load ( String filename ) : bool | ||
filename | String | The filename of the Spriteset to load. |
return | bool |
public bool Load(String filename)
{
if (!File.Exists(filename)) return false;
using (BinaryReader stream = new BinaryReader(File.OpenRead(filename)))
{
// purge anything already inside this object:
Purge();
// start reading the header //
string sig = new string(stream.ReadChars(4));
if (sig != ".rss") return false;
_version = stream.ReadInt16();
short numImages = stream.ReadInt16();
_frameWidth = stream.ReadInt16();
_frameHeight = stream.ReadInt16();
short numDirs = stream.ReadInt16();
// read sprite base //
_spriteBase.X1 = stream.ReadInt16();
_spriteBase.Y1 = stream.ReadInt16();
_spriteBase.X2 = stream.ReadInt16();
_spriteBase.Y2 = stream.ReadInt16();
// reserved //
stream.ReadBytes(106);
switch (_version)
{
case 3:
BitmapLoader loader = new BitmapLoader(_frameWidth, _frameHeight);
int amt = _frameWidth * _frameHeight * 4;
while (numImages-- > 0) _images.Add(loader.LoadFromStream(stream, amt));
loader.Close();
while (numDirs-- > 0)
{
short numFrames = stream.ReadInt16();
stream.ReadBytes(6);
short length = stream.ReadInt16();
string name = new String(stream.ReadChars(length)).Substring(0, length - 1);
Direction dir = new Direction(name);
while (numFrames-- > 0)
{
Frame f = new Frame {Index = stream.ReadInt16(), Delay = stream.ReadInt16()};
dir.Frames.Add(f);
stream.ReadBytes(4);
}
_directions.Add(dir);
}
break;
}
}
return true;
}
/// <summary> /// Get an image representation of this trigger / person /// </summary> /// <param name="rootpath">The root path of the project to find the spriteset.</param> /// <returns>A System.Draw.Bitmap representing the entity.</returns> public Image GetSSImage(string rootpath) { if (Type == EntityType.Trigger) return Properties.Resources.trigger; using (var s = new Spriteset()) { if (s.Load(rootpath + "/spritesets/" + Spriteset)) { Image img = s.GetImage("south"); if (img == null && s.Images.Count > 0) img = s.Images[0]; if (img != null) { return s.Images.Count == 0 ? Properties.Resources.person : new Bitmap(img); } } return Properties.Resources.person; } }