public override void Init(IModule module)
    {
        base.Init(module);
        var viewScript = InstantiateView <AirborneGameView>("AirborneGame/Prefabs/AirborneGameView");

        _airborneGameController = new AirborneGameController();
        RegisterController(_airborneGameController);
        _airborneGameController.CurAirborneGameView = (AirborneGameView)viewScript;
        _airborneGameController.Start();

        _gameTimer = _airborneGameController.CurAirborneGameView.gameObject.AddComponent <AirborneGameTimer>();
        //_gameTimer.InitTimer();
        _gameTimer.AddController(_airborneGameController);

        _airborneGamePlayerController = new AirborneGamePlayerController();
        RegisterController(_airborneGamePlayerController);
        _airborneGamePlayerController.CurAirborneGameView = (AirborneGameView)viewScript;
        _airborneGamePlayerController.Start();
    }
    public override void OnMessage(Message message)
    {
        string name = message.Name;

        object[] body = message.Params;
        switch (name)
        {
        case MessageConst.MODULE_AIRBORNEGAME_SHOW_COUNTDOWN_PANEL:

            if (_introductionPanel != null)
            {
                _introductionPanel.Destroy();
                _introductionPanel = null;
            }
            if (_airborneGamePanel == null)
            {
                _airborneGamePanel = new AirborneGamePanel();
                _airborneGamePanel.Init(this);
                _gameTimer = _airborneGamePanel.GetAirborneGameTimer();
            }
            _airborneGamePanel.Show(0);
            _airborneGamePanel.HideBackBtn();

            if (_gameTimePanel == null)
            {
                _gameTimePanel = new AirborneGameTimePanel();
                _gameTimePanel.Init(this);
                _gameTimePanel.SetTimer(_gameTimer);
            }
            _gameTimePanel.Show(0);

            if (_airborneGameCountDownPanel == null)
            {
                _airborneGameCountDownPanel = new AirborneGameCountDownPanel();
                _airborneGameCountDownPanel.Init(this);
            }
            _airborneGameCountDownPanel.Show(0);

            break;

        case MessageConst.MODULE_AIRBORNEGAME_ClOSE_COUNTDOWN_PANEL:
            if (_airborneGameCountDownPanel != null)
            {
                _airborneGameCountDownPanel.Destroy();
                _airborneGameCountDownPanel = null;
            }
            _airborneGamePanel.ShowBackBtn();
            _gameTimer.Play();
            break;

        case MessageConst.MODULE_AIRBORNEGAME_SHOW_PAUSE_PANEL:
            if (_gamePausePanel == null)
            {
                _gamePausePanel = new AirborneGamePausePanel();
                _gamePausePanel.Init(this);
            }
            _gamePausePanel.Show(0);
            _gameTimer.Pause();
            //    _airborneGamePanel.HideBackBtn();
            break;

        case MessageConst.MODULE_AIRBORNEGAME_CLOSE_PAUSE_PANEL:
            if (_gamePausePanel != null)
            {
                _gamePausePanel.Destroy();
                _gamePausePanel = null;
            }
            _airborneGamePanel.ShowBackBtn();
            _gameTimer.Play();
            break;

        case MessageConst.MODULE_AIRBORNEGAME_OVER_GAME:
            _gameTimer.Pause();
            if (_gameOverPanel == null)
            {
                _gameOverPanel = new AirborneGameOverPanel();
                _gameOverPanel.Init(this);
            }
            _gameOverPanel.Show(0);
            AirborneGameOverType overType = (AirborneGameOverType)body[0];
            _gameOverPanel.SetData(overType);
            break;

        case MessageConst.MODULE_AIRBORNEGAME_SHOW_AWARD_PANEL:

            if (_gameAwardPanel == null)
            {
                _gameAwardPanel = new AirborneGameAwardPanel();
                _gameAwardPanel.Init(this);
            }
            _gameAwardPanel.Show(0);

            if (_gameOverPanel != null)
            {
                _gameOverPanel.Destroy();
                _gameOverPanel = null;
            }
            break;
        }
    }
 public void SetTimer(AirborneGameTimer timer)
 {
     timer.AddController(_gameTimeController);
 }