106 lines
3.8 KiB
C#
106 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using HeurekaGames.AssetHunterPRO.BaseTreeviewImpl.AssetTreeView;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace HeurekaGames.AssetHunterPRO
|
|
{
|
|
internal class AH_SerializationHelper
|
|
{
|
|
public delegate void NewBuildInfoCreatedDelegate(string path);
|
|
public static NewBuildInfoCreatedDelegate NewBuildInfoCreated;
|
|
|
|
public const string BuildInfoExtension = "ahbuildinfo";
|
|
public const string SettingsExtension = "ahsetting";
|
|
public const string FileDumpExtension = "ahfiledump";
|
|
|
|
public const string DateTimeFormat = "yyyy_MM_dd_HH_mm_ss";
|
|
|
|
internal static void SerializeAndSave(AH_SerializedBuildInfo ahBuildInfo)
|
|
{
|
|
string buildinfoFileName = ahBuildInfo.buildTargetInfo + "_" + ahBuildInfo.dateTime + "." + BuildInfoExtension;
|
|
string filePath = GetBuildInfoFolder() + System.IO.Path.DirectorySeparatorChar + buildinfoFileName;
|
|
System.IO.Directory.CreateDirectory(GetBuildInfoFolder());
|
|
|
|
System.IO.File.WriteAllText(filePath, JsonUtility.ToJson(ahBuildInfo));
|
|
if (AH_SettingsManager.Instance.AutoOpenLog)
|
|
EditorUtility.RevealInFinder(filePath);
|
|
|
|
if (NewBuildInfoCreated != null)
|
|
NewBuildInfoCreated(filePath);
|
|
}
|
|
|
|
internal static string GetDateString()
|
|
{
|
|
return DateTime.Now.ToString(DateTimeFormat);
|
|
}
|
|
|
|
internal static void SerializeAndSave(object instance, string path)
|
|
{
|
|
System.IO.File.WriteAllText(path, JsonUtility.ToJson(instance));
|
|
}
|
|
|
|
internal static AH_SerializedBuildInfo LoadBuildReport(string path)
|
|
{
|
|
string fileContent = "";
|
|
try
|
|
{
|
|
fileContent = System.IO.File.ReadAllText(path);
|
|
}
|
|
catch (System.IO.FileNotFoundException e)
|
|
{
|
|
EditorUtility.DisplayDialog(
|
|
"File Not Found",
|
|
"Unable to find:" + Environment.NewLine + path,
|
|
"Ok");
|
|
|
|
Debug.LogError("AH: Unable to find: " + path + Environment.NewLine + e);
|
|
|
|
return null;
|
|
}
|
|
|
|
try
|
|
{
|
|
AH_SerializedBuildInfo buildInfo = JsonUtility.FromJson<AH_SerializedBuildInfo>(fileContent);
|
|
buildInfo.Sort();
|
|
return buildInfo;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError("AH: JSON Parse error of " + path + Environment.NewLine + "- " + e.ToString());
|
|
return null;
|
|
}
|
|
}
|
|
|
|
internal static string GetBuildInfoFolder()
|
|
{
|
|
return AH_SettingsManager.Instance.BuildInfoPath; // System.IO.Directory.GetParent(Application.dataPath).FullName + System.IO.Path.DirectorySeparatorChar + "SerializedBuildInfo";
|
|
}
|
|
|
|
internal static string GetSettingFolder()
|
|
{
|
|
string userpreferencesPath = AH_SettingsManager.Instance.UserPreferencePath;
|
|
System.IO.DirectoryInfo dirInfo = System.IO.Directory.CreateDirectory(userpreferencesPath);
|
|
return dirInfo.FullName;
|
|
}
|
|
|
|
internal static string GetBackupFolder()
|
|
{
|
|
return System.IO.Directory.GetParent(Application.dataPath).FullName;
|
|
}
|
|
|
|
internal static void LoadSettings(AH_SettingsManager instance, string path)
|
|
{
|
|
string text = System.IO.File.ReadAllText(path);
|
|
try
|
|
{
|
|
EditorJsonUtility.FromJsonOverwrite(text, instance);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError("AH: JSON Parse error of " + path + Environment.NewLine + "- " + e.ToString());
|
|
}
|
|
}
|
|
}
|
|
} |