using HarmonyLib;
using QSB.Patches;
using UnityEngine;

namespace QSB.SaveSync.Patches;

[HarmonyPatch(typeof(PlayerData))]
internal class PlayerDataPatches : QSBPatch
{
	public override QSBPatchTypes Type => QSBPatchTypes.OnModStart;

	[HarmonyPrefix]
	[HarmonyPatch(nameof(PlayerData.ResetGame))]
	public static bool ResetGame()
	{
		PlayerData._currentGameSave = new GameSave();
		QSBCore.ProfileManager.SaveGame(PlayerData._currentGameSave, null, null, null);
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(nameof(PlayerData.SaveCurrentGame))]
	public static bool SaveCurrentGame()
	{
		PlayerData._currentGameSave.version = Application.version;
		QSBCore.ProfileManager.SaveGame(PlayerData._currentGameSave, null, null, null);
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(nameof(PlayerData.SaveInputSettings))]
	public static bool SaveInputSettings()
	{
		QSBCore.ProfileManager.SaveGame(null, null, null, PlayerData.inputJSON);
		return false;
	}

	[HarmonyPrefix]
	[HarmonyPatch(nameof(PlayerData.SaveSettings))]
	public static bool SaveSettings()
	{
		QSBCore.ProfileManager.SaveGame(null, PlayerData._settingsSave, PlayerData._graphicsSettings, PlayerData.inputJSON);
		return false;
	}

	// this is actually still StandaloneProfileManager in the gamepass dll. game bug?
	[HarmonyPrefix]
	[HarmonyPatch(nameof(PlayerData.IsBusy))]
	public static bool IsBusy(ref bool __result)
	{
		__result = QSBCore.ProfileManager.isBusyWithFileOps;
		return false;
	}
}