using System.IO; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Binary; using SimpleFileBrowser; using UnityEngine; namespace Level { public class LevelSaveSystem { public void Save(LevelData levelData) { string[] extensions = new string[1]; extensions[0] = "*.lvl"; FileBrowser.SetFilters(true, extensions); FileBrowser.ShowSaveDialog( (string[] paths) => SaveLevel(paths, levelData), null, FileBrowser.PickMode.Files, false, null, "level.lvl" ); } private void SaveLevel(string[] paths, LevelData levelData) { string filePath = paths[0]; string directoryName = FileBrowserHelpers.GetDirectoryName(filePath); string fileName = FileBrowserHelpers.GetFilename(filePath); if (!FileBrowserHelpers.FileExists(filePath)) { FileBrowserHelpers.CreateFileInDirectory(directoryName, fileName); } FileBrowserHelpers.WriteBytesToFile(filePath, levelData.ToBytes()); Debug.Log("File saved to " + filePath); } public void Load() { string[] extensions = new string[1]; extensions[0] = "*.lvl"; FileBrowser.SetFilters(true, extensions); FileBrowser.ShowLoadDialog( LoadLevel, null, FileBrowser.PickMode.Files ); } public void LoadLevel(string[] paths) { string filePath = paths[0]; if (!FileBrowserHelpers.FileExists(filePath)) { Debug.LogError("File not found"); return; } byte[] levelDataBytes = FileBrowserHelpers.ReadBytesFromFile(filePath); LevelData levelData = LevelData.FromBytes(levelDataBytes); Debug.Log("Loaded file " + filePath); LevelBuilder.Instance.LoadLevelData(levelData); } } }