92 lines
2.7 KiB
C#
92 lines
2.7 KiB
C#
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
|
|
public static class CommandSaveUtil
|
|
{
|
|
|
|
private static JsonSerializerSettings getSettings()
|
|
{
|
|
return new JsonSerializerSettings
|
|
{
|
|
Formatting = Formatting.Indented,
|
|
TypeNameHandling = TypeNameHandling.Auto,
|
|
ReferenceLoopHandling = ReferenceLoopHandling.Ignore // Prevents circular reference issues
|
|
};
|
|
}
|
|
|
|
public static bool saveLinkedList(LinkedList<CommandDTO> list, string saveFilePath)
|
|
{
|
|
if (list == null)
|
|
{
|
|
Debug.LogWarning("Cannot save null list");
|
|
return false;
|
|
}
|
|
|
|
try
|
|
{
|
|
string json = JsonConvert.SerializeObject(list, getSettings());
|
|
File.WriteAllText(saveFilePath, json);
|
|
Debug.Log($"LinkedList saved successfully: {saveFilePath} ({list.Count} commands)");
|
|
return true;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError($"Failed to save LinkedList: {e.Message}");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static LinkedList<CommandDTO> loadLinkedList(string saveFilePath)
|
|
{
|
|
if (!File.Exists(saveFilePath))
|
|
{
|
|
Debug.LogWarning($"Save file not found at: {saveFilePath}");
|
|
return new LinkedList<CommandDTO>(); // Return empty list instead of null
|
|
}
|
|
|
|
try
|
|
{
|
|
string json = File.ReadAllText(saveFilePath);
|
|
|
|
// Check if file is empty
|
|
if (string.IsNullOrWhiteSpace(json))
|
|
{
|
|
Debug.LogWarning("Save file is empty");
|
|
return new LinkedList<CommandDTO>();
|
|
}
|
|
|
|
LinkedList<CommandDTO> list = JsonConvert.DeserializeObject<LinkedList<CommandDTO>>(json, getSettings());
|
|
Debug.Log($"LinkedList loaded successfully ({list?.Count ?? 0} commands)");
|
|
return list ?? new LinkedList<CommandDTO>();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError($"Failed to load LinkedList: {e.Message}");
|
|
return new LinkedList<CommandDTO>(); // Return empty list on error
|
|
}
|
|
}
|
|
|
|
public static void deleteSaveFile(string saveFilePath)
|
|
{
|
|
try
|
|
{
|
|
if (File.Exists(saveFilePath))
|
|
{
|
|
File.Delete(saveFilePath);
|
|
Debug.Log("Save file deleted");
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError($"Failed to delete save file: {e.Message}");
|
|
}
|
|
}
|
|
|
|
public static bool hasSaveFile(string saveFilePath)
|
|
{
|
|
return File.Exists(saveFilePath);
|
|
}
|
|
} |