Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }