Ejemplo n.º 1
0
        public static void saveLevel(Level level, string levelName, string tileset)
        {
            BinaryWriter writer = new BinaryWriter(new FileStream(TileMap_Directory + levelName, FileMode.Create));

            writer.Write(ASCIIEncoding.ASCII.GetBytes("LV"));
            writer.Write(tileset);
            writer.Write((ushort)level.RenderManager.Layers.Count);
            writer.Write(level.RenderManager.EntityLayerID);

            for (int i = 0; i < level.RenderManager.Layers.Count; i++)
            {
                TileMapFilePart.toStream(writer.BaseStream, level.RenderManager.Layers[i]);
            }

            writer.Close();
        }
Ejemplo n.º 2
0
        public static Level loadLevel(RabbitPlatform game, string levelName, bool editor = false)
        {
            if (game.CurrentWorld == null)
            {
                throw new NullReferenceException("You are unable to load level when without any world.");
            }

            LevelFile file = new LevelFile(levelName);

            if (file.ReadMagic() != "LV")
            {
                throw new FormatException();
            }

            //if (!editor)
            //    world = new World(game);
            //else
            //    world = new Editor.EditorWorld(game);

            string  tileset = file.ReadString();
            TileSet ts      = TileSetFile.loadTileSet(game, tileset);

            ushort layers   = file.ReadUInt16();
            ushort entLayer = file.ReadUInt16();

            Level level = new Level(game.CurrentWorld, layers, entLayer);

            //world.prepareWorld(layers, entLayer);
            TileMapInfo info;

            for (int i = 0; i < layers; i++)
            {
                info = TileMapFilePart.fromStream(level, file.BaseStream, ts);
                level.initializeLayer(info, i);
            }

            //world.createWorld();

            file.Close();

            return(level);
        }