public void SetStage(stages newStage)
    {
        switch (newStage)
        {
            case stages.floorplan:
                _stage = stages.floorplan;
                break;

            case stages.building:
                _stage = stages.building;
                break;

            case stages.textures:
                _stage = stages.textures;
                break;

            case stages.roofs:
                _stage = stages.roofs;
                break;

            case stages.export:
                _stage = stages.export;
                break;
        }
    }
    // Use this for initialization
    void Start()
    {
        Hand = new string[10];
        Deck = new string[1000];
        AIHand = new string[10];
        AIDeck = new string[1000];
        Home = true;
        PlayerHasBall = true;
        Discarded = false;
        Passing = 0;
        Intercepting = 0;
        GoalShotting = 0;
        GoalBlocking = 0;
        DeckPos = 0;
        PlayerHandSize = 6;
        AIHandSize = 6;
        FreeKickCardsLeft = 4;
        DeckSize = PassNum + InterceptNum + GoalShotLeftNum + GoalShotRightNum + BlockLeftNum + BlockRightNum - 6;
        Skipped = 0;
        Round = 0;

        Shuffle();
        AIShuffle();
        CardText.text = "";
        StartCoroutine (DisplayMessage ("Tap to Roll Off!", 3000));
        RollButton.SetActive(true);
        stage = stages.RollOff;
    }
    // Update is called once per frame
    void Update()
    {
        if (Dice1.GetComponent<Rigidbody> ().velocity == Vector3.zero && Dice2.GetComponent<Rigidbody> ().velocity == Vector3.zero && rolling == true)
        {
            ResolveDiceRoll();
            HideDiceTime = Time.time + DisplayTime;
        }

        if (rolling == false && DiceShown == true & Time.time > HideDiceTime)
        {
            HideDice();
        }

        //my tessa's stuff
        if (diceRollComplete && stage == stages.RollOff) { // if roll off stage
            diceRollComplete = false;
            stage = stages.CardSelect;
            RollButton.SetActive(false);
            if (Dice1Val > Dice2Val) {
                StartCoroutine (DisplayMessage ("You go first", 2000));
                print("You go first");
                playerTurn = true;
                StartCoroutine(CardPrompt());
            } else {
                StartCoroutine (DisplayMessage ("Computer goes first!", 2000));
                print ("Computer goes first!");
                playerTurn = false;
                StartCoroutine(AITurn());
            }

        }
        if(playerTurn && stage == stages.CardSelect) { // if player turn and stage card selection
            // need a delay in the message changes
            stage = stages.etc;

        }
    }
    IEnumerator EndRound()
    {
        System.DateTime d = System.DateTime.Now;
        if (Round < 1) {
            RoundEnding = 0;
            StartCoroutine (DisplayMessage ("Round over", 4000));
            MoveTokenToCenter ();
            RoundEnding = 1;
            d = System.DateTime.Now;
            while (System.DateTime.Now < d.AddMilliseconds(4000)) {
                yield return null;
            }

            while (RoundEnding == 1) {
                yield return null;
            }

            if (Home == false) {
                FlipToken ();
            }

            PlayerHasBall = true;
            Discarded = false;
            Passing = 0;
            Intercepting = 0;
            GoalShotting = 0;
            GoalBlocking = 0;
            DeckPos = 0;
            PlayerHandSize = 6;
            AIHandSize = 6;

            FreeKickCardsLeft = 4;
            Skipped = 0;
            Round++;

            Shuffle ();
            AIShuffle ();
            StartCoroutine (DisplayMessage ("Tap to Roll Off!", 3000));
            RollButton.SetActive (true);
            diceRollComplete = false;

            stage = stages.RollOff;
        }
        else
        {
            StartCoroutine (DisplayMessage ("Game over", 2000));
            d = System.DateTime.Now;
            while (System.DateTime.Now < d.AddMilliseconds(2000)) {
                yield return null;
            }

            if (PlayerScore > AIScore)
            {
                StartCoroutine (DisplayMessage ("You win!", 2000));
                d = System.DateTime.Now;
                while (System.DateTime.Now < d.AddMilliseconds(2000)) {
                    yield return null;
                }
            }
            else if (PlayerScore < AIScore)
            {
                StartCoroutine (DisplayMessage ("AI wins", 2000));
                d = System.DateTime.Now;
                while (System.DateTime.Now < d.AddMilliseconds(2000)) {
                    yield return null;
                }
            }
            else
            {
                StartCoroutine (DisplayMessage ("It's a draw", 2000));
                d = System.DateTime.Now;
                while (System.DateTime.Now < d.AddMilliseconds(2000)) {
                    yield return null;
                }
            }

            StartCoroutine (DisplayMessage ("Restarting game ...", 2000));
            d = System.DateTime.Now;
            while (System.DateTime.Now < d.AddMilliseconds(2000)) {
                yield return null;
            }

            Application.LoadLevel(Application.loadedLevel);
        }
    }