Esempio n. 1
0
 protected override void LoadContent()
 {
     _spriteBatch = new SpriteBatch(GraphicsDevice);
     _colors = new GameColors();
     _patterns = new GamePatterns();
     _imageDescriptors = new GameImageDescriptors();
     _images = new Images(GraphicsDevice, _colors, _patterns);
     _imageRenderer = new ImageRenderer(_imageDescriptors, _images, _spriteBatch);
     _gameController = new GameController(this,_imageRenderer);
     _previousKeyboardState = Keyboard.GetState();
     _players.ToList().ForEach(x => _previousGamePadState[x] = GamePad.GetState(x));
 }
Esempio n. 2
0
        public GameController(Microsoft.Xna.Framework.Game game, ImageRenderer imageRenderer)
            : base(null, false)
        {
            _game = game;
            _imageRenderer = imageRenderer;

            InputFocus = this;

            _playScreenController = new PlayScreenController(this, true);
            _aboutScreenController = new AboutScreenController(this, true);
            _helpScreenController = new HelpScreenController(this, true);
            _optionsScreenController = new OptionsScreenController(this, true);
            _notificationScreenController = new NotificationScreenController(this, true);

            #region Main Menu Controllers

            _mainMenuControllers[false] = new MenuController<MainMenuCommand>(this, true, new MenuDescriptor<MainMenuCommand>()
            {
                X = 80 - 9 * 4,
                Y = 60 - 7 * 4,
                LineSpacing = 8,
                SelectedItem = 0,
                MenuHeader = new MenuHeaderDescriptor()
                {
                    Colors = new ColorPair("silver", "ruby"),
                    Text = "Main Menu"
                },
                Items = new MenuItemDescriptor<MainMenuCommand>[]
                {
                    new MenuItemDescriptor<MainMenuCommand>("New Game ",MainMenuCommand.New),
                    new MenuItemDescriptor<MainMenuCommand>("Load Game",MainMenuCommand.Open),
                    new MenuItemDescriptor<MainMenuCommand>("Help     ",MainMenuCommand.Help),
                    new MenuItemDescriptor<MainMenuCommand>("Options  ",MainMenuCommand.Options),
                    new MenuItemDescriptor<MainMenuCommand>("About    ",MainMenuCommand.About),
                    new MenuItemDescriptor<MainMenuCommand>("Quit     ",MainMenuCommand.Quit)
                },
                ItemColors = new ColorPair("silver", "black")
            },
            (handler, item) => handler.HandleMessage(new MainMenuCommandMessage(item.Command)));

            _mainMenuControllers[true] = new MenuController<MainMenuCommand>(this, true, new MenuDescriptor<MainMenuCommand>()
            {
                X = 80 - 9 * 4,
                Y = 60 - 8 * 4,
                LineSpacing = 8,
                SelectedItem = 0,
                MenuHeader = new MenuHeaderDescriptor()
                {
                    Colors = new ColorPair("silver", "ruby"),
                    Text = "Main Menu"
                },
                Items = new MenuItemDescriptor<MainMenuCommand>[]
                {
                    new MenuItemDescriptor<MainMenuCommand>("Resume   ",MainMenuCommand.Resume),
                    new MenuItemDescriptor<MainMenuCommand>("Save Game",MainMenuCommand.Save),
                    new MenuItemDescriptor<MainMenuCommand>("Abandon  ",MainMenuCommand.Abandon),
                    new MenuItemDescriptor<MainMenuCommand>("Help     ",MainMenuCommand.Help),
                    new MenuItemDescriptor<MainMenuCommand>("Options  ",MainMenuCommand.Options),
                    new MenuItemDescriptor<MainMenuCommand>("About    ",MainMenuCommand.About),
                    new MenuItemDescriptor<MainMenuCommand>("Quit     ",MainMenuCommand.Quit)
                },
                ItemColors = new ColorPair("silver", "black")
            },
            (handler, item) => handler.HandleMessage(new MainMenuCommandMessage(item.Command)));

            #endregion

            AddUICommandFocus(_notificationScreenController);
            AddUICommandFocus(_mainMenuControllers[true]);
            AddUICommandFocus(_mainMenuControllers[false]);
            AddUICommandFocus(_optionsScreenController);
            AddUICommandFocus(_aboutScreenController);
            AddUICommandFocus(_playScreenController);

            #region Message Handlers

            _handlers[UICommandMessage.MessageId] = message =>
                OnUICommandMessage(message as UICommandMessage);
            _handlers[GamePadButtonDownMessage.MessageId] = message =>
                OnGamePadButtonDownMessage(message as GamePadButtonDownMessage);
            _handlers[MainMenuCommandMessage.MessageId] = message =>
                OnMainMenuCommandMessage(message as MainMenuCommandMessage);
            _handlers[QuitMessage.MessageId] = message =>
                OnQuitMessage(message as QuitMessage);
            _handlers[RenderImageMessage.MessageId] = message =>
                OnRenderImageMessage(message as RenderImageMessage);
            _handlers[RenderTextMessage.MessageId] = message =>
                OnRenderTextMessage(message as RenderTextMessage);
            _handlers[RenderMapMessage.MessageId] = message =>
                OnRenderMapMessage(message as RenderMapMessage);
            _handlers[KeyDownMessage.MessageId] = message =>
                OnKeyDownMessage(message as KeyDownMessage);
            _handlers[CancelMenuMessage.MessageId] = message =>
                OnCancelMenuMessage(message as CancelMenuMessage);
            _handlers[ShowMainMenuMessage.MessageId] = message =>
                OnShowMainMenuMessage(message as ShowMainMenuMessage);
            _handlers[FetchGameDataMessage.MessageId] = message =>
                OnFetchGameDataMessage(message as FetchGameDataMessage);
            _handlers[SetScaleMessage.MessageId] = message =>
                OnSetScaleMessage(message as SetScaleMessage);
            _handlers[FetchNotificationMessage.MessageId] = message =>
                OnFetchNotificationMessage(message as FetchNotificationMessage);
            _handlers[ClearNotificationMessage.MessageId] = message =>
                OnClearNotificationMessage(message as ClearNotificationMessage);
            _handlers[UpdateMessage.MessageId] = message =>
                OnUpdateMessage(message as UpdateMessage);

            #endregion

            ShowMainMenu();
        }