public static bool Save(string name, BlockController[,] blocks, EnemyType[] orderSpawnEnemies) { return _instance.SaveLevel(name, blocks, orderSpawnEnemies); }
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; }