UnityGameProjectsCode / Rise2Point0Game / Static / SaveManager.cs
SaveManager.cs
Raw
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);
    }
}