public void TakeTurn()
        {
            if (currentPhase.HasEnteredPhase == false)
            {
                currentPhase.RaisePhaseComplete += HandleOnPhaseCompleted;
                currentPhase.EnterPhase( );
            }

            currentPhase.ExecutePhase( );

            if (currentPhase.HasCompletedPhase == false)
            {
                return;
            }

            currentPhase = nextPhase;

            if (nextPhase == null)
            {
                OnTurnCompleted( );
                return;
            }

            nextPhase = null;

            currentPhase.RaisePhaseComplete -= HandleOnPhaseCompleted;
        }