private void updateSelection(GamePadState pad, KeyboardState keys, int player)
{
if (currentPlayer != player)
{
keys = new KeyboardState();
}
//Start button functions
if ((pad.IsButtonDown(Buttons.Start) || keys.IsKeyDown(Keys.Enter)) && !startButtons[player])
{
if (showLoadScreen)
{
startMatch();
}
//Player X has entered the game!
else if (!this.connected[player])
{
this.connected[player] = true;
charThumbs[0].hover(player);
selected[player] = 0;
}
else
{
//Is everybody readied up? Then we can gooooo!
bool readyToGo = true;
int connectedPlayers = 0;
for (int i = 0; i < 4; i++)
{
if (connected[i])
connectedPlayers++;
if ((!locked[i] && connected[i]))
readyToGo = false;
}
if (readyToGo && connectedPlayers > 0)
{
showLoadScreen = true;
}
//Character X selected
if (!charThumbs[selected[player]].isSelected())
{
locked[player] = true;
charThumbs[selected[player]].select(player);
}
}
startButtons[player] = true;
}
else if (pad.IsButtonUp(Buttons.Start) && keys.IsKeyUp(Keys.Enter))
startButtons[player] = false;
if (!connected[player])
return;
//B button functions
if ((pad.IsButtonDown(Buttons.B) || keys.IsKeyDown(Keys.Back)) && !back[player])
{
//Unlock character selection
if (locked[player])
{
locked[player] = false;
charThumbs[selected[player]].unselect(player);
}
//Disconnect player
else if (connected[player])
{
connected[player] = false;
charThumbs[selected[player]].unhover(player);
}
back[player] = true;
}
else if (pad.IsButtonUp(Buttons.B) && keys.IsKeyUp(Keys.Back))
back[player] = false;
if (locked[player])
{
//control player
}
else
{
//Right button functions
if ((pad.IsButtonDown(Buttons.LeftThumbstickRight) || pad.IsButtonDown(Buttons.DPadRight) ||
keys.IsKeyDown(Keys.Right)) && !right[player])
{
charThumbs[selected[player]].unhover(player);
selected[player]++;
if(selected[player] % THUMBROWSIZE == 0)
{
selected[player] -= THUMBROWSIZE;
}
charThumbs[selected[player]].hover(player);
right[player] = true;
}
else if (pad.IsButtonUp(Buttons.LeftThumbstickRight) && pad.IsButtonUp(Buttons.DPadRight) &&
keys.IsKeyUp(Keys.Right))
right[player] = false;
//Left button functions
if ((pad.IsButtonDown(Buttons.LeftThumbstickLeft) || pad.IsButtonDown(Buttons.DPadLeft) ||
keys.IsKeyDown(Keys.Left)) && !left[player])
{
charThumbs[selected[player]].unhover(player);
selected[player]--;
if (selected[player] % THUMBROWSIZE == 1 || selected[player] < 0)
{
selected[player] += THUMBROWSIZE;
}
charThumbs[selected[player]].hover(player);
left[player] = true;
}
else if (pad.IsButtonUp(Buttons.LeftThumbstickLeft) && pad.IsButtonUp(Buttons.DPadLeft) &&
keys.IsKeyUp(Keys.Left))
left[player] = false;
//Up button functions
if ((pad.IsButtonDown(Buttons.LeftThumbstickUp) || pad.IsButtonDown(Buttons.DPadUp) ||
keys.IsKeyDown(Keys.Up)) && !up[player])
{
charThumbs[selected[player]].unhover(player);
selected[player] -= THUMBROWSIZE;
if (selected[player] < 0)
{
selected[player] += charNames.Count;//(int)Math.Ceiling((double)(charNames.Count/THUMBROWSIZE));
if (selected[player] > charNames.Count)
selected[player] = charNames.Count - 1;
}
charThumbs[selected[player]].hover(player);
up[player] = true;
}
else if (pad.IsButtonUp(Buttons.LeftThumbstickUp) && pad.IsButtonUp(Buttons.DPadUp) &&
keys.IsKeyUp(Keys.Up))
up[player] = false;
//Down button functions
if ((pad.IsButtonDown(Buttons.LeftThumbstickDown) || pad.IsButtonDown(Buttons.DPadDown) ||
keys.IsKeyDown(Keys.Down)) && !down[player])
{
charThumbs[selected[player]].unhover(player);
selected[player] += THUMBROWSIZE;
if (selected[player] >= charNames.Count)
{
selected[player] %= charNames.Count;
}
charThumbs[selected[player]].hover(player);
down[player] = true;
}
else if (pad.IsButtonUp(Buttons.LeftThumbstickDown) && pad.IsButtonUp(Buttons.DPadDown) &&
keys.IsKeyUp(Keys.Down))
down[player] = false;
}
/*else
{
//INSERT PLAY GAME CONTROLS HERE
}*/
}