Exemple #1
0
    // SAVING AND LOADING

    /// <summary>
    /// Puts the data into a save class for saving.
    /// </summary>
    /// <returns></returns>
    public PlayerStatsSaveClass SaveStats()
    {
        PlayerStatsSaveClass saveData = new PlayerStatsSaveClass();

        //Overworld
        saveData.currentChapter = currentChapter.value;
        saveData.currentArea    = currentArea.value;
        saveData.playerArea     = playerArea.value;
        saveData.playerPosX     = playerPosX.value;
        saveData.playerPosY     = playerPosY.value;

        //Exp
        saveData.expTotal = totalExp.value;

        //Inventory
        saveData.money         = totalMoney.value;
        saveData.invItemBag    = invItemBag.GenerateSaveData();
        saveData.invItemEquip  = invItemEquip.GenerateSaveData();
        saveData.invKanjiBag   = invKanjiBag.GenerateSaveData();
        saveData.invKanjiEquip = invKanjiEquip.GenerateSaveData();

        //Time
        saveData.ingameDay     = ingameDay.value;
        saveData.playedSeconds = playedSeconds.value;

        return(saveData);
    }
 void CreateInfo(int saveCount)
 {
     this.saveCount = saveCount;
     settingsSave   = new SettingsSaveClass();
     playerSave     = new PlayerStatsSaveClass[saveCount];
     triggerSave    = new TriggerSaveClass[saveCount];
     for (int i = 0; i < saveCount; i++)
     {
         playerSave[i]  = new PlayerStatsSaveClass();
         triggerSave[i] = new TriggerSaveClass();
     }
 }
    /// <summary>
    /// Set ups the save file's information and image
    /// </summary>
    /// <param name="save"></param>
    void SetupSaveFile(int saveIndex)
    {
        PlayerStatsSaveClass pssc   = SaveController.instance.saveFiles.playerSave[saveIndex];
        SaveFileButton       button = saveFileButtons[saveIndex];

        bool newSave = (pssc.playerArea == 0);

        button.emptyFile.SetActive(newSave);
        button.saveStats.SetActive(!newSave);
        if (!isCurrentlySaving.value && newSave && selectedSaveFile == saveIndex)
        {
            selectedSaveFile = -1;
        }

        button.SetImage((saveIndex == selectedSaveFile) ? selectedImage : normalImage);

        button.currentChapter.text = "Ch. " + pssc.currentChapterIndex;
        button.currentArea.text    = ((Constants.OverworldArea)pssc.playerArea).ToString();
        button.level.text          = "Level " + new ExpLevel(pssc.expTotal).level;
        button.playTime.text       = "Time: " + Constants.PlayTimeFromInt(pssc.playedSeconds, false);
        Sprite icon;

        for (int i = 0; i < Constants.GEAR_EQUIP_SPACE; i++)
        {
            icon = emptyEquipSlot;
            if (!string.IsNullOrEmpty(pssc.invItemEquip.uuids[i]))
            {
                ItemEntry item = (ItemEntry)itemLibrary.GetEntry(pssc.invItemEquip.uuids[i]);
                icon = item.icon;
            }
            button.equipments[i].sprite = icon;
        }
        for (int i = 0; i < Constants.MODULE_EQUIP_SPACE; i++)
        {
            icon = emptyEquipSlot;
            if (!string.IsNullOrEmpty(pssc.invModuleEquip.uuids[i]))
            {
                Module module = (Module)moduleLibrary.GetEntry(pssc.invModuleEquip.uuids[i]);
                icon = module.icon;
            }
            button.modules[i].sprite = icon;
        }
    }
    /// <summary>
    /// Updates the save class and saves it to file.
    /// </summary>
    public void Save()
    {
        XmlWriterSettings xmlWriterSettings = new XmlWriterSettings()
        {
            Indent = true
        };
        XmlSerializer serializer;

        if (settingsValues != null)
        {
            serializer = new XmlSerializer(typeof(SettingsSaveClass));

            SettingsSaveClass settingsSave = settingsValues.SaveSettings();

            using (XmlWriter xmlWriter = XmlWriter.Create(settingsPath, xmlWriterSettings)) {
                serializer.Serialize(xmlWriter, settingsSave);
            }
            // file.Close();
            Debug.Log("Successfully saved the settings!");
        }

        if (playerStats != null)
        {
            serializer = new XmlSerializer(typeof(PlayerStatsSaveClass));
            PlayerStatsSaveClass playerSave = playerStats.SaveStats();
            using (XmlWriter xmlWriter = XmlWriter.Create(playerStatsPath, xmlWriterSettings)) {
                serializer.Serialize(xmlWriter, playerSave);
            }
            // file.Close();
            Debug.Log("Successfully saved the player stats!");
        }

        if (triggerController != null)
        {
            serializer = new XmlSerializer(typeof(TriggerSaveClass));
            TriggerSaveClass triggerSave = triggerController.SaveTriggers();
            using (XmlWriter xmlWriter = XmlWriter.Create(triggerPath, xmlWriterSettings)) {
                serializer.Serialize(xmlWriter, triggerSave);
            }
            // file.Close();
            Debug.Log("Successfully saved the trigger stats!");
        }
    }
    /// <summary>
    /// Loads the player stats from the save class data.
    /// </summary>
    /// <param name="saveData"></param>
    public void LoadStats()
    {
        if (currentSaveFileIndex.value == -1)
        {
            Debug.Log("New game. Nothing to load.");
            return;
        }
        PlayerStatsSaveClass saveData = SaveController.instance.saveFiles.playerSave[currentSaveFileIndex.value];

        //Overworld
        currentChapterIndex.value = saveData.currentChapterIndex;
        currentRoomNumber.value   = saveData.currentRoomNumber;
        currentArea.value         = playerArea.value = saveData.playerArea;
        playerPosX.value          = saveData.playerPosX;
        playerPosY.value          = saveData.playerPosY;

        //Follower
        playingAsAndroid.value = saveData.playingAsAndroid;
        useFollower.value      = saveData.useFollower;

        //Exp
        totalExp.value = saveData.expTotal;
        CalculateExp();

        //Inventory
        totalMoney.value = saveData.money;
        itemLibrary.GenerateDictionary();
        moduleLibrary.GenerateDictionary();
        invItemBag.LoadItemData(saveData.invItemBag, itemLibrary);
        invItemEquip.LoadItemData(saveData.invItemEquip, itemLibrary);
        invModuleBag.LoadItemData(saveData.invModuleBag, moduleLibrary);
        invModuleEquip.LoadItemData(saveData.invModuleEquip, moduleLibrary);

        //Time
        ingameDay.value     = saveData.ingameDay;
        playedSeconds.value = saveData.playedSeconds;

        RecalculateStats();

        loadCheckEvent.Invoke();
        Debug.Log("LOADED");
    }
    /// <summary>
    /// Puts the data into a save class for saving.
    /// </summary>
    /// <returns></returns>
    public void SaveStats()
    {
        if (currentSaveFileIndex.value == -1)
        {
            Debug.Log("New game. Nothing to save.");
            return;
        }
        PlayerStatsSaveClass playerData = new PlayerStatsSaveClass();

        //Overworld
        playerData.currentChapterIndex = currentChapterIndex.value;
        playerData.currentRoomNumber   = currentRoomNumber.value;
        playerData.playerArea          = playerArea.value;
        playerData.playerPosX          = playerPosX.value;
        playerData.playerPosY          = playerPosY.value;

        //Follower
        playerData.playingAsAndroid = playingAsAndroid.value;
        playerData.useFollower      = useFollower.value;

        //Exp
        playerData.expTotal = totalExp.value;
        playerData.money    = totalMoney.value;

        //Inventory
        playerData.invItemBag     = invItemBag.GenerateSaveData();
        playerData.invItemEquip   = invItemEquip.GenerateSaveData();
        playerData.invModuleBag   = invModuleBag.GenerateSaveData();
        playerData.invModuleEquip = invModuleEquip.GenerateSaveData();

        //Time
        playerData.ingameDay     = ingameDay.value;
        playerData.playedSeconds = playedSeconds.value;

        SaveController.instance.saveFiles.playerSave[currentSaveFileIndex.value] = playerData;
        saveCheckEvent.Invoke();
        Debug.Log("SAVED");
    }
Exemple #7
0
    /// <summary>
    /// Loads the player stats from the save class data.
    /// </summary>
    /// <param name="saveData"></param>
    public void LoadStats(PlayerStatsSaveClass saveData)
    {
        //Overworld
        currentArea.value = saveData.currentArea;
        playerArea.value  = saveData.playerArea;
        playerPosX.value  = saveData.playerPosX;
        playerPosY.value  = saveData.playerPosY;

        //Exp
        totalExp.value = saveData.expTotal;

        //Inventory
        totalMoney.value = saveData.money;
        itemLibrary.GenerateDictionary();
        invItemBag.LoadItemData(saveData.invItemBag, itemLibrary);
        invItemEquip.LoadItemData(saveData.invItemEquip, itemLibrary);
        invKanjiBag.LoadItemData(saveData.invKanjiBag, itemLibrary);
        invKanjiEquip.LoadItemData(saveData.invKanjiEquip, itemLibrary);

        //Time
        ingameDay.value     = saveData.ingameDay;
        playedSeconds.value = saveData.playedSeconds;
    }
    /// <summary>
    /// Reads the save file if it exists and sets the values.
    /// </summary>
    public void Load()
    {
        if (!loadGame)
        {
            return;
        }

        //Settings data
        if (settingsValues != null)
        {
            if (settingsValues != null && File.Exists(settingsPath))
            {
                XmlSerializer     serializer   = new XmlSerializer(typeof(SettingsSaveClass));
                FileStream        file         = File.Open(settingsPath, FileMode.Open);
                SettingsSaveClass settingsSave = serializer.Deserialize(file) as SettingsSaveClass;
                file.Close();

                settingsValues.LoadSettings(settingsSave);

                Debug.Log("Successfully loaded the settings!");
            }
            else
            {
                Debug.LogWarning("Could not open the file: " + settingsPath);
                Save();
            }
        }
        else
        {
            Debug.LogWarning("No settings object");
        }

        //Player data
        if (playerStats != null)
        {
            if (File.Exists(playerStatsPath))
            {
                XmlSerializer        serializer = new XmlSerializer(typeof(PlayerStatsSaveClass));
                FileStream           file       = File.Open(playerStatsPath, FileMode.Open);
                PlayerStatsSaveClass playerSave = serializer.Deserialize(file) as PlayerStatsSaveClass;
                file.Close();

                playerStats.LoadStats(playerSave);

                Debug.Log("Successfully loaded the player stats!");
            }
            else
            {
                Debug.LogWarning("Could not open the file: " + playerStatsPath);
                Save();
            }
        }
        else
        {
            Debug.LogWarning("No player stats object");
        }

        //Trigger data
        if (triggerController != null)
        {
            if (File.Exists(triggerPath))
            {
                XmlSerializer    serializer  = new XmlSerializer(typeof(TriggerSaveClass));
                FileStream       file        = File.Open(triggerPath, FileMode.Open);
                TriggerSaveClass triggerSave = serializer.Deserialize(file) as TriggerSaveClass;
                file.Close();

                triggerController.LoadTriggers(triggerSave);

                Debug.Log("Successfully loaded the triggers!");
            }
            else
            {
                Debug.LogWarning("Could not open the file: " + triggerPath);
                Save();
            }
        }
        else
        {
            Debug.LogWarning("No trigger object");
        }
    }