private void CheckControls()
      {
          //back button
          if (Globals.inputController.isButtonPressed(Buttons.B, null))
          {
              this.fadeOutCompleteCallback = backToGame;
              this.StartTransitionOff();
          }

          //select (enter)
          else if (Globals.inputController.isButtonPressed(Buttons.A, null))
          {
              //Globals.audioManager.PlayMenuSound("menu_select");

              /*
               */
              if (submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected] is TransitionItem)
              {
                  TransitionItem current     = (TransitionItem)submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected];
                  int            destination = current.destination;
                  if (destination == -1)
                  {
                      this.StartTransitionOff();
                  }

                  else
                  {
                      currentSubMenuIndex = destination;
                  }
              }
              else if (submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected] is DelegateItem)
              {
                  DelegateItem current = (DelegateItem)submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected];

                  this.fadeOutCompleteCallback = current.function;
                  this.StartTransitionOff();
              }
          }

          //GOING UP IN MENUS
          else if (Globals.inputController.isButtonPressed(Buttons.DPadUp, null) || Globals.inputController.isButtonPressed(Buttons.LeftThumbstickUp, null))
          {
              int selectedIndex = submenus[currentSubMenuIndex].selected;
              int size          = submenus[currentSubMenuIndex].items.Count();
              int newIndex      = selectedIndex - 1;

              if (newIndex < 0)
              {
                  newIndex = size - 1;
              }

              submenus[currentSubMenuIndex].selected = newIndex;
          }

          //GOING DOWN IN MENUS
          else if (Globals.inputController.isButtonPressed(Buttons.DPadDown, null) || Globals.inputController.isButtonPressed(Buttons.LeftThumbstickDown, null))
          {
              int selectedIndex = submenus[currentSubMenuIndex].selected;
              int size          = submenus[currentSubMenuIndex].items.Count();
              int newIndex      = ++selectedIndex;

              if (newIndex == size)
              {
                  newIndex = 0;
              }

              submenus[currentSubMenuIndex].selected = newIndex;
          }

          //GOING LEFT IN MENUS (TOGGLE)
          else if (Globals.inputController.isButtonPressed(Buttons.DPadLeft, null) || Globals.inputController.isButtonPressed(Buttons.LeftThumbstickLeft, null))
          {
              if (submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected] is ToggleItem)
              {
                  ToggleItem currentToggle = (ToggleItem)submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected];

                  int selectedIndex = currentToggle.current;
                  int size          = currentToggle.values.Count();
                  int newIndex      = selectedIndex - 1;

                  if (newIndex < 0)
                  {
                      newIndex = size - 1;
                  }
                  currentToggle.current = newIndex;
              }
          }

          //GOING RIGHT IN MENUS (TOGGLE)
          else if (Globals.inputController.isButtonPressed(Buttons.DPadRight, null) || Globals.inputController.isButtonPressed(Buttons.LeftThumbstickRight, null))
          {
              if (submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected] is ToggleItem)
              {
                  ToggleItem currentToggle = (ToggleItem)submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected];

                  int selectedIndex = currentToggle.current;
                  int size          = currentToggle.values.Count();
                  int newIndex      = ++selectedIndex;

                  if (newIndex == size)
                  {
                      newIndex = 0;
                  }
                  currentToggle.current = newIndex;
              }
          }
      }
Exemple #2
0
        /// <summary>
        /// Create Transition between currentTopPage and newTopPage
        /// </summary>
        /// <param name="currentTopPage">The top page of Navigator.</param>
        /// <param name="newTopPage">The new top page after transition.</param>
        /// <param name="pushTransition">True if this transition is for push new page</param>
        private TransitionSet CreateTransition(Page currentTopPage, Page newTopPage, bool pushTransition)
        {
            currentTopPage.SetVisible(true);
            newTopPage.SetVisible(true);

            List <View> taggedViewsInNewTopPage = new List <View>();

            RetrieveTaggedViews(taggedViewsInNewTopPage, newTopPage);
            List <View> taggedViewsInCurrentTopPage = new List <View>();

            RetrieveTaggedViews(taggedViewsInCurrentTopPage, currentTopPage);

            List <KeyValuePair <View, View> > sameTaggedViewPair = new List <KeyValuePair <View, View> >();

            foreach (View currentTopPageView in taggedViewsInCurrentTopPage)
            {
                bool findPair = false;
                foreach (View newTopPageView in taggedViewsInNewTopPage)
                {
                    if ((currentTopPageView.TransitionOptions != null) && (newTopPageView.TransitionOptions != null) &&
                        currentTopPageView.TransitionOptions?.TransitionTag == newTopPageView.TransitionOptions?.TransitionTag)
                    {
                        sameTaggedViewPair.Add(new KeyValuePair <View, View>(currentTopPageView, newTopPageView));
                        findPair = true;
                        break;
                    }
                }
                if (findPair)
                {
                    taggedViewsInNewTopPage.Remove(sameTaggedViewPair[sameTaggedViewPair.Count - 1].Value);
                }
            }
            foreach (KeyValuePair <View, View> pair in sameTaggedViewPair)
            {
                taggedViewsInCurrentTopPage.Remove(pair.Key);
            }

            TransitionSet newTransitionSet = new TransitionSet();

            foreach (KeyValuePair <View, View> pair in sameTaggedViewPair)
            {
                TransitionItem pairTransition = transition.CreateTransition(pair.Key, pair.Value);
                if (pair.Value.TransitionOptions?.TransitionWithChild ?? false)
                {
                    pairTransition.TransitionWithChild = true;
                }
                newTransitionSet.AddTransition(pairTransition);
            }
            newTransitionSet.Play();

            newTransitionSet.Finished += (object sender, EventArgs e) =>
            {
                transitionFinished = true;
                InvokeTransitionFinished();
                transitionSet.Dispose();
                currentTopPage.Opacity = 1.0f;
            };

            // default entering/exit transition - fast fade (half duration compaired with that of view pair transition)
            int       duration        = (transition.TimePeriod.DurationMilliseconds + transition.TimePeriod.DelayMilliseconds);
            float     durationSeconds = (float)duration / 1000.0f;
            Animation fade            = new Animation(0.8f * durationSeconds);

            fade.AnimateTo(currentTopPage, "Opacity", 0.0f);
            KeyFrames keyframes = new KeyFrames();

            keyframes.Add(0.0f, 0.0f);
            keyframes.Add(1.0f, 1.0f);
            fade.AnimateBetween(newTopPage, "Opacity", keyframes);
            fade.Play();

            return(newTransitionSet);
        }
Exemple #3
0
        /// <summary>
        /// Create Transitions between currentTopPage and newTopPage
        /// </summary>
        /// <param name="currentTopPage">The top page of Navigator.</param>
        /// <param name="newTopPage">The new top page after transition.</param>
        /// <param name="pushTransition">True if this transition is for push new page</param>
        private TransitionSet CreateTransitions(Page currentTopPage, Page newTopPage, bool pushTransition)
        {
            currentTopPage.SetVisible(true);
            newTopPage.SetVisible(true);

            List <View> taggedViewsInNewTopPage = new List <View>();

            RetrieveTaggedViews(taggedViewsInNewTopPage, newTopPage, true);
            List <View> taggedViewsInCurrentTopPage = new List <View>();

            RetrieveTaggedViews(taggedViewsInCurrentTopPage, currentTopPage, true);

            List <KeyValuePair <View, View> > sameTaggedViewPair = new List <KeyValuePair <View, View> >();

            foreach (View currentTopPageView in taggedViewsInCurrentTopPage)
            {
                bool findPair = false;
                foreach (View newTopPageView in taggedViewsInNewTopPage)
                {
                    if ((currentTopPageView.TransitionOptions != null) && (newTopPageView.TransitionOptions != null) &&
                        currentTopPageView.TransitionOptions?.TransitionTag == newTopPageView.TransitionOptions?.TransitionTag)
                    {
                        sameTaggedViewPair.Add(new KeyValuePair <View, View>(currentTopPageView, newTopPageView));
                        findPair = true;
                        break;
                    }
                }
                if (findPair)
                {
                    taggedViewsInNewTopPage.Remove(sameTaggedViewPair[sameTaggedViewPair.Count - 1].Value);
                }
            }
            foreach (KeyValuePair <View, View> pair in sameTaggedViewPair)
            {
                taggedViewsInCurrentTopPage.Remove(pair.Key);
            }

            TransitionSet newTransitionSet = new TransitionSet();

            foreach (KeyValuePair <View, View> pair in sameTaggedViewPair)
            {
                TransitionItem pairTransition = transition.CreateTransition(pair.Key, pair.Value);
                if (pair.Value.TransitionOptions?.TransitionWithChild ?? false)
                {
                    pairTransition.TransitionWithChild = true;
                }
                newTransitionSet.AddTransition(pairTransition);
            }

            newTransitionSet.Finished += (object sender, EventArgs e) =>
            {
                transitionFinished = true;
                InvokeTransitionFinished();
                transitionSet.Dispose();
                currentTopPage.Opacity = 1.0f;
            };

            if (!pushTransition || newTopPage is DialogPage == false)
            {
                if (currentTopPage.DisappearingTransition != null)
                {
                    TransitionItemBase disappearingTransition = currentTopPage.DisappearingTransition.CreateTransition(currentTopPage, false);
                    disappearingTransition.TransitionWithChild = true;
                    newTransitionSet.AddTransition(disappearingTransition);
                }
                else
                {
                    currentTopPage.SetVisible(false);
                }
            }
            if (pushTransition || currentTopPage is DialogPage == false)
            {
                if (newTopPage.AppearingTransition != null)
                {
                    TransitionItemBase appearingTransition = newTopPage.AppearingTransition.CreateTransition(newTopPage, true);
                    appearingTransition.TransitionWithChild = true;
                    newTransitionSet.AddTransition(appearingTransition);
                }
            }

            newTransitionSet.Play();

            return(newTransitionSet);
        }
Exemple #4
0
        private void CheckControls()
        {
            //back button
            if (Globals.inputController.isButtonPressed(Buttons.B, null))
            {
                this.fadeOutCompleteCallback = backToMain;
                this.StartTransitionOff();
            }

            //select (enter)
            else if (Globals.inputController.isButtonPressed(Buttons.A, null))
            {
                if (submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected] is TransitionItem)
                {
                    TransitionItem current     = (TransitionItem)submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected];
                    int            destination = current.destination;
                    if (destination == -1)
                    {
                        this.StartTransitionOff();
                    }

                    else
                    {
                        currentSubMenuIndex = destination;
                    }
                }
                else if (submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected] is DelegateItem)
                {
                    DelegateItem current = (DelegateItem)submenus[currentSubMenuIndex].items[submenus[currentSubMenuIndex].selected];

                    this.fadeOutCompleteCallback = current.function;
                    this.StartTransitionOff();
                }
            }

            //GOING UP IN MENUS
            else if (Globals.inputController.isButtonPressed(Buttons.DPadUp, null) || Globals.inputController.isButtonPressed(Buttons.LeftThumbstickUp, null))
            {
                int selectedIndex = submenus[currentSubMenuIndex].selected;
                int size          = submenus[currentSubMenuIndex].items.Count();
                int newIndex      = selectedIndex - 1;

                if (newIndex < 0)
                {
                    newIndex = size - 1;
                }

                submenus[currentSubMenuIndex].selected = newIndex;
            }

            //GOING DOWN IN MENUS
            else if (Globals.inputController.isButtonPressed(Buttons.DPadDown, null) || Globals.inputController.isButtonPressed(Buttons.LeftThumbstickDown, null))
            {
                int selectedIndex = submenus[currentSubMenuIndex].selected;
                int size          = submenus[currentSubMenuIndex].items.Count();
                int newIndex      = ++selectedIndex;

                if (newIndex == size)
                {
                    newIndex = 0;
                }

                submenus[currentSubMenuIndex].selected = newIndex;
            }
        }
Exemple #5
0
        /// <summary>
        /// Create Transition between currentTopPage and newTopPage
        /// </summary>
        /// <param name="currentTopPage">The top page of Navigator.</param>
        /// <param name="newTopPage">The new top page after transition.</param>
        /// <param name="pushTransition">True if this transition is for push new page</param>
        private TransitionSet CreateTransition(Page currentTopPage, Page newTopPage, bool pushTransition)
        {
            currentTopPage.SetVisible(true);
            newTopPage.SetVisible(true);

            List <View> taggedViewsInNewTopPage = new List <View>();

            RetrieveTaggedViews(taggedViewsInNewTopPage, newTopPage, true);
            List <View> taggedViewsInCurrentTopPage = new List <View>();

            RetrieveTaggedViews(taggedViewsInCurrentTopPage, currentTopPage, true);

            List <KeyValuePair <View, View> > sameTaggedViewPair = new List <KeyValuePair <View, View> >();

            foreach (View currentTopPageView in taggedViewsInCurrentTopPage)
            {
                bool findPair = false;
                foreach (View newTopPageView in taggedViewsInNewTopPage)
                {
                    if ((currentTopPageView.TransitionOptions != null) && (newTopPageView.TransitionOptions != null) &&
                        currentTopPageView.TransitionOptions?.TransitionTag == newTopPageView.TransitionOptions?.TransitionTag)
                    {
                        sameTaggedViewPair.Add(new KeyValuePair <View, View>(currentTopPageView, newTopPageView));
                        findPair = true;
                        break;
                    }
                }
                if (findPair)
                {
                    taggedViewsInNewTopPage.Remove(sameTaggedViewPair[sameTaggedViewPair.Count - 1].Value);
                }
            }
            foreach (KeyValuePair <View, View> pair in sameTaggedViewPair)
            {
                taggedViewsInCurrentTopPage.Remove(pair.Key);
            }

            TransitionSet newTransitionSet = new TransitionSet();

            sameTaggedViewPair.Reverse();
            foreach (KeyValuePair <View, View> pair in sameTaggedViewPair)
            {
                TransitionItem pairTransition = transition.CreateTransition(pair.Key, pair.Value);
                if (pair.Value.TransitionOptions?.TransitionWithChild ?? false)
                {
                    pairTransition.TransitionWithChild = true;
                }
                newTransitionSet.AddTransition(pairTransition);
            }

            newTransitionSet.Finished += (object sender, EventArgs e) =>
            {
                transitionFinished = true;
                InvokeTransitionFinished();
                transitionSet.Dispose();
                currentTopPage.Opacity = 1.0f;
            };

            // default appearing/disappearing transition - fast fade (half duration compaired with that of view pair transition)
            int   duration        = (transition.TimePeriod.DurationMilliseconds + transition.TimePeriod.DelayMilliseconds);
            float durationSeconds = (float)duration / 1000.0f;

            if (!pushTransition || newTopPage is DialogPage == false)
            {
                TransitionItemBase disappearingTransition = currentTopPage.DisappearingTransition.CreateTransition(currentTopPage, false);
                newTransitionSet.AddTransition(disappearingTransition);
                disappearingTransition.TransitionWithChild = true;
            }
            if (pushTransition || currentTopPage is DialogPage == false)
            {
                TransitionItemBase appearingTransition = newTopPage.AppearingTransition.CreateTransition(newTopPage, true);
                appearingTransition.TransitionWithChild = true;
                newTransitionSet.AddTransition(appearingTransition);
            }

            newTransitionSet.Play();

            return(newTransitionSet);
        }