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; } } }
/// <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); }
/// <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); }
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; } }
/// <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); }