void Start()
 {
     state = TimeLineSi.WaitingUserFillIn;
     Screen.sleepTimeout = SleepTimeout.NeverSleep;
 }
    // ------------------- Between user and client --------------------------- //

    void ManageState()
    {
        switch (state)
        {
        case TimeLineSi.WaitingUserFillIn:
            break;

        case TimeLineSi.UserSubmit:

            client.SendForm(uiController.GetUserData());
            state = TimeLineSi.SendForm;
            LogState();
            break;

        case TimeLineSi.UserSendAgain:

            client.SendAgain();
            state = TimeLineSi.SendAgain;
            LogState();
            break;

        case TimeLineSi.SendForm:
        case TimeLineSi.SendAgain:
            // Wait for client to got a response from server
            break;

        case TimeLineSi.FormSent:
        case TimeLineSi.SendAgainGotReply:

            uiController.ProposeToLogin();
            state = TimeLineSi.WaitUserLogIn;
            LogState();
            break;

        case TimeLineSi.SendingFailed:

            uiController.SendingFailed();
            state = TimeLineSi.WaitingUserFillIn;
            LogState();
            break;

        case TimeLineSi.AlreadyExists:

            uiController.AlreadyExists();
            state = TimeLineSi.WaitingUserFillIn;
            LogState();
            break;

        case TimeLineSi.WaitUserLogIn:
            break;

        case TimeLineSi.ComeBackHome:

            sceneToLoad = sceneMain;
            uiController.QuitScene();
            state = TimeLineSi.WaitEndAnimationQuitScene;
            LogState();
            break;

        case TimeLineSi.LogIn:

            sceneToLoad = sceneLogIn;
            uiController.QuitScene();
            state = TimeLineSi.WaitEndAnimationQuitScene;
            LogState();
            break;

        case TimeLineSi.WaitEndAnimationQuitScene:
            break;

        case TimeLineSi.EndAnimationQuitScene:

            LoadNewScene();
            state = TimeLineSi.Dead;
            LogState();
            break;

        case TimeLineSi.Dead:
            break;

        default:
            throw new System.Exception("GameController: Bad state.");
        }
    }
 public void SendingFailed()
 {
     state = TimeLineSi.SendingFailed;
 }
 public void AlreadyExists()
 {
     state = TimeLineSi.AlreadyExists;
 }
 public void UserChooseHome()
 {
     state = TimeLineSi.ComeBackHome;
 }
 public void FormSent()
 {
     state = TimeLineSi.FormSent;
 }
 public void SendAgainGotReply()
 {
     state = TimeLineSi.SendAgainGotReply;
 }
 public void UserChooseSendAgain()
 {
     state = TimeLineSi.UserSendAgain;
 }
 public void UserChooseSubmit()
 {
     state = TimeLineSi.UserSubmit;
 }
 public void UserChooseLogIn()
 {
     state = TimeLineSi.LogIn;
 }
    // ----------- From UIManager ---------------- //

    public void EndAnimationQuitScene()
    {
        state = TimeLineSi.EndAnimationQuitScene;
    }