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

View File

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