Level save + load
This commit is contained in:
78
Assets/Scripts/Level/LevelSaveSystem.cs
Normal file
78
Assets/Scripts/Level/LevelSaveSystem.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user