public void LoadContent(GraphicsDevice graphicsDevice, Settings settings, Point clientSize) { _GraphicsDevice = graphicsDevice ?? throw new ArgumentNullException(nameof(graphicsDevice)); var titleFont = _ContentManager.Load <SpriteFont>(Content.Assets.Fonts.CinzelDecorative); var textFont = _ContentManager.Load <SpriteFont>(Content.Assets.Fonts.OpenSansCondensed); var dialogueFont = _ContentManager.Load <SpriteFont>(Content.Assets.Fonts.NothingYouCouldDo); var uiTexture = _ContentManager.Load <Texture2D>(Content.Assets.Gfx.ui); _WindowManager.LoadContent(); _MainMenuWindow = new Window("MainMenuWindow", FrameType.LargeScroll, titleFont, Strings.MainMenu_Title) { TitlePadding = new Padding(8, 0, 8, 0), }; _PauseMenuWindow = new Window("PauseMenuWindow", FrameType.MediumScroll, titleFont, Strings.PauseMenu_Title) { TitlePadding = new Padding(8, 0, 8, 0), }; _ConfirmQuitWindow = new Window("ConfirmQuitWindow", FrameType.SmallScroll, titleFont); _SettingsWindow = new Window("SettingsWindow", FrameType.MediumScroll, titleFont, Strings.SettingsMenu_Title); _InventoryWindow = new Window("InventoryWindow", FrameType.SmallScroll, titleFont); _MainMenuWindow.Control = new Menu("MainMenu", textFont) .WithItem(Strings.MainMenu_Item0_Label, null, false) // Continue .WithItem(Strings.MainMenu_Item1_Label, NewGame, true) // New Game .WithItem(Strings.MainMenu_Item2_Label, Settings, true) // Settings .WithItem(Strings.MainMenu_Item3_Label, Quit, true) // Quit .SelectFirstEnabledItem(); _PauseMenuWindow.Control = new Menu("PauseMenu", textFont) .WithItem(Strings.PauseMenu_Item0_Label, Resume, true) // Resume .WithItem(Strings.PauseMenu_Item1_Label, null, false) // Save .WithItem(Strings.PauseMenu_Item2_Label, Settings, true) // Settings .WithItem(Strings.PauseMenu_Item3_Label, MainMenu, true) // Main Menu .WithItem(Strings.PauseMenu_Item4_Label, Quit, true) // Quit .SelectFirstEnabledItem(); var confirmQuitWindowLayout = new GridPanel("confirmQuitWindowLayout"); confirmQuitWindowLayout.AddControl(new Label("confirmQuitLabel", Strings.AreYouSure_Label, textFont, Color.White), 0, 0, 1, 2); var yesButton = new Button("confirmQuitYesButton", Strings.Yes_Button, textFont); yesButton.Click += (s, a) => ConfirmQuit(); confirmQuitWindowLayout.AddControl(yesButton, 1, 0); confirmQuitWindowLayout.SetCellAlign(yesButton, Alignment.Middle, Alignment.Middle); var noButton = new Button("confirmQuitNoButton", Strings.No_Button, textFont); noButton.Click += (s, a) => _WindowManager.CloseWindow(); confirmQuitWindowLayout.AddControl(noButton, 1, 1); confirmQuitWindowLayout.SetCellAlign(noButton, Alignment.Middle, Alignment.Middle); _ConfirmQuitWindow.Control = confirmQuitWindowLayout; var settingsWindowLayout = new GridPanel("settingsWindowLayout"); var fullscreenCheckbox = new Checkbox("settingsFullscreen") { LabelFont = textFont, LabelText = Strings.Fullscreen_Label, LabelColor = Color.White, Checked = settings.Fullscreen, }; settingsWindowLayout.AddControl(fullscreenCheckbox, 0, 0, 1, 2); var okButton = new Button("settingsOkButton", Strings.OK_Button, textFont) { AutoSize = false, ExplicitSize = new Point(128, 48), }; okButton.Click += OnSettingsOkClick; settingsWindowLayout.AddControl(okButton, 2, 0); settingsWindowLayout.SetCellAlign(okButton, Alignment.Middle, Alignment.Middle); var cancelButton = new Button("settingsCancelButton", Strings.Cancel_Button, textFont) { AutoSize = false, ExplicitSize = new Point(128, 48), }; cancelButton.Click += (s, a) => _WindowManager.CloseWindow(); settingsWindowLayout.AddControl(cancelButton, 2, 1); settingsWindowLayout.SetCellAlign(cancelButton, Alignment.Middle, Alignment.Middle); _SettingsWindow.Control = settingsWindowLayout; _InteractionWindow = new Window("InteractionWindow", FrameType.SmallScroll, titleFont) { Dock = DockMode.LowerThird, TitleAlignment = Alignment.Near, Margin = new Padding(16) }; // TODO More interaction window stuff (player icon, etc) var interactionDialogue = new DialogueLabel("interactionDialog", dialogueFont) { Padding = new Padding(8), Color = Color.Black, TextRate = TimeSpan.FromMilliseconds(40), }; interactionDialogue.Accept += (sender, e) => { _WindowManager.CloseWindow(_InteractionWindow); _State = GameState.SceneIdle; }; _InteractionWindow.Control = interactionDialogue; SetClientSize(clientSize); _WindowManager.OpenWindow(_MainMenuWindow); }