Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/UniqueSaveManager.cs
2026-02-21 16:45:37 +08:00

89 lines
2.5 KiB
C#

using UnityEngine;
public class UniqueSaveManager : MonoBehaviour
{
public string sceneObjectFile = "sceneObjectsFile.txt";
public string createdObjectFile = "createdObjectsFile.txt";
public void OnApplicationQuit()
{
Save();
}
public void Start()
{
if (ES2.Exists(sceneObjectFile))
{
int num = ES2.Load<int>(sceneObjectFile + "?tag=sceneObjectCount");
for (int i = 0; i < num; i++)
{
LoadObject(i, sceneObjectFile);
}
}
if (ES2.Exists(createdObjectFile))
{
int num2 = ES2.Load<int>(createdObjectFile + "?tag=createdObjectCount");
for (int j = 0; j < num2; j++)
{
LoadObject(j, createdObjectFile);
}
}
}
private void Save()
{
ES2.Save(UniqueObjectManager.SceneObjects.Length, sceneObjectFile + "?tag=sceneObjectCount");
for (int i = 0; i < UniqueObjectManager.SceneObjects.Length; i++)
{
SaveObject(UniqueObjectManager.SceneObjects[i], i, sceneObjectFile);
}
ES2.Save(UniqueObjectManager.CreatedObjects.Count, createdObjectFile + "?tag=createdObjectCount");
for (int j = 0; j < UniqueObjectManager.CreatedObjects.Count; j++)
{
SaveObject(UniqueObjectManager.CreatedObjects[j], j, createdObjectFile);
}
}
private void SaveObject(GameObject obj, int i, string file)
{
ES2UniqueID component = obj.GetComponent<ES2UniqueID>();
ES2.Save(component.id, file + "?tag=uniqueID" + i);
ES2.Save(component.prefabName, file + "?tag=prefabName" + i);
ES2.Save(component.gameObject.activeSelf, file + "?tag=active" + i);
Transform component2 = obj.GetComponent<Transform>();
if (component2 != null)
{
ES2.Save(component2, file + "?tag=transform" + i);
ES2UniqueID eS2UniqueID = ES2UniqueID.FindUniqueID(component2.parent);
if (eS2UniqueID == null)
{
ES2.Save(-1, file + "?tag=parentID" + i);
}
else
{
ES2.Save(eS2UniqueID.id, file + "?tag=parentID" + i);
}
}
}
private void LoadObject(int i, string file)
{
int id = ES2.Load<int>(file + "?tag=uniqueID" + i);
string text = ES2.Load<string>(file + "?tag=prefabName" + i);
GameObject gameObject = ((!(text == string.Empty)) ? UniqueObjectManager.InstantiatePrefab(text) : ES2UniqueID.FindTransform(id).gameObject);
gameObject.SetActive(ES2.Load<bool>(file + "?tag=active" + i));
Transform component = gameObject.GetComponent<Transform>();
if (component != null)
{
ES2.Load(file + "?tag=transform" + i, component);
int id2 = ES2.Load<int>(file + "?tag=parentID" + i);
Transform transform = ES2UniqueID.FindTransform(id2);
if (transform != null)
{
component.parent = transform;
}
}
}
}