/// <summary> /// Erzeugt eine neue Instanz eines StartScreen-Objekts und initialisiert diese mit einem Knot3Game-Objekt. /// </summary> public StartScreen(GameCore game) : base(game) { // leere den Screen-Stack beim Öffnen dieses Screens ClearScreenHistory = true; // der Container für die Buttons buttons = new Container (screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.Menu); // logo logo = this.LoadTexture (name: "logo"); if (Config.Default ["debug", "projector-mode", false]) { logo = ContentLoader.InvertTexture (screen: this, texture: logo); } // create a new SpriteBatch, which can be used to draw textures spriteBatch = new SpriteBatch (GraphicsDevice); // menu buttons.ItemAlignX = HorizontalAlignment.Center; buttons.ItemAlignY = VerticalAlignment.Center; Button creativeButton = new Button ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Creative", onClick: (time) => NextScreen = new CreativeMainScreen (Game) ); creativeButton.SetCoordinates (left: 0.700f, top: 0.250f, right: 0.960f, bottom: 0.380f); Button challengeButton = new Button ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Challenge", onClick: (time) => NextScreen = new ChallengeStartScreen (Game) ); challengeButton.SetCoordinates (left: 0.000f, top: 0.050f, right: 0.380f, bottom: 0.190f); Button settingsButton = new Button ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Settings", onClick: (time) => NextScreen = new GeneralSettingsScreen (Game) ); settingsButton.SetCoordinates (left: 0.260f, top: 0.840f, right: 0.480f, bottom: 0.950f); Button exitButton = new Button ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: String.Empty, // "Exit", onClick: (time) => Game.Exit () ); exitButton.AddKey (Keys.Escape); exitButton.SetCoordinates (left: 0.815f, top: 0.585f, right: 0.895f, bottom: 0.705f); exitButton.BackgroundTexture = this.LoadTexture ("exit300"); if (Config.Default ["debug", "projector-mode", false]) { exitButton.BackgroundTexture = ContentLoader.InvertTexture (screen: this, texture: exitButton.BackgroundTexture); } buttons.Add (creativeButton); buttons.Add (challengeButton); buttons.Add (settingsButton); buttons.Add (exitButton); // Linien: lines.AddPoints ( 0.000f, 0.050f, 0.380f, 0.250f, 0.960f, 0.380f, 0.700f, 0.160f, 1.000f ); lines.AddPoints (0.000f, 0.190f, 0.620f, 0.785f, 0.800f, 0.565f, // Exit oben. 0.910f, // Exit rechts. 0.730f, // Exit unten. 0.480f, 0.950f, 0.260f, 0.840f, 0.520f, 1.000f ); }
public SettingsScreen(GameCore game) : base(game) { MenuName = "Settings"; spriteBatch = new SpriteBatch (GraphicsDevice); navigationMenu = new Menu (this, DisplayLayer.ScreenUI + DisplayLayer.Menu); navigationMenu.Bounds.Position = ScreenContentBounds.Position; navigationMenu.Bounds.Size = new ScreenPoint (this, 0.200f, ScreenContentBounds.Size.Relative.Y); navigationMenu.Bounds.Padding = new ScreenPoint (this, 0.010f, 0.010f); navigationMenu.ItemAlignX = HorizontalAlignment.Left; navigationMenu.ItemAlignY = VerticalAlignment.Center; MenuEntry profileButton = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "General", onClick: (time) => { game.SkipNextScreenEffect =true; NextScreen = new GeneralSettingsScreen (Game); } ); MenuEntry graphicsButton = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Graphics", onClick: (time) => { game.SkipNextScreenEffect =true; NextScreen = new GraphicsSettingsScreen (Game); } ); MenuEntry audioButton = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Audio", onClick: (time) => { game.SkipNextScreenEffect =true; NextScreen = new AudioSettingsScreen (Game); } ); MenuEntry controlsButton = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Controls", onClick: (time) => { game.SkipNextScreenEffect =true; NextScreen = new ControlSettingsScreen (Game); } ); navigationMenu.Add (profileButton); navigationMenu.Add (graphicsButton); navigationMenu.Add (audioButton); navigationMenu.Add (controlsButton); initalizeDebugButton (); lines.AddPoints (0.000f, 0.050f, 0.030f, 0.970f, 0.760f, 0.895f, 0.880f, 0.970f, 0.970f, 0.050f, 1.000f ); backButton = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Back", onClick: (time) => NextScreen = Game.Screens.Where ((s) => !(s is SettingsScreen)).ElementAt (0) ); backButton.AddKey (Keys.Escape); backButton.SetCoordinates (left: 0.770f, top: 0.910f, right: 0.870f, bottom: 0.960f); backButton.AlignX = HorizontalAlignment.Center; // this menu contains the actual settings and is filled in the subclasses settingsMenu = new Menu (this, DisplayLayer.ScreenUI + DisplayLayer.Menu); settingsMenu.Bounds.Position = ScreenContentBounds.Position + navigationMenu.Bounds.Size.OnlyX; settingsMenu.Bounds.Size = ScreenContentBounds.Size - navigationMenu.Bounds.Size.OnlyX;; settingsMenu.Bounds.Padding = new ScreenPoint (this, 0.010f, 0.010f); settingsMenu.ItemAlignX = HorizontalAlignment.Left; settingsMenu.ItemAlignY = VerticalAlignment.Center; settingsMenu.RelativeItemHeight = Design.DataItemHeight; }