Files
source/Assets/Scripts/BazookaManager.cs

636 lines
22 KiB
C#

using System.IO;
using System.Numerics;
using Newtonsoft.Json.Linq;
using UnityEngine;
public class BazookaManager : MonoBehaviour
{
public static BazookaManager Instance;
private bool firstLoadDone = false;
public JObject saveFile = new()
{
["version"] = "0"
};
void Awake()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
if (!firstLoadDone)
{
firstLoadDone = true;
Load();
}
}
else
{
Destroy(gameObject);
}
}
void OnApplicationQuit()
{
Save();
}
void OnApplicationPause(bool pause)
{
if (pause)
{
Save();
}
}
public void Load()
{
if (SensitiveInfo.BAZOOKA_MANAGER_KEY.Trim().Length == 0 || SensitiveInfo.BAZOOKA_MANAGER_FILE_KEY.Trim().Length == 0) return;
string path = Path.Join(Application.persistentDataPath, SensitiveInfo.BAZOOKA_MANAGER_FILE_KEY + ".dat");
if (!File.Exists(path))
{
File.Create(path).Dispose();
}
else
{
try
{
var tempSaveFile = JObject.Parse(SensitiveInfo.DecryptRaw(File.ReadAllBytes(path), SensitiveInfo.BAZOOKA_MANAGER_KEY));
if (tempSaveFile != null) saveFile = tempSaveFile;
}
catch
{
Debug.LogWarning("Failed to load save file");
}
}
if (saveFile["version"] == null || saveFile["version"].ToString() != "0")
{
saveFile["version"] = "0";
}
}
public void Save()
{
#if UNITY_EDITOR
return;
#else
if (SensitiveInfo.BAZOOKA_MANAGER_KEY.Trim().Length == 0 || SensitiveInfo.BAZOOKA_MANAGER_FILE_KEY.Trim().Length == 0) return;
string path = Path.Join(Application.persistentDataPath, SensitiveInfo.BAZOOKA_MANAGER_FILE_KEY + ".dat");
var encoded = SensitiveInfo.EncryptRaw(saveFile.ToString(Newtonsoft.Json.Formatting.None), SensitiveInfo.BAZOOKA_MANAGER_KEY);
if (encoded == null) return;
using var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
fileStream.Write(encoded, 0, encoded.Length);
fileStream.Flush(true);
#endif
}
public void ResetSave()
{
saveFile = new JObject
{
["version"] = "0"
};
Save();
}
//Random stuff
public void SetLikedPosts(JArray value)
{
saveFile["likedPosts"] = value;
}
public JArray GetLikedPosts()
{
if (saveFile["likedPosts"] == null) return new JArray();
return JArray.Parse(saveFile["likedPosts"].ToString());
}
//Bird stuff
public void SetBirdIcon(int value)
{
if (saveFile["bird"] == null) saveFile["bird"] = new JObject();
saveFile["bird"]["icon"] = value;
}
public void UnsetBirdIcon()
{
if (saveFile["bird"] == null) return;
if (saveFile["bird"]["icon"] == null) return;
(saveFile["bird"] as JObject)?.Remove("icon");
}
public int GetBirdIcon()
{
if (saveFile["bird"] == null) return 1;
if (saveFile["bird"]["icon"] == null) return 1;
return int.Parse(saveFile["bird"]["icon"].ToString());
}
public void SetBirdOverlay(int value)
{
if (saveFile["bird"] == null) saveFile["bird"] = new JObject();
saveFile["bird"]["overlay"] = value;
}
public void UnsetBirdOverlay()
{
if (saveFile["bird"] == null) return;
if (saveFile["bird"]["overlay"] == null) return;
(saveFile["bird"] as JObject)?.Remove("overlay");
}
public int GetBirdOverlay()
{
if (saveFile["bird"] == null) return 0;
if (saveFile["bird"]["overlay"] == null) return 0;
return int.Parse(saveFile["bird"]["overlay"].ToString());
}
public void SetCustomBirdIconData(MarketplaceIconStorageType value)
{
if (saveFile["bird"] == null) saveFile["bird"] = new JObject();
saveFile["bird"]["customIcon"] = JObject.FromObject(value);
}
public void UnsetCustomBirdIconData()
{
if (saveFile["bird"] == null) return;
if (saveFile["bird"]["customIcon"] == null) return;
(saveFile["bird"] as JObject)?.Remove("customIcon");
}
public MarketplaceIconStorageType GetCustomBirdIconData()
{
if (saveFile["bird"] == null) return new();
if (saveFile["bird"]["customIcon"] == null) return new();
return saveFile["bird"]["customIcon"].ToObject<MarketplaceIconStorageType>();
}
//Settings stuff
public void SetSettingFullScreen(bool value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["fullScreen"] = value;
}
public bool GetSettingFullScreen()
{
if (saveFile["settings"] == null) return true;
if (saveFile["settings"]["fullScreen"] == null) return true;
return bool.Parse(saveFile["settings"]["fullScreen"].ToString());
}
public void SetSettingShowFPS(bool value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["showFps"] = value;
}
public bool GetSettingShowFPS()
{
if (saveFile["settings"] == null) return false;
if (saveFile["settings"]["showFps"] == null) return false;
return bool.Parse(saveFile["settings"]["showFps"].ToString());
}
public void SetSettingVsync(bool value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["vsync"] = value;
}
public bool GetSettingVsync()
{
if (saveFile["settings"] == null) return true;
if (saveFile["settings"]["vsync"] == null) return true;
return bool.Parse(saveFile["settings"]["vsync"].ToString());
}
public void SetSettingHideSocials(bool value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["hideSocials"] = value;
}
public bool? GetSettingHideSocials()
{
if (saveFile["settings"] == null) return null;
if (saveFile["settings"]["hideSocials"] == null) return null;
return bool.Parse(saveFile["settings"]["hideSocials"].ToString());
}
public void SetSettingRandomMusic(bool value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["randomMusic"] = value;
}
public bool GetSettingRandomMusic()
{
if (saveFile["settings"] == null) return true;
if (saveFile["settings"]["randomMusic"] == null) return true;
return bool.Parse(saveFile["settings"]["randomMusic"].ToString());
}
public void SetSettingMusicVolume(float value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["musicVolume"] = value;
}
public float GetSettingMusicVolume()
{
if (saveFile["settings"] == null) return 1f;
if (saveFile["settings"]["musicVolume"] == null) return 1f;
return float.Parse(saveFile["settings"]["musicVolume"].ToString());
}
public void SetSettingSFXVolume(float value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["sfxVolume"] = value;
}
public float GetSettingSFXVolume()
{
if (saveFile["settings"] == null) return 1f;
if (saveFile["settings"]["sfxVolume"] == null) return 1f;
return float.Parse(saveFile["settings"]["sfxVolume"].ToString());
}
public void SetColorSettingBackground(JArray value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
if (saveFile["settings"]["colors"] == null) saveFile["settings"]["colors"] = new JObject();
saveFile["settings"]["colors"]["background"] = value;
}
public JArray GetColorSettingBackground()
{
if (saveFile["settings"] == null) return new JArray(58, 58, 58);
if (saveFile["settings"]["colors"] == null) return new JArray(58, 58, 58);
if (saveFile["settings"]["colors"]["background"] == null) return new JArray(58, 58, 58);
return JArray.Parse(saveFile["settings"]["colors"]["background"].ToString());
}
public void SetColorSettingMenuBackground(JArray value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
if (saveFile["settings"]["colors"] == null) saveFile["settings"]["colors"] = new JObject();
saveFile["settings"]["colors"]["menuBackground"] = value;
}
public JArray GetColorSettingMenuBackground()
{
if (saveFile["settings"] == null) return new JArray(24, 24, 24);
if (saveFile["settings"]["colors"] == null) return new JArray(24, 24, 24);
if (saveFile["settings"]["colors"]["menuBackground"] == null) return new JArray(24, 24, 24);
return JArray.Parse(saveFile["settings"]["colors"]["menuBackground"].ToString());
}
public void SetColorSettingButton(JArray value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
if (saveFile["settings"]["colors"] == null) saveFile["settings"]["colors"] = new JObject();
saveFile["settings"]["colors"]["button"] = value;
}
public JArray GetColorSettingButton()
{
if (saveFile["settings"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"]["button"] == null) return new JArray(255, 255, 255);
return JArray.Parse(saveFile["settings"]["colors"]["button"].ToString());
}
public void SetColorSettingText(JArray value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
if (saveFile["settings"]["colors"] == null) saveFile["settings"]["colors"] = new JObject();
saveFile["settings"]["colors"]["text"] = value;
}
public JArray GetColorSettingText()
{
if (saveFile["settings"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"]["text"] == null) return new JArray(255, 255, 255);
return JArray.Parse(saveFile["settings"]["colors"]["text"].ToString());
}
public void SetColorSettingButtonContent(JArray value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
if (saveFile["settings"]["colors"] == null) saveFile["settings"]["colors"] = new JObject();
saveFile["settings"]["colors"]["buttonColor"] = value;
}
public JArray GetColorSettingButtonContent()
{
if (saveFile["settings"] == null) return new JArray(0, 0, 0);
if (saveFile["settings"]["colors"] == null) return new JArray(0, 0, 0);
if (saveFile["settings"]["colors"]["buttonColor"] == null) return new JArray(0, 0, 0);
return JArray.Parse(saveFile["settings"]["colors"]["buttonColor"].ToString());
}
public void SetColorSettingIcon(JArray value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
if (saveFile["settings"]["colors"] == null) saveFile["settings"]["colors"] = new JObject();
saveFile["settings"]["colors"]["icon"] = value;
}
public JArray GetColorSettingIcon()
{
if (saveFile["settings"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"]["icon"] == null) return new JArray(255, 255, 255);
return JArray.Parse(saveFile["settings"]["colors"]["icon"].ToString());
}
public void UnsetColorSettingIcon()
{
if (saveFile["settings"] == null) return;
if (saveFile["settings"]["colors"] == null) return;
if (saveFile["settings"]["colors"]["icon"] == null) return;
(saveFile["settings"]["colors"] as JObject)?.Remove("icon");
}
public void SetColorSettingOverlay(JArray value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
if (saveFile["settings"]["colors"] == null) saveFile["settings"]["colors"] = new JObject();
saveFile["settings"]["colors"]["overlay"] = value;
}
public JArray GetColorSettingOverlay()
{
if (saveFile["settings"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"] == null) return new JArray(255, 255, 255);
if (saveFile["settings"]["colors"]["overlay"] == null) return new JArray(255, 255, 255);
return JArray.Parse(saveFile["settings"]["colors"]["overlay"].ToString());
}
public void UnsetColorSettingOverlay()
{
if (saveFile["settings"] == null) return;
if (saveFile["settings"]["colors"] == null) return;
if (saveFile["settings"]["colors"]["overlay"] == null) return;
(saveFile["settings"]["colors"] as JObject)?.Remove("overlay");
}
//Account stuff
public void SetAccountSession(string value)
{
if (saveFile["account"] == null) saveFile["account"] = new JObject();
saveFile["account"]["session"] = value;
}
public string GetAccountSession()
{
if (saveFile["account"] == null) return null;
if (saveFile["account"]["session"] == null) return null;
return saveFile["account"]["session"].ToString();
}
public void UnsetAccountSession()
{
if (saveFile["account"] == null) return;
(saveFile["account"] as JObject)?.Remove("session");
}
public void SetAccountName(string value)
{
if (saveFile["account"] == null) saveFile["account"] = new JObject();
saveFile["account"]["name"] = value;
}
public string GetAccountName()
{
if (saveFile["account"] == null) return null;
if (saveFile["account"]["name"] == null) return null;
return saveFile["account"]["name"].ToString();
}
public void UnsetAccountName()
{
if (saveFile["account"] == null) return;
(saveFile["account"] as JObject)?.Remove("name");
}
public void SetAccountID(BigInteger value)
{
if (saveFile["account"] == null) saveFile["account"] = new JObject();
saveFile["account"]["id"] = value.ToString();
}
public BigInteger? GetAccountID()
{
if (saveFile["account"] == null) return null;
if (saveFile["account"]["id"] == null) return null;
return BigInteger.Parse(saveFile["account"]["id"].ToString());
}
public void UnsetAccountID()
{
if (saveFile["account"] == null) return;
(saveFile["account"] as JObject)?.Remove("id");
}
//Game store stuff
public void SetGameStoreHighScore(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["highScore"] = value.ToString();
}
public BigInteger GetGameStoreHighScore()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["highScore"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["highScore"].ToString());
}
public void UnsetGameStoreHighScore()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("highScore");
}
public void SetGameStoreTotalAttepts(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalAttempts"] = value.ToString();
}
public BigInteger GetGameStoreTotalAttepts()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalAttempts"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalAttempts"].ToString());
}
public void UnsetGameStoreTotalAttepts()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalAttempts");
}
public void SetGameStoreTotalNormalBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalNormalBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalNormalBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalNormalBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalNormalBerries"].ToString());
}
public void UnsetGameStoreTotalNormalBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalNormalBerries");
}
public void SetGameStoreTotalPoisonBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalPoisonBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalPoisonBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalPoisonBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalPoisonBerries"].ToString());
}
public void UnsetGameStoreTotalPoisonBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalPoisonBerries");
}
public void SetGameStoreTotalSlowBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalSlowBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalSlowBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalSlowBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalSlowBerries"].ToString());
}
public void UnsetGameStoreTotalSlowBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalSlowBerries");
}
public void SetGameStoreTotalUltraBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalUltraBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalUltraBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalUltraBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalUltraBerries"].ToString());
}
public void UnsetGameStoreTotalUltraBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalUltraBerries");
}
public void SetGameStoreTotalSpeedyBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalSpeedyBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalSpeedyBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalSpeedyBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalSpeedyBerries"].ToString());
}
public void UnsetGameStoreTotalSpeedyBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalSpeedyBerries");
}
public void SetGameStoreTotalCoinBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalCoinBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalCoinBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalCoinBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalCoinBerries"].ToString());
}
public void UnsetGameStoreTotalCoinBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalCoinBerries");
}
public void SetGameStoreTotalRandomBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalRandomBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalRandomBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalRandomBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalRandomBerries"].ToString());
}
public void UnsetGameStoreTotalRandomBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalRandomBerries");
}
public void SetGameStoreTotalAntiBerries(BigInteger value)
{
if (saveFile["gameStore"] == null) saveFile["gameStore"] = new JObject();
saveFile["gameStore"]["totalAntiBerries"] = value.ToString();
}
public BigInteger GetGameStoreTotalAntiBerries()
{
if (saveFile["gameStore"] == null) return 0;
if (saveFile["gameStore"]["totalAntiBerries"] == null) return 0;
return BigInteger.Parse(saveFile["gameStore"]["totalAntiBerries"].ToString());
}
public void UnsetGameStoreTotalAntiBerries()
{
if (saveFile["gameStore"] == null) return;
(saveFile["gameStore"] as JObject)?.Remove("totalAntiBerries");
}
}