Level save + load

This commit is contained in:
2023-06-16 17:08:56 +03:00
parent d9fbd99072
commit 0eb8b1d4ee
132 changed files with 20138 additions and 15 deletions

View File

@@ -0,0 +1,78 @@
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);
}
}
}