using System; using System.Collections.Generic; using System.Linq; using UnityEngine; public static class SaveManager { private static ScoreManager scoreMgr; private static InputManager inputMgr; private static SettingsManager settingsMgr; private static SoundManager soundMgr; private static AchievementSystem achSys; private static List<string> names = new List<string>(); private static List<float> scores = new List<float>(); private static List<float> times = new List<float>(); private static List<string> musicNames = new List<string>(); private static List<bool> musicFavs = new List<bool>(); private static List<bool> musicLocks = new List<bool>(); private static int[] achInts = new int[12]; private static bool[] achBools = new bool[2]; private static float[] achFloats = new float[2]; private static bool[] achUnlockStates = new bool[20]; public static void SetReferences() { GameObject persistentObj = ObjectManager.GetObject(4); scoreMgr = persistentObj.GetComponent<ScoreManager>(); inputMgr = persistentObj.GetComponent<InputManager>(); settingsMgr = persistentObj.GetComponent<SettingsManager>(); soundMgr = persistentObj.GetComponent<SoundManager>(); achSys = persistentObj.GetComponent<AchievementSystem>(); for (int i = 0; i < musicNames.Count; i++) { musicNames[i] = ""; } for (int i = 0; i < names.Count; i++) { names[i] = ""; } } public static void SetupScoreboard() { //called at the start of the game to set saved scores names = PlayerPrefsX.GetStringArray("entryNames").ToList(); scores = PlayerPrefsX.GetFloatArray("entryScores").ToList(); times = PlayerPrefsX.GetFloatArray("entryTimes").ToList(); scoreMgr.AddSavedScoresToBoard(names, scores, times); } public static void SetupMusicBoard() { musicNames = PlayerPrefsX.GetStringArray("musicNames").ToList(); musicFavs = PlayerPrefsX.GetBoolArray("musicFavorites").ToList(); musicLocks = PlayerPrefsX.GetBoolArray("musicLocks").ToList(); soundMgr.SetLoopAndShuffleStates(PlayerPrefsX.GetBool("musicLoop"), PlayerPrefsX.GetBool("musicShuffle")); if (musicNames.Count > 0) soundMgr.AddSavedMusicEntriesToBoard(musicNames, musicFavs, musicLocks); else soundMgr.AddAllCurrentTracksToBoard(); } public static void SetupAchievementList() { achInts = PlayerPrefsX.GetIntArray("achievementInts"); achBools = PlayerPrefsX.GetBoolArray("achievementBools"); achFloats = PlayerPrefsX.GetFloatArray("achievementFloats"); achUnlockStates = PlayerPrefsX.GetBoolArray("achievementUnlocks"); if (achInts.Length > 0) achSys.SetSavedInformation(achInts, achBools, achFloats, achUnlockStates); } public static void DeleteMusicBoardEntries() { musicNames.Clear(); musicFavs.Clear(); musicLocks.Clear(); for (int i = 0; i < musicNames.Count; i++) { musicNames[i] = ""; } PlayerPrefsX.SetStringArray("musicNames", musicNames.ToArray()); PlayerPrefsX.SetBoolArray("musicFavorites", musicFavs.ToArray()); PlayerPrefsX.SetBoolArray("musicLocks", musicLocks.ToArray()); //delete loop and shuffle state info } public static void DeleteScoreboardEntries() { names.Clear(); scores.Clear(); times.Clear(); for (int i = 0; i < names.Count; i++) { names[i] = ""; } PlayerPrefsX.SetStringArray("entryNames", names.ToArray()); PlayerPrefsX.SetFloatArray("entryScores", scores.ToArray()); PlayerPrefsX.SetFloatArray("entryTimes", times.ToArray()); } public static void DeleteAchievementInfo() { Array.Clear(achInts, 0, achInts.Length); Array.Clear(achBools, 0, achBools.Length); Array.Clear(achFloats, 0, achFloats.Length); Array.Clear(achUnlockStates, 0, achUnlockStates.Length); PlayerPrefsX.SetIntArray("achievementInts", achInts); PlayerPrefsX.SetBoolArray("achievementBools", achBools); PlayerPrefsX.SetFloatArray("achievementFloats", achFloats); PlayerPrefsX.SetBoolArray("achievementUnlocks", achUnlockStates); } public static void DeleteVideoAndAudioData() { //revert all changes to default for the options menu PlayerPrefs.DeleteKey("currentQuality"); PlayerPrefs.DeleteKey("currentResolution"); PlayerPrefs.DeleteKey("sfxVolume"); PlayerPrefs.DeleteKey("musicVolume"); PlayerPrefs.DeleteKey("masterVolume"); } public static void DeleteControlsData() { PlayerPrefs.DeleteKey("pauseKeyKB"); PlayerPrefs.DeleteKey("zoomKeyKB"); PlayerPrefs.DeleteKey("playNextKeyKB"); PlayerPrefs.DeleteKey("pauseMusicKeyKB"); PlayerPrefs.DeleteKey("playLastKeyKB"); PlayerPrefs.DeleteKey("openUnlocksKB"); PlayerPrefs.DeleteKey("toggleShuffleKB"); PlayerPrefs.DeleteKey("toggleLoopKB"); PlayerPrefs.DeleteKey("pauseKeyGP"); PlayerPrefs.DeleteKey("zoomKeyGP"); PlayerPrefs.DeleteKey("playNextKeyGP"); PlayerPrefs.DeleteKey("pauseMusicKeyGP"); PlayerPrefs.DeleteKey("playLastKeyGP"); PlayerPrefs.DeleteKey("openUnlocksGP"); PlayerPrefs.DeleteKey("toggleShuffleGP"); PlayerPrefs.DeleteKey("toggleLoopGP"); PlayerPrefs.DeleteKey("launchPlayer"); } public static void DeleteGameSettingsData() { PlayerPrefs.DeleteKey("jumpBar"); PlayerPrefs.DeleteKey("classicMovement"); PlayerPrefs.DeleteKey("disableTut"); PlayerPrefs.DeleteKey("chillMode"); PlayerPrefs.DeleteKey("disableScore"); PlayerPrefs.DeleteKey("disableIcons"); } public static void SaveAchievementSystemInfo(int[] ints, bool[] bools, float[] floats, bool[] unlockStates) { achInts = ints; achBools = bools; achFloats = floats; achUnlockStates = unlockStates; PlayerPrefsX.SetIntArray("achievementInts", achInts); PlayerPrefsX.SetBoolArray("achievementBools", achBools); PlayerPrefsX.SetFloatArray("achievementFloats", achFloats); PlayerPrefsX.SetBoolArray("achievementUnlocks", achUnlockStates); } public static void SaveScoreBoardEntries(List<string> mgrNames, List<float> mgrScores, List<float> mgrTimes) { names = mgrNames; scores = mgrScores; times = mgrTimes; PlayerPrefsX.SetStringArray("entryNames", names.ToArray()); PlayerPrefsX.SetFloatArray("entryScores", scores.ToArray()); PlayerPrefsX.SetFloatArray("entryTimes", times.ToArray()); } public static void SaveMusicBoardEntries(List<string> names, List<bool> musicFavorites, List<bool> musicLockStates) { musicFavs = musicFavorites; musicNames = names; musicLocks = musicLockStates; PlayerPrefsX.SetStringArray("musicNames", musicNames.ToArray()); PlayerPrefsX.SetBoolArray("musicFavorites", musicFavs.ToArray()); PlayerPrefsX.SetBoolArray("musicLocks", musicLocks.ToArray()); } public static void SaveMusicBoardShuffleState(bool state) { PlayerPrefsX.SetBool("musicShuffle", state); } public static void SaveMusicBoardLoopState(bool state) { PlayerPrefsX.SetBool("musicLoop", state); } public static void SetupInputs() { if (PlayerPrefs.HasKey("pauseKeyKB")) inputMgr.SetSavedBinding(0, PlayerPrefs.GetString("pauseKeyKB"), 0); else inputMgr.SetDefaultBinding(0); if (PlayerPrefs.HasKey("zoomKeyKB")) inputMgr.SetSavedBinding(1, PlayerPrefs.GetString("zoomKeyKB"), 0); else inputMgr.SetDefaultBinding(7); if (PlayerPrefs.HasKey("playNextKeyKB")) inputMgr.SetSavedBinding(2, PlayerPrefs.GetString("playNextKeyKB"), 0); else inputMgr.SetDefaultBinding(4); if (PlayerPrefs.HasKey("pauseMusicKeyKB")) inputMgr.SetSavedBinding(3, PlayerPrefs.GetString("pauseMusicKeyKB"), 0); else inputMgr.SetDefaultBinding(5); if (PlayerPrefs.HasKey("playLastKeyKB")) inputMgr.SetSavedBinding(4, PlayerPrefs.GetString("playLastKeyKB"), 0); else inputMgr.SetDefaultBinding(6); if (PlayerPrefs.HasKey("openUnlocksKB")) inputMgr.SetSavedBinding(5, PlayerPrefs.GetString("openUnlocksKB"), 0); else inputMgr.SetDefaultBinding(17); if (PlayerPrefs.HasKey("toggleShuffleKB")) inputMgr.SetSavedBinding(6, PlayerPrefs.GetString("toggleShuffleKB"), 0); else inputMgr.SetDefaultBinding(18); if (PlayerPrefs.HasKey("toggleLoopKB")) inputMgr.SetSavedBinding(7, PlayerPrefs.GetString("toggleLoopKB"), 0); else inputMgr.SetDefaultBinding(19); if (PlayerPrefs.HasKey("pauseKeyGP")) inputMgr.SetSavedBinding(0, PlayerPrefs.GetString("pauseKeyGP"), 1); else inputMgr.SetDefaultBinding(8); if (PlayerPrefs.HasKey("zoomKeyGP")) inputMgr.SetSavedBinding(1, PlayerPrefs.GetString("zoomKeyGP"), 1); else inputMgr.SetDefaultBinding(9); if (PlayerPrefs.HasKey("playNextKeyGP")) inputMgr.SetSavedBinding(2, PlayerPrefs.GetString("playNextKeyGP"), 1); else inputMgr.SetDefaultBinding(10); if (PlayerPrefs.HasKey("pauseMusicKeyGP")) inputMgr.SetSavedBinding(3, PlayerPrefs.GetString("pauseMusicKeyGP"), 1); else inputMgr.SetDefaultBinding(11); if (PlayerPrefs.HasKey("playLastKeyGP")) inputMgr.SetSavedBinding(4, PlayerPrefs.GetString("playLastKeyGP"), 1); else inputMgr.SetDefaultBinding(12); if (PlayerPrefs.HasKey("openUnlocksGP")) inputMgr.SetSavedBinding(5, PlayerPrefs.GetString("openUnlocksGP"), 1); else inputMgr.SetDefaultBinding(13); if (PlayerPrefs.HasKey("toggleShuffleGP")) inputMgr.SetSavedBinding(6, PlayerPrefs.GetString("toggleShuffleGP"), 1); else inputMgr.SetDefaultBinding(14); if (PlayerPrefs.HasKey("toggleLoopGP")) inputMgr.SetSavedBinding(7, PlayerPrefs.GetString("toggleLoopGP"), 1); else inputMgr.SetDefaultBinding(15); if (PlayerPrefs.HasKey("launchPlayer")) inputMgr.SetSavedBinding(8, PlayerPrefs.GetString("launchPlayer"), 1); else inputMgr.SetDefaultBinding(16); } }