示例#1
0
		public static bool Save(string name, BlockController[,] blocks,
			EnemyType[] orderSpawnEnemies)
		{
			return _instance.SaveLevel(name, blocks, orderSpawnEnemies);
		}
示例#2
0
		private bool SaveLevel(string name, BlockController[,] blocks,
			EnemyType[] orderSpawnEnemies)
		{
#if !UNITY_EDITOR
		try
		{
#endif
			if (!Directory.Exists(Consts.PATH))
				Directory.CreateDirectory(Consts.PATH);

			var data = GetLevel(name) ?? new FieldData();
			data.Name = name;

			int imageWidth, imageHeight;
			data.Preview.Image = Screenshot.GetScreenshot(out imageWidth, out imageHeight);
			data.Preview.Width = imageWidth;
			data.Preview.Height = imageHeight;

			data.OrderSpawnEnemies = orderSpawnEnemies;

			var width = blocks.GetLength(0);
			var height = blocks.GetLength(1);
			data.Blocks = new int[width, height];
			for (int x = 0; x < width; x++)
				for (int y = 0; y < height; y++)
				{
					var block = blocks[x, y];
					if (block != null)
						data.Blocks[x, y] = (int)block.TypeItem;
				}

			if (!_levels.Any(fd => fd.Name == name))
				_levels.Add(data);

			var formatter = new BinaryFormatter();
			var path = Consts.PATH + name + "." + Consts.EXTENSION;
			using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
				formatter.Serialize(fs, data);
#if !UNITY_EDITOR
		}
		catch
		{
			return false;
		}
#endif
			return true;
		}