79 lines
2.1 KiB
C#
79 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|