private void btnReset_Click(object sender, EventArgs e)
 {
     lbxAttacking.Items.Clear();
     lbxDefending.Items.Clear();
     lbxUsLibrary.Items.Clear();
     lbxUsHand.Items.Clear();
     lbxUsField.Items.Clear();
     lbxUsGraveyard.Items.Clear();
     lbxUsExile.Items.Clear();
     lbxEnemyLibrary.Items.Clear();
     lbxEnemyField.Items.Clear();
     lbxEnemyGraveyard.Items.Clear();
     lbxEnemyExile.Items.Clear();
     btnStartGame.Enabled = true;
     tbxAction.Text       = "";
     tbxPhase.Text        = "";
     currentPhase         = GameState.phase.SetupGame;
 }
        private void btnStartGame_Click(object sender, EventArgs e)
        {
            setupGame();

            currentPhase = GameState.phase.SetupGame;
        }
        private void advancePhase()
        {
            switch (currentPhase)
            {
            case GameState.phase.SetupGame:
                currentPhase = GameState.phase.StartGame;
                firstTurn    = true;
                StartGame();
                break;

            case GameState.phase.StartGame:

                if (rbtThem.Checked)
                {
                    activePlayer  = GameState.activePlayer.Enemy;
                    currentPhase  = GameState.phase.EnemyUntap;
                    tbxPhase.Text = "Enemy Untap";
                    EnemyUntap();
                }
                else
                {
                    activePlayer  = GameState.activePlayer.Us;
                    currentPhase  = GameState.phase.UsUntap;
                    tbxPhase.Text = "Our Untap";
                    UsUntap();
                }
                break;

            case GameState.phase.UsUntap:
                currentPhase  = GameState.phase.UsUpkeep;
                tbxPhase.Text = "Our Upkeep";
                UsUpkeep();
                break;

            case GameState.phase.UsUpkeep:
                currentPhase  = GameState.phase.UsDraw;
                tbxPhase.Text = "Our Draw";
                UsDraw();
                break;

            case GameState.phase.UsDraw:
                currentPhase  = GameState.phase.UsFirstMain;
                tbxPhase.Text = "Our First Main";
                UsFirstMain();
                break;

            case GameState.phase.UsFirstMain:
                currentPhase  = GameState.phase.UsDeclareAttackers;
                tbxPhase.Text = "Our Declare Attackers";
                UsDeclareAttackers();
                break;

            case GameState.phase.UsDeclareAttackers:
                currentPhase  = GameState.phase.UsDeclareDefenders;
                tbxPhase.Text = "Our Enemy Declares Defenders";
                UsDeclareDefenders();
                break;

            case GameState.phase.UsDeclareDefenders:     //enemy declares defenders while we're main player
                currentPhase  = GameState.phase.UsDamage;
                tbxPhase.Text = "Damage Calculation";
                UsDamage();
                break;

            case GameState.phase.UsDamage:
                currentPhase  = GameState.phase.UsSecondMain;
                tbxPhase.Text = "Our Second Main";
                UsSecondMain();
                break;

            case GameState.phase.UsSecondMain:
                currentPhase  = GameState.phase.UsEndCleanup;
                tbxPhase.Text = "Our End/Cleanup";
                UsEndCleanup();
                break;

            case GameState.phase.UsEndCleanup:
                activePlayer  = GameState.activePlayer.Enemy;
                currentPhase  = GameState.phase.EnemyUntap;
                tbxPhase.Text = "Enemy Untap";
                EnemyUntap();
                break;

            case GameState.phase.EnemyUntap:
                currentPhase  = GameState.phase.EnemyUpkeep;
                tbxPhase.Text = "Enemy Upkeep";
                EnemyUpkeep();
                break;

            case GameState.phase.EnemyUpkeep:
                currentPhase  = GameState.phase.EnemyDraw;
                tbxPhase.Text = "Enemy Draw";
                EnemyDraw();
                break;

            case GameState.phase.EnemyDraw:
                currentPhase  = GameState.phase.EnemyFirstMain;
                tbxPhase.Text = "Enemy First Main";
                EnemyFirstMain();
                break;

            case GameState.phase.EnemyFirstMain:
                currentPhase  = GameState.phase.EnemyDeclareAttackers;
                tbxPhase.Text = "Enemy Declares Attackers";
                EnemyDeclareAttackers();
                break;

            case GameState.phase.EnemyDeclareAttackers:
                currentPhase  = GameState.phase.EnemyDeclareDefenders;
                tbxPhase.Text = "Our Declare Defenders";
                EnemyDeclareDefenders();
                break;

            case GameState.phase.EnemyDeclareDefenders:     //we declare defenders while enemy is main player
                currentPhase  = GameState.phase.EnemyDamage;
                tbxPhase.Text = "Damage Calculations";
                EnemyDamage();
                break;

            case GameState.phase.EnemyDamage:
                currentPhase  = GameState.phase.EnemySecondMain;
                tbxPhase.Text = "Enemy Second Main";
                EnemySecondMain();
                break;

            case GameState.phase.EnemySecondMain:
                currentPhase  = GameState.phase.EnemyEndCleanup;
                tbxPhase.Text = "Enemy End/Cleanup";
                EnemyEndCleanup();
                break;

            case GameState.phase.EnemyEndCleanup:
                activePlayer  = GameState.activePlayer.Us;
                currentPhase  = GameState.phase.UsUntap;
                tbxPhase.Text = "Our Untap";
                UsUntap();
                break;

            case GameState.phase.EndGame:
                currentPhase  = GameState.phase.SetupGame;
                tbxPhase.Text = "Game Start. Please select starting player";
                EndGame();
                break;

            default:
                break;
            }
        }