Beispiel #1
0
        private static Scene _GetNextScene(Overworld.StartMode startMode, HiresSnow snow)
        {
            bool transitionToModUpdater = false;

            if (CoreModule.Settings.AutoUpdateModsOnStartup)
            {
                if (!ModUpdaterHelper.IsAsyncUpdateCheckingDone())
                {
                    // update checking is not done yet.
                    // transition to mod updater screen to display the "checking for updates" message.
                    transitionToModUpdater = true;
                }
                else
                {
                    SortedDictionary <ModUpdateInfo, EverestModuleMetadata> modUpdates = ModUpdaterHelper.GetAsyncLoadedModUpdates();
                    if (modUpdates != null && modUpdates.Count != 0)
                    {
                        // update checking is done, and updates are available.
                        // transition to mod updater screen in order to install the updates
                        transitionToModUpdater = true;
                    }
                }
            }

            if (transitionToModUpdater)
            {
                return(new AutoModUpdater(snow));
            }
            else
            {
                return(new OverworldLoader(startMode, snow));
            }
        }
Beispiel #2
0
        public static bool PlayCustomVignette(Session session, bool fromSaveData)
        {
            bool     playVignette = !fromSaveData && session.StartedFromBeginning;
            AreaData area         = AreaData.Get(session);
            MapMetaCompleteScreen screen;
            MapMetaTextVignette   text;

            if (playVignette && (screen = area.GetMeta()?.LoadingVignetteScreen) != null && screen.Atlas != null)
            {
                Engine.Scene = new CustomScreenVignette(session, meta: screen);
                return(true);
            }
            else if (playVignette && (text = area.GetMeta()?.LoadingVignetteText) != null && text.Dialog != null)
            {
                HiresSnow snow = null;
                if (Engine.Scene is Overworld)
                {
                    snow = (Engine.Scene as Overworld).Snow;
                }

                if (snow != null && text.SnowDirection != null)
                {
                    snow.Direction = text.SnowDirection;
                }

                Engine.Scene = new CustomTextVignette(session, text.Dialog, snow);
                return(true);
            }

            return(false);
        }
Beispiel #3
0
        public void ctor(Mode mode, Session session, HiresSnow snow = null)
        {
            // Restore to metadata of A-Side.
            AreaData.Get(session).RestoreASideAreaData();

            orig_ctor(mode, session, snow);
            Everest.Events.Level.Exit(Engine.Scene as Level, this, mode, session, snow);
        }
Beispiel #4
0
        private static void LevelExitOnCtor(On.Celeste.LevelExit.orig_ctor orig, LevelExit self, LevelExit.Mode mode,
                                            Session session, HiresSnow snow)
        {
            orig(self, mode, session, snow);

            if (mode != LevelExit.Mode.GoldenBerryRestart)
            {
                Reset();
            }
        }
 public FactoryIntroVignette(Session session, HiresSnow snow = null)
 {
     this.session = session;
     areaMusic    = session.Audio.Music.Event;
     session.Audio.Music.Event = null;
     session.Audio.Apply(forceSixteenthNoteHack: false);
     Add(hud = new HudRenderer());
     RendererList.UpdateLists();
     textbox       = new Textbox("KaydenFox_FactoryMod_1_Factory_A_Intro");
     textCoroutine = new Coroutine(TextSequence());
 }
Beispiel #6
0
        public CustomTextVignette(Session session, string text, HiresSnow snow = null)
        {
            this.session = session;
            areaMusic    = session.Audio.Music.Event;
            session.Audio.Music.Event = null;
            session.Audio.Apply();

            sfx = Audio.Play(SFX.music_prologue_intro_vignette);

            if (snow == null)
            {
                fade = 1f;
                snow = new HiresSnow();
            }
            Add(renderer  = new HudRenderer());
            Add(this.snow = snow);
            RendererList.UpdateLists();

            this.text     = FancyText.Parse(Dialog.Get(text), 960, 8, 0f);
            textCoroutine = new Coroutine(TextSequence());
        }
 private void onLevelExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     ResetVariantsOnLevelExit();
 }
Beispiel #8
0
 public patch_LevelExit(Mode mode, Session session, HiresSnow snow = null)
     : base(mode, session, snow)
 {
     // no-op. MonoMod ignores this - we only need this to make the compiler shut up.
 }
Beispiel #9
0
 public extern void orig_ctor(Mode mode, Session session, HiresSnow snow = null);
Beispiel #10
0
            private static void OnLevelExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
            {
                DiscordPresence.startTimestamp = 0;
                DiscordPresence.endTimestamp   = 0;

                UpdateText(CoreModule.Settings.DiscordTextInMenu);
            }
 private void LevelExitOnCtor(On.Celeste.LevelExit.orig_ctor orig, LevelExit self, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     orig(self, mode, session, snow);
     previousRoom = null;
     if (mode == LevelExit.Mode.Restart && !StateManager.Instance.IsSaved)
     {
         SpeedrunToolModule.Settings.RoomTimer = SpeedrunToolSettings.RoomTimerStrings.First();
     }
 }
Beispiel #12
0
 internal static void Exit(_Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 => OnExit?.Invoke(level, exit, mode, session, snow);
 private void onLevelExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     snowBackdropAddedByEVM = false;
 }
Beispiel #14
0
 public void OnExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     if (mode == LevelExit.Mode.Completed ||
         mode == LevelExit.Mode.CompletedInterlude)
     {
         Step(level);
     }
 }
Beispiel #15
0
        public AutoModUpdater(HiresSnow snow)
        {
            this.snow = snow;

            cogwheel = GFX.Gui["reloader/cogwheel"];
        }
        private void EndlessCantRestart(On.Celeste.LevelExit.orig_ctor orig, LevelExit self, LevelExit.Mode mode, Session session, HiresSnow snow)
        {
            var settings = this.InRandomizerSettings;

            if (settings != null && settings.Algorithm == LogicType.Endless && (mode == LevelExit.Mode.Restart || mode == LevelExit.Mode.GoldenBerryRestart))
            {
                mode = LevelExit.Mode.SaveAndQuit;
            }

            orig(self, mode, session, snow);
        }
Beispiel #17
0
        /// <summary>
        /// Reset values if player exits or restarts chapter.
        /// </summary>
        /// <param name="level">Level object.</param>
        /// <param name="exit">Level exit object.</param>
        /// <param name="mode">Level exit mode.</param>
        /// <param name="session">Current session.</param>
        /// <param name="snow">???</param>
        private void OnLevelExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
        {
            Log($"OnLevelExit: mode={mode}");
            switch (mode)
            {
            case LevelExit.Mode.GoldenBerryRestart:
            case LevelExit.Mode.SaveAndQuit:
                break;

            default:
                // Reset player life count
                lifeCount     = 1;
                infiniteLives = true;
                SaveSessionData();
                break;
            }
        }
 private void EnterToRandoMenu(On.Celeste.OverworldLoader.orig_ctor orig, OverworldLoader self, Overworld.StartMode startMode, HiresSnow snow)
 {
     if ((startMode == Overworld.StartMode.MainMenu || startMode == Overworld.StartMode.AreaComplete) && this.InRandomizer)
     {
         startMode = RandoModule.STARTMODE_RANDOMIZER;
     }
     orig(self, startMode, snow);
 }
        private static void onLevelExitConstructor(On.Celeste.LevelExit.orig_ctor orig, LevelExit self, LevelExit.Mode mode, Session session, HiresSnow snow)
        {
            orig(self, mode, session, snow);

            if (mode == LevelExit.Mode.Restart || mode == LevelExit.Mode.GoldenBerryRestart)
            {
                // be sure to keep the lobby info in the session, even if we are resetting it.
                temporaryLobbySIDHolder    = CollabModule.Instance.Session.LobbySID;
                temporaryRoomHolder        = CollabModule.Instance.Session.LobbyRoom;
                temporarySpawnPointHolder  = new Vector2(CollabModule.Instance.Session.LobbySpawnPointX, CollabModule.Instance.Session.LobbySpawnPointY);
                temporarySaveAllowedHolder = CollabModule.Instance.Session.SaveAndReturnToLobbyAllowed;
            }
            if ((mode == LevelExit.Mode.GiveUp || mode == LevelExit.Mode.Completed) && CollabModule.Instance.Session.LobbySID != null)
            {
                // be sure that Return to Map and such from a collab entry returns to the lobby, not to the collab entry.
                SaveData.Instance.LastArea_Safe = AreaData.Get(CollabModule.Instance.Session.LobbySID).ToKey();
            }
        }
Beispiel #20
0
 private void onLevelExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     // reset the cooldown
     climbJumpGrabCooldown = -1f;
 }
Beispiel #21
0
 internal static void LevelExit(On.Celeste.LevelExit.orig_ctor orig, LevelExit self, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     if (EmoteModMain.anim_by_game == 1)
     {
         cancelEmote();
     }
     orig(self, mode, session, snow);
 }
Beispiel #22
0
        private static void onOverworldLoad(On.Celeste.OverworldLoader.orig_ctor orig, OverworldLoader self, Overworld.StartMode startMode, HiresSnow snow)
        {
            orig(self, startMode, snow);

            if (startMode != (Overworld.StartMode)(-1))    // -1 = in-game overworld from the collab utils
            {
                deactivateHooks();
                deactivateHooksNoJungleHelper();
            }
        }
        private void LevelExitOnCtor(On.Celeste.LevelExit.orig_ctor orig, LevelExit self, LevelExit.Mode mode, Session session, HiresSnow snow)
        {
            orig(self, mode, session, snow);

            Clear();
        }
 private static void saveNewLazilyLoadedPaths(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     writeNewPaths(session.Area.GetSID());
 }
Beispiel #25
0
 public patch_OverworldLoader(Overworld.StartMode startMode, HiresSnow snow = null)
     : base(startMode, snow)
 {
     // no-op. MonoMod ignores this - we only need this to make the compiler shut up.
 }
Beispiel #26
0
 public patch_AreaComplete(Session session, XmlElement xml, Atlas atlas, HiresSnow snow, MapMetaCompleteScreen meta)
     : base(session, xml, atlas, snow)
 {
     // no-op. MonoMod ignores this - we only need this to make the compiler shut up.
 }
 private void onLevelExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     ExistingColorGrades.Remove("trigger");
     if (Settings.ColorGrading >= ExistingColorGrades.Count)
     {
         Settings.ColorGrading  = -1;
         Settings.ModColorGrade = null;
     }
 }
Beispiel #28
0
 [PatchAreaCompleteCtor] // ... except for manually manipulating the method via MonoModRules
 public extern void ctor(Session session, XmlElement xml, Atlas atlas, HiresSnow snow);
Beispiel #29
0
 public void ctor_LevelExit(Mode mode, Session session, HiresSnow snow = null)
 {
     orig_ctor_LevelExit(mode, session, snow);
     Everest.Events.Level.Exit(Engine.Scene as Level, this, mode, session, snow);
 }
 private static void onLevelExit(Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow)
 {
     if (mode == LevelExit.Mode.SaveAndQuit)
     {
         // if saving in a No Refill Field, be sure to restore the refills.
         Player player = level.Tracker.GetEntity <Player>();
         if (player != null && player.CollideCheck <NoRefillField>())
         {
             level.Session.Inventory.NoRefills = false;
         }
     }
 }