protected override bool UpdateEarlyOut() { if (this.GameState.IsTrialMode) { if (this.StartedNewGame && this.selectorPhase != SelectorPhase.Disappear) { this.sinceSelectorPhaseStarted = 0.0f; this.selectorPhase = SelectorPhase.Disappear; } if (this.StartedNewGame && !this.GameState.Loading) { this.DestroyMenu(); PauseMenu.Starfield = (StarField)null; this.CMProvider.Dispose(CM.Intro); return(true); } } else { if (this.StartedNewGame && this.IntroZoomIn == null && (PauseMenu.Starfield != null && PauseMenu.Starfield.IsDisposed)) { PauseMenu.Starfield = (StarField)null; ServiceHelper.AddComponent((IGameComponent)(this.IntroZoomIn = new IntroZoomIn(this.Game))); } if (this.StartedNewGame && this.IntroZoomIn != null && this.IntroZoomIn.IsDisposed) { this.IntroZoomIn = (IntroZoomIn)null; this.CMProvider.Dispose(CM.Intro); ServiceHelper.RemoveComponent <PauseMenu>(this); return(true); } } if ((this.nextMenuLevel ?? this.CurrentMenuLevel) == null) { this.DestroyMenu(); return(true); } else { return(this.StartedNewGame); } }
protected override bool UpdateEarlyOut() { if (this.GameState.IsTrialMode) { if (this.StartedNewGame && this.selectorPhase != SelectorPhase.Disappear) { this.sinceSelectorPhaseStarted = 0.0f; this.selectorPhase = SelectorPhase.Disappear; } if (this.StartedNewGame && !this.GameState.Loading) { this.DestroyMenu(); PauseMenu.Starfield = (StarField) null; this.CMProvider.Dispose(CM.Intro); return true; } } else { if (this.StartedNewGame && this.IntroZoomIn == null && (PauseMenu.Starfield != null && PauseMenu.Starfield.IsDisposed)) { PauseMenu.Starfield = (StarField) null; ServiceHelper.AddComponent((IGameComponent) (this.IntroZoomIn = new IntroZoomIn(this.Game))); } if (this.StartedNewGame && this.IntroZoomIn != null && this.IntroZoomIn.IsDisposed) { this.IntroZoomIn = (IntroZoomIn) null; this.CMProvider.Dispose(CM.Intro); ServiceHelper.RemoveComponent<PauseMenu>(this); return true; } } if ((this.nextMenuLevel ?? this.CurrentMenuLevel) == null) { this.DestroyMenu(); return true; } else return this.StartedNewGame; }
private void UpdateLogo() { double totalSeconds = this.phaseTime.TotalSeconds; switch (this.screen) { case Intro.Screen.ESRB_PEGI: switch (this.phase) { case Intro.Phase.FadeIn: this.opacity = 1f; this.ChangePhase(); return; case Intro.Phase.Wait: if (totalSeconds < 4.0) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (totalSeconds >= 0.25) this.ChangePhase(); this.opacity = 1f - Easing.EaseIn(FezMath.Saturate(totalSeconds * 4.0), EasingType.Sine); return; default: return; } case Intro.Screen.XBLA: switch (this.phase) { case Intro.Phase.FadeIn: if (totalSeconds >= 0.125) this.ChangePhase(); this.opacity = Easing.EaseIn(FezMath.Saturate(totalSeconds * 8.0), EasingType.Sine); return; case Intro.Phase.Wait: if (totalSeconds < 2.0) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (totalSeconds >= 0.25) this.ChangePhase(); this.opacity = 1f - Easing.EaseIn(FezMath.Saturate(totalSeconds * 4.0), EasingType.Sine); return; default: return; } case Intro.Screen.MGS: switch (this.phase) { case Intro.Phase.FadeIn: if (totalSeconds >= 0.125) this.ChangePhase(); this.opacity = Easing.EaseIn(FezMath.Saturate(totalSeconds * 8.0), EasingType.Sine); return; case Intro.Phase.Wait: if (totalSeconds < 2.0) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (totalSeconds >= 0.25) this.ChangePhase(); this.opacity = Math.Min(this.opacity, 1f - Easing.EaseIn(FezMath.Saturate(totalSeconds * 4.0), EasingType.Sine)); return; default: return; } case Intro.Screen.WhiteScreen: switch (this.phase) { case Intro.Phase.FadeIn: if (totalSeconds >= 0.125) this.ChangePhase(); this.opacity = Easing.EaseIn(FezMath.Saturate(totalSeconds * 8.0), EasingType.Sine); return; case Intro.Phase.Wait: if (!Intro.PreloadStarted) { this.GameState.SkipLoadScreen = true; this.GameState.Loading = true; Worker<bool> worker = this.ThreadPool.Take<bool>(new Action<bool>(this.DoPreLoad)); worker.Priority = ThreadPriority.AboveNormal; worker.Finished += (Action) (() => { this.ThreadPool.Return<bool>(worker); this.GameState.ScheduleLoadEnd = true; this.GameState.SkipLoadScreen = false; }); worker.Start(false); Intro.PreloadStarted = true; } if (!Intro.PreloadComplete) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (totalSeconds >= 0.25) this.ChangePhase(); this.opacity = Math.Min(this.opacity, 1f - Easing.EaseIn(FezMath.Saturate(totalSeconds * 4.0), EasingType.Sine)); return; default: return; } case Intro.Screen.Polytron: switch (this.phase) { case Intro.Phase.FadeIn: if (totalSeconds >= 1.5) this.ChangePhase(); this.opacity = 0.0f; this.PolytronLogo.Opacity = 1f; return; case Intro.Phase.Wait: if (totalSeconds < 1.5) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (totalSeconds >= 0.25) this.ChangePhase(); this.PolytronLogo.Opacity = 1f - Easing.EaseIn(FezMath.Saturate(totalSeconds * 4.0), EasingType.Sine); return; default: return; } case Intro.Screen.Trapdoor: switch (this.phase) { case Intro.Phase.FadeIn: if (totalSeconds >= 0.125) this.ChangePhase(); this.opacity = Easing.EaseIn(FezMath.Saturate(totalSeconds * 8.0), EasingType.Sine); return; case Intro.Phase.Wait: if (totalSeconds < 1.5) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (totalSeconds >= 0.25) this.ChangePhase(); this.opacity = Math.Min(this.opacity, 1f - Easing.EaseIn(FezMath.Saturate(totalSeconds * 4.0), EasingType.Sine)); return; default: return; } case Intro.Screen.TrixelEngine: float num = 0.0f; switch (this.phase) { case Intro.Phase.FadeIn: if (this.sTrixelIn != null) { SoundEffectExtensions.Emit(this.sTrixelIn); this.sTrixelIn = (SoundEffect) null; } if (totalSeconds >= 1.0) this.ChangePhase(); num = (float) ((1.0 - (double) Easing.EaseOut(FezMath.Saturate(totalSeconds), EasingType.Quadratic)) * 6.0); this.opacity = Easing.EaseIn(FezMath.Saturate(totalSeconds * 2.0 - 0.5), EasingType.Quadratic); break; case Intro.Phase.Wait: if (totalSeconds >= 1.0) { this.ChangePhase(); break; } else break; case Intro.Phase.FadeOut: if (this.sTrixelOut != null) { SoundEffectExtensions.Emit(this.sTrixelOut); this.sTrixelOut = (SoundEffect) null; } if (totalSeconds >= 0.5) this.ChangePhase(); this.opacity = Math.Min(this.opacity, 1f - Easing.EaseIn(FezMath.Saturate(totalSeconds * 2.0), EasingType.Quadratic)); num = Easing.EaseIn(FezMath.Saturate(totalSeconds * 2.0), EasingType.Quadratic) * -4f; break; } this.TrixelPlanes.Groups[0].Position = Vector3.Right * (0.5f + num); this.TrixelPlanes.Groups[1].Position = Vector3.Up * (0.5f + num); this.TrixelPlanes.Groups[2].Position = Vector3.Backward * num; break; case Intro.Screen.SaveIndicator: switch (this.phase) { case Intro.Phase.FadeIn: this.eDrone.VolumeFactor = FezMath.Saturate((float) totalSeconds / 0.125f); this.opacity = Easing.EaseIn(FezMath.Saturate(totalSeconds / 0.125), EasingType.Sine); if (totalSeconds < 0.125) return; this.ChangePhase(); return; case Intro.Phase.Wait: if (totalSeconds < 2.625) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: this.opacity = Math.Min(this.opacity, 1f - Easing.EaseOut(FezMath.Saturate(totalSeconds / 0.25), EasingType.Sine)); this.eDrone.VolumeFactor = (float) (1.0 - (double) FezMath.Saturate((float) totalSeconds / 0.25f) * 0.5); if (totalSeconds < 0.25) return; this.ChangePhase(); return; default: return; } case Intro.Screen.Fez: switch (this.phase) { case Intro.Phase.FadeIn: if (totalSeconds >= 0.75) this.ChangePhase(); this.opacity = Easing.EaseInOut(FezMath.Saturate(totalSeconds / 0.75), EasingType.Sine); this.promptOpacity = Easing.EaseIn(FezMath.Saturate((totalSeconds - 0.25) / 0.5), EasingType.Sine); return; case Intro.Phase.Wait: this.opacity = this.promptOpacity = 1f; if (this.InputManager.Jump != FezButtonState.Pressed && this.InputManager.Start != FezButtonState.Pressed) return; if (!this.Fake) this.InputManager.DetermineActiveController(); this.SoundManager.PlayNewSong((string) null, 0.0f); this.FezLogo.TransitionStarted = true; SoundEffectExtensions.Emit(this.sTitleBassHit).Persistent = true; this.ChangePhase(); return; case Intro.Phase.FadeOut: this.promptOpacity = this.opacity = 1f - Easing.EaseOut(FezMath.Saturate(totalSeconds / 1.0), EasingType.Sine); if (totalSeconds < 1.0) return; this.ChangePhase(); return; default: return; } case Intro.Screen.SellScreen: switch (this.phase) { case Intro.Phase.FadeIn: this.GameState.SkipRendering = true; this.opacity = Easing.EaseInOut(FezMath.Saturate(totalSeconds - 14.0), EasingType.Sine); if (totalSeconds < 15.0) return; this.ChangePhase(); return; case Intro.Phase.Wait: this.FezLogo.LogoTextureXFade = 1f - Easing.EaseIn((double) FezMath.Saturate((float) ((totalSeconds - 76.0) / 4.0)), EasingType.Sine); if (this.InputManager.Jump == FezButtonState.Pressed || this.InputManager.Start == FezButtonState.Pressed) { if (Fez.PublicDemo) { this.GameState.Restart(); return; } else { SoundEffectExtensions.Emit(this.sExitGame); this.GameState.ReturnToArcade(); this.Enabled = false; return; } } else if (!Fez.PublicDemo && (this.InputManager.CancelTalk == FezButtonState.Pressed || this.InputManager.Back == FezButtonState.Pressed)) { this.GameState.SkipRendering = false; this.FezLogo.Inverted = false; if (!this.FadeBackToGame) { SoundEffectExtensions.Emit(this.sTitleBassHit); } else { this.SoundManager.PlayNewSong((string) null, 0.5f); this.SoundManager.UnshelfSong(); this.SoundManager.Resume(); this.SoundManager.UnmuteAmbienceTracks(true); this.scheduledBackToGame = true; this.FezLogo.DoubleTime = true; this.PlayerManager.Hidden = true; this.GameState.InCutscene = false; this.GameState.ForceTimePaused = false; } this.ChangePhase(); return; } else { if (Fez.PublicDemo || this.InputManager.GrabThrow != FezButtonState.Pressed) return; SoundEffectExtensions.Emit(this.sConfirm); Guide.SimulateTrialMode = false; return; } case Intro.Phase.FadeOut: if (totalSeconds >= 2.0) { if (this.scheduledBackToGame) { this.PlayerManager.Hidden = false; this.PlayerManager.Ground = new MultipleHits<TrileInstance>(); this.PlayerManager.Velocity = (float) (3.15000009536743 * (double) Math.Sign(this.CollisionManager.GravityFactor) * 0.150000005960464 * 0.0166666675359011) * -Vector3.UnitY; this.PhysicsManager.Update((IComplexPhysicsEntity) this.PlayerManager); this.PlayerManager.Velocity = (float) (3.15000009536743 * (double) Math.Sign(this.CollisionManager.GravityFactor) * 0.150000005960464 * 0.0166666675359011) * -Vector3.UnitY; this.PlayerManager.Action = ActionType.ExitDoor; ServiceHelper.RemoveComponent<Intro>(this); } else this.ChangePhase(); } this.opacity = 1f - Easing.EaseInOut(FezMath.Saturate(totalSeconds / 2.0), EasingType.Sine); return; default: return; } case Intro.Screen.Zoom: switch (this.phase) { case Intro.Phase.FadeIn: this.ChangePhase(); return; case Intro.Phase.Wait: if (!this.FezLogo.IsFullscreen) return; Intro.Starfield = this.FezLogo.Starfield; ServiceHelper.RemoveComponent<FezLogo>(this.FezLogo); this.ChangePhase(); return; case Intro.Phase.FadeOut: this.ChangePhase(); return; default: return; } case Intro.Screen.SignOutPrompt: switch (this.phase) { case Intro.Phase.FadeIn: if (totalSeconds >= 0.5) this.ChangePhase(); this.opacity = FezMath.Saturate((float) totalSeconds * 2f); return; case Intro.Phase.Wait: if (this.InputManager.Jump != FezButtonState.Pressed && this.InputManager.Start != FezButtonState.Pressed) return; this.InputManager.DetermineActiveController(); this.FezLogo.TransitionStarted = true; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (totalSeconds >= 0.5) this.ChangePhase(); this.opacity = 1f - FezMath.Saturate((float) totalSeconds * 2f); return; default: return; } case Intro.Screen.SignInChooseDevice: switch (this.phase) { case Intro.Phase.FadeIn: if (this.Fake) this.ChangePhase(); else this.GameState.SignInAndChooseStorage(new Action(this.ChangePhase)); this.ChangePhase(); return; case Intro.Phase.Wait: return; case Intro.Phase.FadeOut: this.ChangePhase(); return; default: return; } case Intro.Screen.MainMenu: switch (this.phase) { case Intro.Phase.FadeIn: this.GameState.ForcedSignOut = false; if (!this.Fake) { if (!this.GameState.SaveData.HasNewGamePlus || this.GameState.SaveData.Level != null) { this.GameState.LoadSaveFile((Action) (() => Waiters.Wait(0.0, (Action) (() => { this.Enabled = true; ServiceHelper.AddComponent((IGameComponent) (this.MainMenu = new MainMenu(this.Game))); this.ChangePhase(); })))); this.Enabled = false; return; } else { ServiceHelper.AddComponent((IGameComponent) (this.MainMenu = new MainMenu(this.Game))); this.ChangePhase(); return; } } else { this.ChangePhase(); return; } case Intro.Phase.Wait: if (this.Fake || this.MainMenu.StartedGame) { this.ZoomToHouse = true; Intro.Starfield.Enabled = true; SoundEffectExtensions.Emit(this.sStarZoom).Persistent = true; this.StartLoading(); this.ChangePhase(); return; } else if (this.MainMenu.HasBought) { this.GameState.ClearSaveFile(); this.screen = Intro.Screen.SignInChooseDevice; this.phase = Intro.Phase.FadeIn; return; } else if (this.MainMenu.SellingTime) { this.GameService.EndTrial(true); ServiceHelper.RemoveComponent<MainMenu>(this.MainMenu); this.MainMenu = (MainMenu) null; this.Enabled = false; return; } else { if (!this.MainMenu.ContinuedGame) return; this.StartLoading(); this.ChangePhase(); return; } case Intro.Phase.FadeOut: this.ChangePhase(); return; default: return; } case Intro.Screen.Warp: switch (this.phase) { case Intro.Phase.FadeIn: if (this.GameState.Loading) return; this.ChangePhase(); return; case Intro.Phase.Wait: if (this.GameState.IsTrialMode) { ServiceHelper.AddComponent((IGameComponent) new TileTransition(ServiceHelper.Game) { ScreenCaptured = (Action) (() => { ServiceHelper.RemoveComponent<Intro>(this); this.GameState.InCutscene = false; this.GameState.ForceTimePaused = false; }) }); this.ChangePhase(); } if (this.ZoomToHouse && Intro.Starfield != null && (Intro.Starfield.IsDisposed && this.IntroZoomIn == null)) ServiceHelper.AddComponent((IGameComponent) (this.IntroZoomIn = new IntroZoomIn(this.Game))); if (this.ZoomToHouse && this.IntroZoomIn != null && this.IntroZoomIn.IsDisposed) { this.IntroZoomIn = (IntroZoomIn) null; this.GameState.SaveData.CanNewGamePlus = false; Logger.Log("Intro", "Intro is done and game is go!"); ServiceHelper.RemoveComponent<Intro>(this); } if (this.GameState.IsTrialMode || this.ZoomToHouse || (this.IntroPanDown == null || this.IntroPanDown.DoPanDown)) return; this.ChangePhase(); return; case Intro.Phase.FadeOut: if (this.GameState.IsTrialMode || this.IntroPanDown != null && !this.IntroPanDown.IsDisposed) return; this.IntroPanDown = (IntroPanDown) null; Logger.Log("Intro", "Intro is done and game is go!"); ServiceHelper.RemoveComponent<Intro>(this); return; default: return; } } }