mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Put locks bc im afraid
This commit is contained in:
parent
f6dcf2f4b8
commit
bdc4c4d170
61
NewHorizons/External/NewHorizonsData.cs
vendored
61
NewHorizons/External/NewHorizonsData.cs
vendored
@ -11,40 +11,45 @@ namespace NewHorizons.External
|
||||
private static string _activeProfileName;
|
||||
private static readonly string FileName = "save.json";
|
||||
|
||||
private static object _lock;
|
||||
|
||||
// This is its own method so it can be patched by NH-QSB compat
|
||||
public static string GetProfileName() => StandaloneProfileManager.SharedInstance?.currentProfile?.profileName;
|
||||
|
||||
public static void Load()
|
||||
{
|
||||
_activeProfileName = GetProfileName();
|
||||
if (_activeProfileName == null)
|
||||
lock (_lock)
|
||||
{
|
||||
Logger.LogWarning("Couldn't find active profile, are you on Gamepass?");
|
||||
_activeProfileName = "XboxGamepassDefaultProfile";
|
||||
}
|
||||
_activeProfileName = GetProfileName();
|
||||
if (_activeProfileName == null)
|
||||
{
|
||||
Logger.LogWarning("Couldn't find active profile, are you on Gamepass?");
|
||||
_activeProfileName = "XboxGamepassDefaultProfile";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
_saveFile = Main.Instance.ModHelper.Storage.Load<NewHorizonsSaveFile>(FileName, false);
|
||||
if (!_saveFile.Profiles.ContainsKey(_activeProfileName))
|
||||
_saveFile.Profiles.Add(_activeProfileName, new NewHorizonsProfile());
|
||||
_activeProfile = _saveFile.Profiles[_activeProfileName];
|
||||
Logger.LogVerbose($"Loaded save data for {_activeProfileName}");
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
try
|
||||
{
|
||||
Logger.LogVerbose($"Couldn't load save data from {FileName}, creating a new file");
|
||||
_saveFile = new NewHorizonsSaveFile();
|
||||
_saveFile.Profiles.Add(_activeProfileName, new NewHorizonsProfile());
|
||||
_saveFile = Main.Instance.ModHelper.Storage.Load<NewHorizonsSaveFile>(FileName, false);
|
||||
if (!_saveFile.Profiles.ContainsKey(_activeProfileName))
|
||||
_saveFile.Profiles.Add(_activeProfileName, new NewHorizonsProfile());
|
||||
_activeProfile = _saveFile.Profiles[_activeProfileName];
|
||||
Main.Instance.ModHelper.Storage.Save(_saveFile, FileName);
|
||||
Logger.LogVerbose($"Loaded save data for {_activeProfileName}");
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception)
|
||||
{
|
||||
Logger.LogError($"Couldn't create save data:\n{e}");
|
||||
try
|
||||
{
|
||||
Logger.LogVerbose($"Couldn't load save data from {FileName}, creating a new file");
|
||||
_saveFile = new NewHorizonsSaveFile();
|
||||
_saveFile.Profiles.Add(_activeProfileName, new NewHorizonsProfile());
|
||||
_activeProfile = _saveFile.Profiles[_activeProfileName];
|
||||
Main.Instance.ModHelper.Storage.Save(_saveFile, FileName);
|
||||
Logger.LogVerbose($"Loaded save data for {_activeProfileName}");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.LogError($"Couldn't create save data:\n{e}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -52,7 +57,19 @@ namespace NewHorizons.External
|
||||
public static void Save()
|
||||
{
|
||||
if (_saveFile == null) return;
|
||||
Main.Instance.ModHelper.Storage.Save(_saveFile, FileName);
|
||||
|
||||
// Threads exist
|
||||
lock (_lock)
|
||||
{
|
||||
try
|
||||
{
|
||||
Main.Instance.ModHelper.Storage.Save(_saveFile, FileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"Couldn't save data:\n{ex}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void Reset()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user