예제 #1
0
    public void InitializeState()
    {
        int Id = GetComponent <Script_Slot>().Id;

        // ask Script_SavedGameTitleControl for file
        Model_SavedGameTitleData savedGame = Script_SavedGameTitleControl.Control.Load(Id);

        continueSubmenu.gameObject.SetActive(false);
        newGameSubmenu.gameObject.SetActive(false);

        if (mainController == null)
        {
            Debug.LogError("SavedGameTitle: You need to make ref to mainController");
        }

        if (savedGame == null)
        {
            EmptyState();
        }
        else
        {
            Render(savedGame);
        }
    }
예제 #2
0
    private void Render(Model_SavedGameTitleData savedGame)
    {
        string   run       = savedGame.run;
        float    clockTime = savedGame.clockTime;
        string   name      = savedGame.name;
        string   headline  = savedGame.headline;
        DateTime dateTime  = DateTime.FromBinary(savedGame.date);
        float    playTime  = savedGame.playTime;

        runText.text       = run.FormatRun();
        clockTimeText.text = clockTime.FormatSecondsClock(isClose: clockTime >= Script_Clock.WarningTime);
        nameText.text      = name;

        /// Empty means we are initializing a run, use default headline
        headlineText.text = String.IsNullOrEmpty(headline) ? headlineText.text : headline;

        dateText.text     = dateTime.FormatLastPlayedDateTime();
        playTimeText.text = playTime.FormatTotalPlayTime();

        savedState.gameObject.SetActive(true);
        emptyState.gameObject.SetActive(false);

        isRendered = true;
    }
    public Model_SavedGameTitleData Load(int saveSlotId)
    {
        string path     = Script_SaveGameControl.path;
        string fileName = Script_Utils.SaveTitleDataFile(saveSlotId);
        string filePath = $"{path}/{fileName}";

        try
        {
            if (File.Exists(filePath))
            {
                BinaryFormatter          bf   = new BinaryFormatter();
                FileStream               file = File.Open(filePath, FileMode.Open);
                Model_SavedGameTitleData data = (Model_SavedGameTitleData)bf.Deserialize(file);
                file.Close();

                if (Debug.isDebugBuild)
                {
                    Debug.Log("Successful title load at: " + filePath);
                }
                return(data);
            }
            else
            {
                if (Debug.isDebugBuild)
                {
                    Debug.Log("Did not load; file not found.");
                }
                return(null);
            }
        }
        catch (System.Exception e)
        {
            Debug.LogError("Failed Load with exception: " + e.ToString());
            return(null);
        }
    }
    /// <param name="type">SavePoint saves within Kelsingor</param>
    /// <param name="playerStateOverride">Option to override player state</param>
    public void Save(
        Model_PlayerState playerStateOverride = null,
        Model_GameData gameDataOverride       = null
        )
    {
        SetPath();

        try
        {
            /// Update total play time
            game.OnSaveTasks();

            BinaryFormatter bf = new BinaryFormatter();

            /// Main data to pass around and modify
            Model_SaveData saveData = new Model_SaveData();

            SaveGame(saveData);
            OverridePlayerData(saveData, playerStateOverride);
            HandleSaveRun(saveData);
            WriteSaveDataFile(bf, saveFilePath, saveData);

            /// Create SavedGameTitleData
            FileStream titleFile = File.Create(savedGameTitleDataPath);
            Model_SavedGameTitleData savedGameTitleData = savedGameTitleDataHandler.Create();
            bf.Serialize(titleFile, savedGameTitleData);
            titleFile.Close();

            if (Debug.isDebugBuild)
            {
                Debug.Log("Save successful at: " + saveFilePath);
            }
        }
        catch (System.Exception e)
        {
            Debug.LogError("Failed Save with exception: " + e.ToString());
        }

        void SaveGame(Model_SaveData data)
        {
            gameHandler.SaveGameData(data, gameDataOverride);
            playerHandler.SavePlayerData(data);
            entriesHandler.SaveEntries(data);
            inventoryHandler.SaveInventory(data);
            equipmentHandler.SaveEquipment(data);
            dropsHandler.SaveDrops(data);
            namesHandler.SaveNames(data);
            scarletCipherHandler.SaveScarletCipher(data);
            eventCycleHandler.SaveEventCycle(data);
            mynesMirrorHandler.SaveMynesMirror(data);
            pianosHandler.SavePianos(data);
        }

        void WriteSaveDataFile(BinaryFormatter bf, string filePath, Model_SaveData data)
        {
            // will overwrite existing file
            FileStream gameFile = File.Create(filePath);

            bf.Serialize(gameFile, data);
            gameFile.Close();
        }

        void OverridePlayerData(Model_SaveData data, Model_PlayerState playerState)
        {
            data.playerData = playerState ?? data.playerData;
        }

        void HandleSaveRun(Model_SaveData data)
        {
            levelsHandler.SaveLevels(data);
        }
    }