Blink.GUI.StateCharacterSelect.updateSelection C# (CSharp) Метод

updateSelection() приватный Метод

private updateSelection ( GamePadState pad, KeyboardState keys, int player ) : void
pad Microsoft.Xna.Framework.Input.GamePadState
keys Microsoft.Xna.Framework.Input.KeyboardState
player int
Результат void
        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
            }*/
        }