private void OnLevelDoScreenWipe(On.Celeste.AreaData.orig_DoScreenWipe orig, Celeste.AreaData self, Scene scene, bool wipeIn, Action onComplete)
 {
     if (doTaxWipe)
     {
         new TaxWipe(scene, wipeIn, onComplete);
     }
     else
     {
         orig(self, scene, wipeIn, onComplete);
     }
 }
Beispiel #2
0
        // Everest 的 Bug,另外的 Mod Hook 了 PlayerDeadBody.End 方法后 Level.DoScreenWipe Hook 的方法 wipeIn 为 false 时就不触发了
        // 所以改成了 Hook AreaData.DoScreenWipe 方法
        private void QuickLoadWhenDeath(On.Celeste.AreaData.orig_DoScreenWipe orig, AreaData self, Scene scene,
                                        bool wipeIn, Action onComplete)
        {
            if (SpeedrunToolModule.Settings.Enabled && SpeedrunToolModule.Settings.AutoLoadAfterDeath && IsSaved &&
                !wipeIn && scene is Level level &&
                onComplete != null && (onComplete == level.Reload || currentPlayerDeadBody?.HasGolden == true))
            {
                Action complete = onComplete;
                currentPlayerDeadBody = null;
                onComplete            = () => {
                    if (IsSaved)
                    {
                        LoadState();
                    }
                    else
                    {
                        complete();
                    }
                };
            }

            orig(self, scene, wipeIn, onComplete);
        }