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)); }
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(); }