// Event
    void OnPhaseChange(BridgePhase phase)
    {
        inputAllowed = false;
        switch (phase)
        {
        case BridgePhase.Start:
            break;

        case BridgePhase.Countdown:
            break;

        case BridgePhase.Building:
            inputAllowed = true;
            timerObject.StartTimer();
            break;

        case BridgePhase.Falling:
            timerObject.StartTimer();
            break;

        case BridgePhase.Crossing:
            timerObject.StopTimer();
            break;

        case BridgePhase.Lose:
            gameStarted = false;
            GameOver(DataType.GameEnd.FailedLevel);
            break;

        case BridgePhase.Finish:
            gameStarted = false;
            StartCoroutine(GameOverSequence());
            break;
        }
    }
 // Public Event
 public void ChangePhase(BridgePhase phase)
 {
     if (bridgePhase != phase)
     {
         bridgePhase = phase;
         print("Manager ChangePhase firing: " + phase);
         PhaseChange(phase);
     }
 }