Finish fixing save data for signals

This commit is contained in:
Nick J. Connors 2022-01-02 01:14:37 -05:00
parent 11652e8939
commit d1f9c831b0
2 changed files with 23 additions and 9 deletions

View File

@ -11,17 +11,18 @@ namespace NewHorizons.External
{
private static NewHorizonsSaveFile _saveFile;
private static NewHorizonsProfile _activeProfile;
private static string _activeProfileName;
private static string _fileName = "save.json";
public static void Load()
{
var profileName = StandaloneProfileManager.SharedInstance.currentProfile.profileName;
_activeProfileName = StandaloneProfileManager.SharedInstance.currentProfile.profileName;
try
{
_saveFile = Main.Instance.ModHelper.Storage.Load<NewHorizonsSaveFile>(_fileName);
if (!_saveFile.Profiles.ContainsKey(profileName)) _saveFile.Profiles.Add(profileName, new NewHorizonsProfile());
_activeProfile = _saveFile.Profiles[profileName];
Logger.Log($"Loaded save data for {profileName}");
if (!_saveFile.Profiles.ContainsKey(_activeProfileName)) _saveFile.Profiles.Add(_activeProfileName, new NewHorizonsProfile());
_activeProfile = _saveFile.Profiles[_activeProfileName];
Logger.Log($"Loaded save data for {_activeProfileName}");
}
catch(Exception)
{
@ -29,10 +30,10 @@ namespace NewHorizons.External
{
Logger.Log($"Couldn't load save data from {_fileName}, creating a new file");
_saveFile = new NewHorizonsSaveFile();
_saveFile.Profiles.Add(profileName, new NewHorizonsProfile());
_activeProfile = _saveFile.Profiles[profileName];
_saveFile.Profiles.Add(_activeProfileName, new NewHorizonsProfile());
_activeProfile = _saveFile.Profiles[_activeProfileName];
Main.Instance.ModHelper.Storage.Save(_saveFile, _fileName);
Logger.Log($"Loaded save data for {profileName}");
Logger.Log($"Loaded save data for {_activeProfileName}");
}
catch(Exception e)
{
@ -49,8 +50,14 @@ namespace NewHorizons.External
public static void Reset()
{
if (_saveFile == null || _activeProfile == null) return;
if (_saveFile == null || _activeProfile == null)
{
Load();
}
Logger.Log($"Reseting save data for {_activeProfileName}");
_activeProfile = new NewHorizonsProfile();
_saveFile.Profiles[_activeProfileName] = _activeProfile;
Save();
}

View File

@ -40,6 +40,8 @@ namespace NewHorizons.Utility
Main.Instance.ModHelper.HarmonyHelper.AddPrefix(playerDataLearnFrequency, typeof(Patches), nameof(Patches.OnPlayerDataLearnFrequency));
var playerDataKnowsMultipleFrequencies = typeof(PlayerData).GetMethod("KnowsMultipleFrequencies");
Main.Instance.ModHelper.HarmonyHelper.AddPrefix(playerDataKnowsMultipleFrequencies, typeof(Patches), nameof(Patches.OnPlayerDataKnowsMultipleFrequencies));
var playerDataResetGame = typeof(PlayerData).GetMethod("ResetGame");
Main.Instance.ModHelper.HarmonyHelper.AddPostfix(playerDataResetGame, typeof(Patches), nameof(Patches.OnPlayerDataResetGame));
// Postfixes
Main.Instance.ModHelper.HarmonyHelper.AddPostfix<MapController>("Awake", typeof(Patches), nameof(Patches.OnMapControllerAwake));
@ -297,6 +299,11 @@ namespace NewHorizons.Utility
}
return true;
}
public static void OnPlayerDataResetGame()
{
NewHorizonsData.Reset();
}
#endregion
}
}