private void btnSubmit_Click(object sender, EventArgs e) { switch (driver.GetCurrentGameState()) { case GameStates.Setup: { UpdateScoreDisplays(); break; } case GameStates.PlayCards: case GameStates.ChooseCardToReplay: case GameStates.ChooseCardToDiscard: { Card selectedCard = (Card)lbxHumanHand.SelectedItem; if (selectedCard != null) { PlayerInput input = new PlayerInput(); input.SelectedCards.Add(selectedCard); driver.ActOnPlayerInput(input); UpdateUISettings(driver.GetCurrentGameState()); UpdateGameLog(driver.GetGameLog()); } break; } case GameStates.ResolveMadnessBonus: { PlayerInput input = new PlayerInput(); ResolveMadnessOption chosenOption = (ResolveMadnessOption)cbxPlayerChoice.SelectedItem; input.SelectedBonus = chosenOption.Bonus; driver.ActOnPlayerInput(input); UpdateUISettings(driver.GetCurrentGameState()); UpdateGameLog(driver.GetGameLog()); break; } case GameStates.SetDreamlands: { PlayerInput input = new PlayerInput(); input.SelectedSuit = (SuitOption)cbxPlayerChoice.SelectedItem; driver.ActOnPlayerInput(input); UpdateUISettings(driver.GetCurrentGameState()); UpdateGameLog(driver.GetGameLog()); break; } case GameStates.Scoring: { break; } case GameStates.PickUpCards: { BindingList <Card> selectedCards = new BindingList <Card>(); foreach (Card card in lbxHumanInPlay.SelectedItems) { selectedCards.Add(card); } if (selectedCards.Count == 5) { PlayerInput input = new PlayerInput(); input.SelectedCards = selectedCards; driver.ActOnPlayerInput(input); UpdateUISettings(driver.GetCurrentGameState()); UpdateGameLog(driver.GetGameLog()); } break; } default: { break; } } UpdatePlayerInstructions(driver.GetCurrentGameState(), lblPlayerInstructions); UpdateScoreDisplays(); }