Exemplo n.º 1
0
 public bool ChangeMenuLevel(MenuLevel next, bool silent = false)
 {
   if (this.CurrentMenuLevel == null)
     return false;
   bool flag1 = this.CurrentMenuLevel.SelectedItem == null || !this.CurrentMenuLevel.SelectedItem.Selectable;
   this.selectorPhase = flag1 ? SelectorPhase.FadeIn : SelectorPhase.Grow;
   bool flag2 = next == this.CurrentMenuLevel.Parent;
   if (this.CurrentMenuLevel.OnClose != null)
     this.CurrentMenuLevel.OnClose();
   if (next == null)
   {
     this.ResumeGame();
     return true;
   }
   else
   {
     this.nextMenuLevel = next;
     this.nextMenuLevel.Reset();
     this.RenderToTexture();
     this.sinceSelectorPhaseStarted = 0.0f;
     this.lastMenuLevel = this.CurrentMenuLevel;
     if (flag1)
     {
       this.CurrentMenuLevel = this.nextMenuLevel;
       this.CurrentMenuLevelTexture = this.NextMenuLevelTexture;
       if (this.CurrentMenuLevel == null)
         this.DestroyMenu();
     }
     else if (!silent)
     {
       if (flag2)
         SoundEffectExtensions.Emit(this.sReturnLevel);
       else
         SoundEffectExtensions.Emit(this.sAdvanceLevel);
       if (this.lastMenuLevel.Oversized && !this.CurrentMenuLevel.Oversized)
         SoundEffectExtensions.Emit(this.sScreenNarrowen);
     }
     if (!this.lastMenuLevel.Oversized && this.CurrentMenuLevel.Oversized)
       SoundEffectExtensions.Emit(this.sScreenWiden);
     return true;
   }
 }
Exemplo n.º 2
0
 private void UpOneLevel(MenuLevel activeLevel)
 {
   SoundEffectExtensions.Emit(this.sCancel);
   activeLevel.ForceCancel = false;
   if (this.EndGameMenu)
   {
     this.GameState.EndGame = true;
     this.GameState.Restart();
     this.Enabled = false;
     Waiters.Wait(0.400000005960464, (Action) (() => ServiceHelper.RemoveComponent<MenuBase>(this)));
   }
   else if (activeLevel is SaveSlotSelectionLevel)
   {
     this.sinceSelectorPhaseStarted = 0.0f;
     this.selectorPhase = SelectorPhase.Disappear;
     this.GameState.ReturnToArcade();
   }
   else
   {
     if (activeLevel.Parent == this.HelpOptionsMenu)
       SettingsManager.Save();
     this.ChangeMenuLevel(activeLevel.Parent, false);
   }
 }
Exemplo n.º 3
0
 private void UpdateSelector(float elapsedSeconds)
 {
   Vector3 vector3_1 = Vector3.Zero;
   Vector3 vector3_2 = Vector3.Zero;
   float viewScale = SettingsManager.GetViewScale(this.GraphicsDevice);
   if (this.CurrentMenuLevel != null && this.CurrentMenuLevel.SelectedItem != null)
   {
     float num1 = (this.CurrentMenuLevel.Oversized ? 512f : 256f) * viewScale;
     int num2 = Enumerable.Count<MenuItem>((IEnumerable<MenuItem>) this.CurrentMenuLevel.Items, (Func<MenuItem, bool>) (x => !x.Hidden));
     float num3 = this.CurrentMenuLevel.Items.Count == 0 ? 0.0f : (this.CurrentMenuLevel.SelectedItem.Size.Y + this.Fonts.TopSpacing) * this.Fonts.BigFactor;
     int selectedIndex = this.CurrentMenuLevel.SelectedIndex;
     MenuItem menuItem = this.CurrentMenuLevel.Items[selectedIndex];
     vector3_1 = new Vector3((menuItem.Size + new Vector2(this.Fonts.SideSpacing * 2f, this.Fonts.TopSpacing)) * this.Fonts.BigFactor / 2f, 1f);
     if (num2 > 10)
     {
       bool flag = false;
       switch (Culture.Language)
       {
         case Language.English:
         case Language.Chinese:
         case Language.Japanese:
         case Language.Korean:
           for (int index = 0; index <= this.CurrentMenuLevel.SelectedIndex; ++index)
           {
             if (this.CurrentMenuLevel.Items[index].Hidden)
               --selectedIndex;
           }
           float num4 = 5f;
           if (selectedIndex == num2 - 1)
             vector3_2 = new Vector3(0.0f, (float) (((double) num4 - 9.0) * (double) num3 - (double) num3 / 2.0), 0.0f);
           else if (selectedIndex < 8)
           {
             vector3_2 = new Vector3(num1 / 2f, (float) (((double) num4 - (double) selectedIndex) * (double) num3 - (double) num3 / 2.0), 0.0f);
           }
           else
           {
             selectedIndex -= 8;
             vector3_2 = new Vector3((float) (-(double) num1 / 2.0), (float) (((double) num4 - (double) selectedIndex) * (double) num3 - (double) num3 / 2.0), 0.0f);
           }
           if (flag && selectedIndex != num2 - 1)
             vector3_1 = vector3_1 * this.Fonts.SmallFactor / this.Fonts.BigFactor;
           string str = WordWrap.Split(menuItem.ToString(), this.Fonts.Small, (float) (((double) ((float) this.Game.GraphicsDevice.Viewport.Width * 0.45f) + (double) vector3_2.X / 2.0) / ((double) this.Fonts.SmallFactor * (double) viewScale)));
           int num5 = 0;
           foreach (int num6 in str)
           {
             if (num6 == 10)
               ++num5;
           }
           if (num5 > 0)
           {
             vector3_1.Y *= (float) (1 + num5);
             break;
           }
           else
             break;
         default:
           flag = true;
           goto case Language.English;
       }
     }
     else
     {
       float num4 = (float) num2 / 2f;
       for (int index = 0; index <= this.CurrentMenuLevel.SelectedIndex; ++index)
       {
         if (this.CurrentMenuLevel.Items[index].Hidden)
           --selectedIndex;
       }
       vector3_2 = new Vector3(0.0f, (float) (((double) num4 - (double) selectedIndex) * (double) num3 - (double) num3 / 2.0), 0.0f);
     }
   }
   this.sinceSelectorPhaseStarted += elapsedSeconds;
   switch (this.selectorPhase)
   {
     case SelectorPhase.Appear:
     case SelectorPhase.Disappear:
       Group group1 = this.Selector.Groups[0];
       Group group2 = this.Selector.Groups[1];
       Group group3 = this.Selector.Groups[2];
       this.Frame.Enabled = false;
       this.Selector.Material.Opacity = 1f;
       this.Selector.Enabled = true;
       this.Selector.Position = Vector3.Zero;
       this.Selector.Scale = Vector3.One;
       float num7 = Easing.EaseInOut((double) FezMath.Saturate(this.sinceSelectorPhaseStarted / 0.75f), EasingType.Sine, EasingType.Cubic);
       if (this.selectorPhase == SelectorPhase.Disappear)
         num7 = 1f - num7;
       group2.Enabled = group3.Enabled = (double) num7 > 0.5;
       float x1 = (this.nextMenuLevel.Oversized ? 512f : 352f) * viewScale;
       float num8 = FezMath.Saturate((float) (((double) num7 - 0.5) * 2.0));
       float num9 = FezMath.Saturate(num7 * 2f);
       group1.Scale = new Vector3(x1, 256f * num9 * viewScale, 1f);
       group2.Scale = new Vector3(x1 * num8, 256f * viewScale, 1f);
       group2.Position = new Vector3((float) (-(double) x1 * (1.0 - (double) num8)), 0.0f, 1f);
       group3.Scale = new Vector3(x1 * num8, 256f * viewScale, 1f);
       group3.Position = new Vector3(x1 * (1f - num8), 0.0f, 1f);
       if ((double) num7 <= 0.0 && this.selectorPhase == SelectorPhase.Disappear && !this.StartedNewGame)
         this.DestroyMenu();
       if ((double) num7 < 1.0 || this.selectorPhase != SelectorPhase.Appear)
         break;
       this.selectorPhase = SelectorPhase.Shrink;
       group1.Scale = group2.Scale = group3.Scale = Vector3.One;
       group2.Position = group3.Position = Vector3.Zero;
       this.Frame.Scale = this.Selector.Scale = new Vector3(x1, 256f * viewScale, 1f);
       this.Frame.Enabled = true;
       this.sinceSelectorPhaseStarted = 0.0f;
       this.CurrentMenuLevel = this.nextMenuLevel;
       this.CurrentMenuLevelTexture = this.NextMenuLevelTexture;
       break;
     case SelectorPhase.Shrink:
       float amount1 = Easing.EaseInOut((double) FezMath.Saturate(this.sinceSelectorPhaseStarted * 2.5f), EasingType.Sine, EasingType.Cubic);
       if (this.CurrentMenuLevel.SelectedItem == null || !this.CurrentMenuLevel.SelectedItem.Selectable)
       {
         this.Selector.Material.Opacity = 0.0f;
       }
       else
       {
         this.Selector.Material.Opacity = 1f;
         this.Selector.Scale = Vector3.Lerp(new Vector3((this.lastMenuLevel ?? this.CurrentMenuLevel).Oversized ? 512f : 352f, 256f, 1f) * viewScale, vector3_1, amount1);
         this.Selector.Position = Vector3.Lerp(Vector3.Zero, vector3_2, amount1);
       }
       this.Frame.Scale = Vector3.Lerp(new Vector3((this.lastMenuLevel ?? this.CurrentMenuLevel).Oversized ? 512f : 352f, 256f, 1f) * viewScale, new Vector3(this.CurrentMenuLevel.Oversized ? 512f : 352f, 256f, 1f) * viewScale, amount1);
       if ((double) amount1 < 1.0)
         break;
       this.selectorPhase = SelectorPhase.Select;
       break;
     case SelectorPhase.Grow:
       float amount2 = 1f - Easing.EaseInOut((double) FezMath.Saturate(this.sinceSelectorPhaseStarted / 0.3f), EasingType.Sine, EasingType.Quadratic);
       if (this.CurrentMenuLevel.SelectedItem == null || !this.CurrentMenuLevel.SelectedItem.Selectable)
       {
         this.Selector.Material.Opacity = 0.0f;
       }
       else
       {
         this.Selector.Material.Opacity = 1f;
         this.Selector.Scale = Vector3.Lerp(new Vector3(this.nextMenuLevel.Oversized ? 512f : 352f, 256f, 1f) * viewScale, vector3_1, amount2);
         this.Selector.Position = Vector3.Lerp(Vector3.Zero, vector3_2, amount2);
       }
       this.Frame.Scale = Vector3.Lerp(new Vector3(this.CurrentMenuLevel.Oversized ? 512f : 352f, 256f, 1f) * viewScale, new Vector3(this.nextMenuLevel.Oversized ? 512f : 352f, 256f, 1f) * viewScale, 1f - amount2);
       if ((double) amount2 > 0.0)
         break;
       this.lastMenuLevel = this.CurrentMenuLevel;
       this.CurrentMenuLevel = this.nextMenuLevel;
       this.CurrentMenuLevelTexture = this.NextMenuLevelTexture;
       if (this.CurrentMenuLevel.SelectedItem == null || !this.CurrentMenuLevel.SelectedItem.Selectable)
       {
         this.CurrentMenuLevel.Reset();
         this.selectorPhase = SelectorPhase.Select;
       }
       else
       {
         this.CurrentMenuLevel.Reset();
         this.selectorPhase = SelectorPhase.FadeIn;
       }
       this.sinceSelectorPhaseStarted = 0.0f;
       break;
     case SelectorPhase.Select:
       if (this.CurrentMenuLevel.SelectedItem == null || !this.CurrentMenuLevel.SelectedItem.Selectable)
       {
         this.Selector.Material.Opacity = 0.0f;
         break;
       }
       else
       {
         this.Selector.Material.Opacity = 1f;
         this.Selector.Scale = Vector3.Lerp(this.Selector.Scale, vector3_1, 0.3f);
         this.Selector.Position = Vector3.Lerp(this.Selector.Position, vector3_2, 0.3f);
         break;
       }
     case SelectorPhase.FadeIn:
       float amount3 = Easing.EaseInOut((double) FezMath.Saturate(this.sinceSelectorPhaseStarted / 0.25f), EasingType.Sine, EasingType.Cubic);
       this.Selector.Material.Opacity = amount3;
       this.Selector.Scale = Vector3.Lerp(this.Selector.Scale, vector3_1, 0.3f);
       this.Selector.Position = Vector3.Lerp(this.Selector.Position, vector3_2, 0.3f);
       float x2 = (this.CurrentMenuLevel.Oversized ? 512f : 352f) * viewScale;
       if ((double) this.Frame.Scale.X != (double) x2)
         this.Frame.Scale = Vector3.Lerp(new Vector3((this.lastMenuLevel ?? this.CurrentMenuLevel).Oversized ? 512f : 352f, 256f, 1f) * viewScale, new Vector3(x2, 256f * viewScale, 1f), amount3);
       if ((double) amount3 < 1.0)
         break;
       this.selectorPhase = SelectorPhase.Select;
       this.sinceSelectorPhaseStarted = 0.0f;
       break;
   }
 }
Exemplo n.º 4
0
 protected virtual void StartNewGame()
 {
   this.sinceSelectorPhaseStarted = 0.0f;
   this.selectorPhase = SelectorPhase.Disappear;
   SoundEffectExtensions.Emit(this.sDisappear).Persistent = true;
 }