public static BlockStore Load(BinaryReader reader) { var version = reader.ReadByte(); if (version != Version) { throw new InvalidOperationException("Invalid blockstore version"); } var tilesize = reader.ReadInt32(); var result = new BlockStore(tilesize); var numTiles = reader.ReadInt32(); while (numTiles-- > 0) { var sprite = BinSpriteSerializer.Load(reader); result.Tiles.Add(sprite); } var numMaterials = reader.ReadInt32(); while (numMaterials-- > 0) { var material = (MaterialType)reader.ReadInt32(); var numMaterialTiles = reader.ReadInt32(); while (numMaterialTiles-- > 0) { var id = reader.ReadInt32(); result.Materials[material].Add(id); } } var numFlags = reader.ReadInt32(); while (numFlags-- > 0) { var id = reader.ReadInt32(); var flags = (TileFlags)reader.ReadInt32(); result[id] = flags; } return(result); }
public bool Draw(BlockStore store, SpriteBatch sb, Vector2 pos, Color colour, float depth, Vector2?scale = null) { var tile = this.Enabled ? this.on : this.off; return(tile.Draw(store, sb, pos, colour, depth, scale)); }