private void onLoadLevel(On.Celeste.Level.orig_LoadLevel orig, Celeste.Level self, Celeste.Player.IntroTypes playerIntro, bool isFromLoader) { orig(self, playerIntro, isFromLoader); if (!self.Entities.Any(entity => entity is DashCountIndicator)) { // add the entity showing the dash count (it will be invisible unless the option is enabled) self.Add(new DashCountIndicator()); self.Entities.UpdateLists(); } }
private static void onLevelEnd(On.Celeste.Level.orig_End orig, Celeste.Level self) { // we're quitting the level, so we need to get rid of all of its entities. foreach (Entity entity in self.Entities) { queueReferenceToEntity(entity); } orig(self); if (nluaReferenceMap != null && nluaReferenceMap.TryGetValue(self, out int levelRef)) { // it seems NLua can't dispose entities by itself, so we need to help it a bit. Logger.Log("ExtendedVariantMode/LeakPreventionHack", $"Cleaning up reference of NLua to {self.GetType().FullName} {levelRef}"); nluaCollectObject.Invoke(nluaObjectTranslator, new object[] { levelRef }); } // now we can terminate all queued objects. cleanUpReferencesToQueuedObjects(); }
internal static void LoadLevel(_Level level, _Player.IntroTypes playerIntro, bool isFromLoader) => OnLoadLevel?.Invoke(level, playerIntro, isFromLoader);
internal static bool LoadEntity(_Level level, LevelData levelData, Vector2 offset, EntityData entityData) => OnLoadEntity?.InvokeWhileFalse(level, levelData, offset, entityData) ?? false;
internal static void TransitionTo(_Level level, LevelData next, Vector2 direction) => OnTransitionTo?.Invoke(level, next, direction);
internal static void CreatePauseMenuButtons(_Level level, TextMenu menu, bool minimal) => OnCreatePauseMenuButtons?.Invoke(level, menu, minimal);
internal static void Pause(_Level level, int startIndex, bool minimal, bool quickReset) => OnPause?.Invoke(level, startIndex, minimal, quickReset);
internal static void Complete(_Level level) => OnComplete?.Invoke(level);
internal static void Exit(_Level level, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow) => OnExit?.Invoke(level, exit, mode, session, snow);