void InitLevel(string[] rows)
    {
        GameFieldModel fieldModel  = new GameFieldModel(rows);
        PlayerModel    playerModel = new PlayerModel(new FieldBounds(fieldModel.Width, fieldModel.Height),
                                                     TileUtility.GetTiles(TileType.Body, fieldModel.Tiles));

        GameFieldView fieldView  = gameField.GetComponent <GameFieldView> ();
        Player        playerView = player.GetComponent <Player> ();

        PlayerController    playerController    = new PlayerController(playerModel, playerView);
        GameFieldController gameFieldController = new GameFieldController(fieldModel, fieldView);

        LevelModel levelModel = new LevelModel();
        LevelView  levelView  = GetComponent <LevelView> ();

        StepTimer           tickTimer       = GetComponent <StepTimer> ();
        StepTimerController timerController = new StepTimerController(levelModel, playerView, tickTimer);

        StatusPanelView       statusView            = statusPanel.GetComponent <StatusPanelView> ();
        StatusPanelController statusPanelController = new StatusPanelController(levelModel, statusView);

        SpawnController spawnController = new SpawnController(fieldModel, playerModel);

        LevelController levelController = new LevelController(playerModel, fieldModel, levelModel, levelView, tickTimer);
    }
        public override NSApplicationTerminateReply ApplicationShouldTerminate(NSApplication sender)
        {
            _statusPanelController.Dispose();
            _statusPanelController = null;

            return(NSApplicationTerminateReply.Now);
        }
Example #3
0
        /// <summary>
        /// Panel to display should be the login panel
        /// </summary>
        private void SetLoginPanel()
        {
            var loginController = new LoginPanelController();

            loginController.LoggedIn          += (sender, e) => SetStatusPanel();
            loginController.QuitButtonClicked += (sender, e) => NSApplication.SharedApplication.Terminate(sender as LoginPanelController);

            if (_statusPanelController == null)
            {
                _statusPanelController = new StatusPanelController(loginController);
            }
            else
            {
                _statusPanelController.PanelController = loginController;
            }
        }
Example #4
0
        public override NSApplicationTerminateReply ApplicationShouldTerminate(NSApplication sender)
        {
            // Clean up all of the panels, and disposable resources
            if (_usageChecker != null)
            {
                _usageChecker.Dispose();
                _usageChecker = null;
            }

            if (_statusPanelController != null)
            {
                _statusPanelController.Dispose();
                _statusPanelController = null;
            }

            return(NSApplicationTerminateReply.Now);
        }
Example #5
0
        /// <summary>
        /// Panel to display should be the usage status
        /// </summary>
        private void SetStatusPanel()
        {
            var hashCode = SettingsManager.GetSetting(SettingsManager.KeyHashCode);

            if (string.IsNullOrWhiteSpace(hashCode))
            {
                SetLoginPanel();
            }

            // Since this is init, we may have a different hash code, so create a new usage checker
            // TODO: Ideally UsageChecker needs to be refactored out and put into the UsagePanel
            if (_usageChecker != null)
            {
                _usageChecker.Dispose();
            }

            _usageChecker = new UsageChecker(hashCode);

            // Instantiate the usage panel and hook up the neccessary events
            var panelController = new UsagePanelController();

            panelController.RefreshButtonClicked += (sender, e) => _usageChecker.UpdateUsageInformation();
            panelController.QuitButtonClicked    += (sender, e) => NSApplication.SharedApplication.Terminate(sender as UsagePanelController);
            panelController.LogoutButtonClicked  += (sender, e) => Logout();

            // Whenever the usage checker gets a new value, update the UI
            _usageChecker.UsageUpdated += (sender, e) =>
            {
                if (e.UsageInformation != null)
                {
                    panelController.UpdateUsage(e.UsageInformation);
                }
            };

            if (_statusPanelController != null)
            {
                _statusPanelController.PanelController = panelController;
            }
            else
            {
                _statusPanelController = new StatusPanelController(panelController);
            }
        }
 public override void FinishedLaunching(NSObject notification)
 {
     _statusPanelController = new StatusPanelController(new PanelController());
 }