public void Update(GameTime gameTime)
{
KeyboardState keyState = Keyboard.GetState();
GamePadState padState = GamePad.GetState(PlayerIndex.One);
bool moveUp = false;
bool moveDown = false;
bool accept = false;
if (keyState.IsKeyUp(Keys.Enter))
{
prematureEnter = false;
}
if (keyState.IsKeyDown(Keys.Up))
moveUp = true;
if (keyState.IsKeyDown(Keys.Down))
moveDown = true;
if (keyState.IsKeyDown(Keys.Enter) && prematureEnter == false)
accept = true;
Vector2 thumbDir = padState.ThumbSticks.Left.ToPoint().ToVector2();
if (thumbDir.Length() > .01)
{
if (thumbDir.Y > thumbDir.X)
moveUp = true;
if (thumbDir.Y < thumbDir.X)
moveDown = true;
}
if (padState.IsButtonDown(Buttons.A))
accept = true;
if (moveUp && !lastMoveUp)
{
buttons[selected].UnSelect();
selected--;
// Need extra step because mod of a negative is negative
selected = (selected+buttons.Count) % buttons.Count;
buttons[selected].Select();
}
if (moveDown && !lastMoveDown)
{
buttons[selected].UnSelect();
selected++;
selected = (selected + buttons.Count) % buttons.Count;
buttons[selected].Select();
}
if (accept && !lastAccept)
{
if (titleString == "Map Select" && selected != triggers.Length - 1)
{
selectedMap = mapSets[selected];
}
nextState = triggers[selected];
}
lastAccept = accept;
lastMoveDown = moveDown;
lastMoveUp = moveUp;
}