Guest
Public paste!

Caleb

By: a guest | Mar 21st, 2010 | Syntax: C# | Size: 2.98 KB | Hits: 59 | Expires: Never
Copy text to clipboard
  1. public void Save()
  2.         {
  3.             string path = "levels/" + name + ".lvl";
  4.             try
  5.             {
  6.                 //McLevel mclevel = new McLevel();
  7.                 //mclevel.Map.Width = (short)width;
  8.                 //mclevel.Map.Height = (short)depth;
  9.                 //mclevel.Map.Length = (short)height;
  10.  
  11.                 //for (ushort x = 0; x < width; x++)
  12.                 //{
  13.                 //    for (ushort z = 0; z < height; z++)
  14.                 //    {
  15.                 //        for (ushort y = 0; y < depth; y++)
  16.                 //        {
  17.                 //            mclevel.Map.Blocks[x, y, z] = blocks[PosToInt(x, y, z)].type;
  18.                 //        }
  19.                 //    }
  20.                 //}
  21.                 //mclevel.SaveFile("mclevels/" + name + ".mclevel");
  22.  
  23.                 if (!Directory.Exists("levels")) { Directory.CreateDirectory("levels"); }
  24.  
  25.                 FileStream fs = File.Create(path);
  26.                 GZipStream gs = new GZipStream(fs, CompressionMode.Compress);
  27.  
  28.                 byte[] header = new byte[16];
  29.                 BitConverter.GetBytes(1874).CopyTo(header, 0);
  30.                 gs.Write(header, 0, 2);
  31.                
  32.                 BitConverter.GetBytes(width).CopyTo(header, 0);
  33.                 BitConverter.GetBytes(height).CopyTo(header, 2);
  34.                 BitConverter.GetBytes(depth).CopyTo(header, 4);
  35.                 BitConverter.GetBytes(spawnx).CopyTo(header, 6);
  36.                 BitConverter.GetBytes(spawnz).CopyTo(header, 8);
  37.                 BitConverter.GetBytes(spawny).CopyTo(header, 10);
  38.                 header[12] = rotx; header[13] = roty;
  39.                 header[14] = (byte)permissionvisit;
  40.                 header[15] = (byte)permissionbuild;
  41.                 gs.Write(header, 0, header.Length);
  42.                 byte[] level = new byte[blocks.Length];
  43.                 for (int i = 0; i < blocks.Length; ++i)
  44.                 {
  45.                     if (blocks[i].type < 200)
  46.                     {
  47.                         level[i] = blocks[i].type;
  48.                     }
  49.                     else
  50.                     {
  51.                         level[i] = Blocktype.SaveConvert(blocks[i].type);
  52.                     }
  53.                 } gs.Write(level, 0, level.Length); gs.Close();
  54.                 Server.Log("SAVED: Level \"" + name + "\". " + Player.players.Count + "/" + Properties.players);
  55.                 changed = false;
  56.                 try
  57.                 {
  58.                     File.Copy(path, path + ".backup", true);
  59.                     Server.Log("And backed up");
  60.                 }
  61.                 catch
  62.                 {
  63.                     Server.Log("Failed to make backup");
  64.                 }
  65.  
  66.             }
  67.             catch
  68.             {
  69.                 Server.Log("FAILED TO SAVE :" + name);
  70.                 Player.GlobalMessage("FAILED TO SAVE :" + name);
  71.                 return;
  72.             }
  73.  
  74.             GC.Collect();
  75.             GC.WaitForPendingFinalizers();
  76.         }