Пример #1
0
        public static void SaveModdedSave(AutoSaveDirector director, string nextfilename)
        {
            var storageprovider = director.StorageProvider as FileStorageProvider;

            if (storageprovider == null)
            {
                return;
            }
            var modpath = GetModdedPath(storageprovider, nextfilename);

            Debug.Log(modpath + " is our modded path");
            PullModdedData(data, director.SavedGame.gameState);
            data.InitializeEnumTranslator();
            data.FixAllEnumValues(EnumTranslator.TranslationMode.TOTRANSLATED);
            if (File.Exists(modpath))
            {
                File.Delete(modpath);
            }
            using (var writer = new BinaryWriter(new FileStream(modpath, FileMode.OpenOrCreate)))
            {
                data.Write(writer);
            }

            data.FixAllEnumValues(EnumTranslator.TranslationMode.FROMTRANSLATED);
            PushAllPartialData(data, director.SavedGame.gameState); // re-apply the data we took out so we leave the game state relatively untouched
        }
Пример #2
0
        public static void LoadModdedSave(AutoSaveDirector director, string savename)
        {
            var storageprovider = director.StorageProvider as FileStorageProvider;

            if (storageprovider == null)
            {
                return;
            }
            var modpath = GetModdedPath(storageprovider, savename);

            Debug.Log(modpath + " is our modded path");
            ClearAllNonData();
            if (!File.Exists(modpath))
            {
                return;
            }

            using (var reader = new BinaryReader(new FileStream(modpath, FileMode.Open)))
            {
                data.Read(reader);
            }

            data.enumTranslator?.FixMissingEnumValues();
            data.FixAllEnumValues(EnumTranslator.TranslationMode.FROMTRANSLATED);
            PushAllModdedData(data, director.SavedGame.gameState);
        }
        /// <summary>Called on plugin init</summary>
        private void Awake()
        {
            // set the default help menu font
            _helpFont = Font.CreateDynamicFontFromOSFont("Consolas", 18);
            _debug = true;
            _showHelp = true;
            _timeDir = SRSingleton<SceneContext>.Instance.TimeDirector;
            _pediaDir = SRSingleton<SceneContext>.Instance.PediaDirector;
            _tutorialDir = SRSingleton<SceneContext>.Instance.TutorialDirector;
            _achieveDir = SRSingleton<SceneContext>.Instance.AchievementsDirector;
            _progressDir = SRSingleton<SceneContext>.Instance.ProgressDirector;
            _playerState = SRSingleton<SceneContext>.Instance.PlayerState;
            _autoSave = SRSingleton<GameContext>.Instance.AutoSaveDirector;
            _inputDir = SRSingleton<GameContext>.Instance.InputDirector;




        }
Пример #4
0
    /// <summary>Retrieves various directors for debugging</summary>
    private void Awake()
    {
        // retrieve the directors
        _timeDir     = FindObjectOfType <TimeDirector>();
        _pediaDir    = FindObjectOfType <PediaDirector>();
        _tutorialDir = FindObjectOfType <TutorialDirector>();
        _achieveDir  = FindObjectOfType <AchievementsDirector>();
        _progressDir = FindObjectOfType <ProgressDirector>();
        _playerState = FindObjectOfType <PlayerState>();
        _autoSave    = FindObjectOfType <AutoSaveDirector>();

        // set the default help menu font
        _helpFont = Font.CreateDynamicFontFromOSFont("Consolas", 18);

        // prevent user from submitting bug reports.
        var inputDir = FindObjectOfType <InputDirector>();

        inputDir.bugReportPrefab = new GameObject();
        inputDir.bugReportPrefab.SetActive(false);
    }
Пример #5
0
        public static void SaveModdedSave(AutoSaveDirector director, string nextfilename)
        {
            var storageprovider = director.storageProvider as FileStorageProvider;

            if (storageprovider == null)
            {
                return;
            }
            var modpath = GetModdedPath(storageprovider, nextfilename);

            Debug.Log(modpath + " is our modded path");
            PullModdedData(director.savedGame.gameState);
            data.InitializeAllEnumTranslators();
            data.FixAllEnumValues(EnumTranslator.TranslationMode.TOTRANSLATED);
            if (File.Exists(modpath))
            {
                File.Delete(modpath);
            }
            using (var writer = new BinaryWriter(new FileStream(modpath, FileMode.OpenOrCreate)))
            {
                data.Write(writer);
            }
        }
Пример #6
0
 public static void LoadModSave(AutoSaveDirector director, GameData.Summary summary)
 {
     SaveHandler.LoadModdedSave(director, summary.saveName);
 }
Пример #7
0
 public static void LoadModSave(AutoSaveDirector director, GameData.Summary summary)
 {
     Debug.Log("Fallback loaded " + summary.name);
     SaveHandler.LoadModdedSave(director, summary.saveName);
 }
    /// <summary>Handles debugging features</summary>
    private void Update()
    {
        // retrieve the directors
        if (!_timeDir)
        {
            _timeDir = FindObjectOfType <TimeDirector>();
        }
        if (!_pediaDir)
        {
            _pediaDir = FindObjectOfType <PediaDirector>();
        }
        if (!_tutorialDir)
        {
            _tutorialDir = FindObjectOfType <TutorialDirector>();
        }
        if (!_achieveDir)
        {
            _achieveDir = FindObjectOfType <AchievementsDirector>();
        }
        if (!_progressDir)
        {
            _progressDir = FindObjectOfType <ProgressDirector>();
        }
        if (!_playerState)
        {
            _playerState = FindObjectOfType <PlayerState>();
        }
        if (!_autoSave)
        {
            _autoSave = FindObjectOfType <AutoSaveDirector>();
        }
        if (!_inputDir)
        {
            _inputDir = FindObjectOfType <InputDirector>();
            if (_inputDir) // prevent user from submitting bug reports.
            {
                var bugReportUI = _inputDir.bugReportPrefab.GetComponentInChildren <BugReportUI>();
                bugReportUI.submitButton.interactable = false;
                bugReportUI.summaryField.interactable = false;
                bugReportUI.descField.interactable    = false;

                bugReportUI.summaryField.text = "Debug Menu Mod installed - Reporting Issues is deactivated";
                bugReportUI.descField.text    = "Notice: While this debug menu mod is active, you will not be able to report bugs. " +
                                                "This mod is not supported by Monomi Park and never will be.";
            }
        }

        // retrieve object and component references
        if (!_player)
        {
            _player = GameObject.Find("SimplePlayer");
        }
        if (!_fpController)
        {
            _fpController = _player?.GetComponent <vp_FPController>();
            if (_noclip)
            {
                StartNoclip();
            }
        }
        if (!_camera)
        {
            _camera = GameObject.Find("FPSCamera");
        }
        if (!_hudUi)
        {
            _hudUi = GameObject.Find("HudUI");
        }

        // the debug menu shouldn't function if the game is frozen
        if (Time.timeScale <= 0f)
        {
            return;
        }

        // toggle the debug menu
        if (Input.GetKeyDown(KeyCode.F9))
        {
            _debug = !_debug;

            // if the debug menu was on previously,
            // turn off any cheats that may be on.
            if (!_debug)
            {
                _noclip         = false;
                _infiniteEnergy = false;
                _infiniteHealth = false;

                // make hud visible
                _hudUi?.SetActive(true);
            }
        }

        // debug mode is off, nothing more to do here
        if (!_debug)
        {
            return;
        }

        // decrement time of day
        if (Input.GetKeyDown(KeyCode.LeftBracket))
        {
            _timeDir?.AdjustTimeOfDay(-0.0416666679f);

            // check for negative time
            if (_timeDir?.WorldTime() <= 0f)
            {
                _timeDir?.SetWorldTime(0f);
            }
        }

        // increment time of day
        else if (Input.GetKeyDown(KeyCode.RightBracket))
        {
            _timeDir?.AdjustTimeOfDay(0.0416666679f);
        }

        // toggle help menu
        if (Input.GetKeyDown(KeyCode.F10))
        {
            _showHelp = !_showHelp;
        }

        // add 1000 credits
        if (Input.GetKeyDown(KeyCode.Equals) || Input.GetKeyDown(KeyCode.KeypadPlus))
        {
            _playerState?.AddCurrency(1000);
        }

        // subtract 1000 credits
        else if (Input.GetKeyDown(KeyCode.Minus) || Input.GetKeyDown(KeyCode.KeypadMinus))
        {
            _playerState?.AddCurrency(-1000);
        }

        // toggle heads-up display
        if (Input.GetKeyDown(KeyCode.F6))
        {
            _hudUi?.SetActive(!_hudUi.activeSelf);
        }

        // reset player progress
        if (Input.GetKeyDown(KeyCode.F12))
        {
            Console.WriteLine("DEBUG: Tutorials/Pedia/Achievements/Progress Reset");
            _pediaDir?.DebugClearUnlocked();
            _tutorialDir?.DebugClearCompleted();
            _achieveDir?.DebugClearAwarded();
            _progressDir?.DebugClearProgress();
        }

        // unlock all progress
        else if (Input.GetKeyDown(KeyCode.F11))
        {
            Console.WriteLine("DEBUG: Tutorials/Pedia/Achievements/Progress Unlocked");
            _pediaDir?.DebugAllUnlocked();
            _tutorialDir?.DebugAllCompleted();
            _achieveDir?.DebugAllAwarded();
            _progressDir?.DebugUnlockProgress();
        }

        // unlock all upgrades
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            Console.WriteLine("DEBUG: All Personal Upgrades");
            _playerState?.DebugGiveAllUpgrades();
            _playerState?.SetHealth(_playerState.GetMaxHealth());
            _playerState?.SetEnergy(_playerState.GetMaxEnergy());

            // add 5 keys
            for (var i = 0; i < 5; i++)
            {
                _playerState?.AddKey();
            }
        }

        // fill inventory with random items and ammo
        if (Input.GetKeyDown(KeyCode.Alpha9) && _playerState)
        {
            Console.WriteLine("DEBUG: Fill Ammo");
            _playerState?.Ammo?.DebugFillRandomAmmo();
        }

        // toggle infinite energy
        if (Input.GetKeyDown(KeyCode.Alpha6))
        {
            _infiniteEnergy = !_infiniteEnergy;
        }

        // toggle infinite health
        if (Input.GetKeyDown(KeyCode.Alpha7))
        {
            _infiniteHealth = !_infiniteHealth;
        }

        // clear inventory
        if (Input.GetKeyDown(KeyCode.K))
        {
            _playerState?.Ammo?.Clear();
        }

        // refill inventory
        if (Input.GetKeyDown(KeyCode.L) && _playerState)
        {
            _playerState?.Ammo?.DebugRefillAmmo();
        }

        // toggle noclip
        if (Input.GetKeyDown(KeyCode.N) && _player)
        {
            if (!_noclip)
            {
                StartNoclip();
            }
            else
            {
                StopNoclip();
            }
        }

        // force the game to save
        if (Input.GetKeyDown(KeyCode.Alpha8))
        {
            Console.WriteLine("DEBUG: Forcing save now");
            _autoSave?.SaveAllNow();
        }

        // handle noclip, if it's enabled
        if (_noclip && _camera && _fpController)
        {
            // calculate speed, will be multiplied by two if run is held
            var speed = 20f * (SRInput.Actions.run.State ? 2f : 1f);

            // add movement
            _noclipPos += _camera.transform.forward * SRInput.Actions.vertical.RawValue * speed * Time.deltaTime;
            _noclipPos += _camera.transform.right * SRInput.Actions.horizontal.RawValue * speed * Time.deltaTime;

            // stop all movement on the controller and reposition it
            _fpController?.Stop();
            _fpController?.SetPosition(_noclipPos);
        }

        if (_infiniteEnergy && _playerState) // infinite energy's on, set our energy to max
        {
            _playerState.SetEnergy(_playerState.GetMaxEnergy());
        }

        if (_infiniteHealth && _playerState) // god mode's on, set our health to max
        {
            _playerState.SetHealth(_playerState.GetMaxHealth());
        }
    }
Пример #9
0
 static void PostFix(AutoSaveDirector __instance)
 {
     // do something on save game loads
 }