static bool Prefix(EnvironmentEngine __instance)
        {
            if (MainGame.game_starting || MainGame.paused || !MainGame.game_started || __instance.IsTimeStopped())
            {
                return(true);
            }
            Config.Options opts = Config.GetOptions();
            float          mult = Time.timeScale == 10f ? opts.SleepTimeMult : opts.TimeMult;

            if (mult != 1)
            {
                float accountableDelta = Time.deltaTime / 225f;                 // since this._cur_time += deltaTime / 225f
                float adjDelta         = accountableDelta * mult - accountableDelta;
                EnvironmentEngine.SetTime(__instance.time_of_day.time_of_day + adjDelta);
            }
            if (opts.ConfigReloadKey.IsPressed())
            {
                Config.GetOptions(true);
                EffectBubblesManager.ShowImmediately(MainGame.me.player.pos3, "NKN configuration reloaded");
            }
            else if (opts.AddMoneyKey.IsPressed())
            {
                MainGame.me.player.data.money += 100;
                EffectBubblesManager.ShowImmediately(MainGame.me.player.pos3, "1 gold coin granted");
            }
            else if (opts.ResetPrayKey.IsPressed())
            {
                MainGame.me.player.SetParam("prayed_this_week", 0f);
                EffectBubblesManager.ShowImmediately(MainGame.me.player.pos3, "Weekly pray count reset");
            }
            else if (opts.TimeScaleSwitchKey.IsPressed())
            {
                if (opts.TimeScaleSwitchKey.State == 0)
                {
                    opts.TimeMult /= 10;
                }
                else
                {
                    opts.TimeMult *= 10;
                }
                EffectBubblesManager.ShowImmediately(MainGame.me.player.pos3, "Timescale is set to " + opts.TimeMult);
            }
            else if (opts.AllowSaveEverywhere)
            {
                if (opts.SaveGameKey.IsPressed())
                {
                    PlatformSpecific.SaveGame(MainGame.me.save_slot, MainGame.me.save, (PlatformSpecific.OnSaveCompleteDelegate)(slot => {
                        EffectBubblesManager.ShowImmediately(MainGame.me.player.pos3, "Saved succesfully");
                    }));
                }
            }
            return(true);
        }