示例#1
0
 /// <summary>
 /// Get the state of semantic input.
 /// </summary>
 public ButtonState GetSemanticButtonState(SemanticButtonType type, ref GamePadState gamePadState)
 {
     switch (type)
     {
         case SemanticButtonType.AffirmButton: return GetAffirmState(ref gamePadState);
         case SemanticButtonType.CancelButton: return GetCancelState(ref gamePadState);
         case SemanticButtonType.NextPageButton: return GetNextPageState(ref gamePadState);
         case SemanticButtonType.PreviousPageButton: return GetPreviousPageState(ref gamePadState);
         default: return ButtonState.Released;
     }
 }
示例#2
0
 private void SemanticButtonInput(GameTime gameTime, SemanticButtonType type, ref GamePadState gamePadState, Focusable focusable)
 {
     ButtonState state = inputRouter.GetSemanticButtonState(type, ref gamePadState);
     if (state == ButtonState.Pressed)
     {
         if (isSemanticButtonPressed[(int)type] != ButtonState.Pressed) SemanticButtonInput(gameTime, type, InputType.ClickDown, focusable);
         SemanticButtonDownRepeat(gameTime, type, focusable);
         SemanticButtonInput(gameTime, type, InputType.Down, focusable);
     }
     else if (state != ButtonState.Pressed)
     {
         if (isSemanticButtonPressed[(int)type] == ButtonState.Pressed)
         {
             SemanticButtonUp(type);
             SemanticButtonInput(gameTime, type, InputType.ClickUp, focusable);
         }
         // OPTIMIZATION: this functionality is not worth the speed cost
         //SemanticButtonUpRepeat(type);
         //SemanticButtonInput(type, InputType.Up);
     }
     isSemanticButtonPressed[(int)type] = state;
 }
示例#3
0
 private void SemanticButtonUp(SemanticButtonType type)
 {
     semanticButtonPressedElapsedTime[(int)type] = 0;
     semanticButtonPressedElapsedTime2[(int)type] = 0;
 }
示例#4
0
 private void SemanticButtonDownRepeat(GameTime gameTime, SemanticButtonType type, Focusable focusable)
 {
     semanticButtonPressedElapsedTime[(int)type] += (float)gameTime.ElapsedGameTime.TotalSeconds;
     if (semanticButtonPressedElapsedTime[(int)type] <= repeatRate.FirstDelay) return;
     semanticButtonPressedElapsedTime2[(int)type] += (float)gameTime.ElapsedGameTime.TotalSeconds;
     if (semanticButtonPressedElapsedTime2[(int)type] <= repeatRate.RepeatDelay) return;
     semanticButtonPressedElapsedTime2[(int)type] = 0;
     SemanticButtonInput(gameTime, type, InputType.Repeat, focusable);
 }
示例#5
0
 private void SemanticButtonInput(GameTime gameTime, SemanticButtonType type, InputType inputType, Focusable focusable)
 {
     switch (type)
     {
         case SemanticButtonType.AffirmButton: focusable.NotifySemanticInput(gameTime, inputType, SemanticInputType.Affirm); break;
         case SemanticButtonType.CancelButton: focusable.NotifySemanticInput(gameTime, inputType, SemanticInputType.Cancel); break;
         case SemanticButtonType.NextPageButton: focusable.NotifySemanticInput(gameTime, inputType, SemanticInputType.NextPage); break;
         case SemanticButtonType.PreviousPageButton: focusable.NotifySemanticInput(gameTime, inputType, SemanticInputType.PreviousPage); break;
     }
 }