import java.util.ArrayList;

/**
 * This is a stub for a Blackjack class. This stub
 * is specifically designed to allow demonstration
 * of a UI.
 * 
 * The implementation code does not match, or even
 * resemble, what would be used for an actual BJ game.
 * 
 * All method documentation has been removed to avoid
 * confusion about what each method would do if actually
 * implemented, vs what each method does in this stub.
 */
public class Blackjack
{
    private double playersMoney, playersBet;
    private ArrayList<String> playersHand, dealersHand;
    private boolean playerIsDone;

    public Blackjack(double playersMoney)
    {
        this.playersMoney = playersMoney;
        playersBet = 0;

        playersHand = null;
        dealersHand = null;

        playerIsDone = false;
    }

    public double getPlayersMoney()
    {
        return playersMoney;
    }

    public void placeInitialBetAndDealCards(double amount)
    {
        playersMoney -= amount;
        playersBet = amount;

        playersHand = new ArrayList<String>();
        playersHand.add("10D");
        playersHand.add("8H");

        dealersHand = new ArrayList<String>();
        dealersHand.add("10C");
        dealersHand.add("7S");
    }

    public ArrayList<String> getPlayersHand()
    {
        return playersHand;
    }

    public ArrayList<String> getFaceUpDealersHand()
    {
        if(playerIsDone)
            return dealersHand;
        else
        {
            ArrayList<String> dealerFaceUp = new ArrayList<String>();
            dealerFaceUp.add(dealersHand.get(0));
            return dealerFaceUp;
        }
    }

    public void stand()
    {
        playerIsDone = true;
    }

    public boolean canHit()
    {
        return ! playerIsDone;
    }

    public void hit()
    {
        playersHand.add("8S");
        playerIsDone = true;
    }

    public void playDealersHand()
    {

    }

    public int getResult()
    {
        return playersHand.size() == 2 ? 1 : -1;
    }

    public void resolveBetsAndReset()
    {
        if(getResult() == 1)
            playersMoney += playersBet * 2;

        playersBet = 0;

        playersHand = null;
        dealersHand = null;

        playerIsDone = false;
    }
}
