/// <summary> /// /// </summary> public ChallengePauseDialog(IScreen screen, DisplayLayer drawOrder) : base(screen, drawOrder, "Pause") { // Der Titel-Text ist mittig ausgerichtet AlignX = HorizontalAlignment.Center; Bounds.Size = new ScreenPoint (screen, 0.3f, 0.31f); // Erstelle das Pause-Menü pauseMenu = new Menu (Screen, Index + DisplayLayer.Menu); pauseMenu.Bounds = ContentBounds; pauseMenu.ItemAlignX = HorizontalAlignment.Left; pauseMenu.ItemAlignY = VerticalAlignment.Center; MenuEntry settingsButton = new MenuEntry ( screen: Screen, drawOrder: Index + DisplayLayer.MenuItem, name: "Settings", onClick: (time) => { Close (time); Screen.NextScreen = new GeneralSettingsScreen (Screen.Game); } ); MenuEntry backButton = new MenuEntry ( screen: Screen, drawOrder: Index + DisplayLayer.MenuItem, name: "Back to Game", onClick: (time) => { Close (time); } ); backButton.AddKey (Keys.Escape); MenuEntry discardExitButton = new MenuEntry ( screen: Screen, drawOrder: Index + DisplayLayer.MenuItem, name: "Abort Challenge", onClick: (time) => { Close (time); Screen.NextScreen = new StartScreen (Screen.Game); } ); backButton.AddKey (Keys.Escape); pauseMenu.Add (settingsButton); pauseMenu.Add (backButton); pauseMenu.Add (discardExitButton); }
/// <summary> /// Diese Methode wird für jede gefundene Spielstanddatei aufgerufen /// </summary> private void AddSavegameToList(string filename, KnotMetaData meta) { // Finde den Namen des Knotens string name = meta.Name.Length > 0 ? meta.Name : filename; // Erstelle eine Lamdafunktion, die beim Auswählen des Menüeintrags ausgeführt wird Action<GameTime> preview = (time) => { if (previewKnotMetaData != meta) { RemoveGameComponents (time, knotInfo); knotInfo.Clear (); previewRenderer.RenderKnot (loader.FileFormat.Load (filename)); previewWorld.Camera.ResetCamera (); previewKnotMetaData = meta; startButton.IsVisible = true; MenuEntry countEntry = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: Localizer.Localize ("Edge Count: ") + previewKnotMetaData.CountEdges, onClick: (t) => {} ); countEntry.Enabled = false; knotInfo.Add (countEntry); if (filename.Contains (SystemInfo.SavegameDirectory)) { MenuEntry deleteEntry = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Delete", onClick: (t) => deleteSavegame (filename, t) ); deleteEntry.AddKey (Keys.Delete); knotInfo.Add (deleteEntry); } AddGameComponents (time, knotInfo); } }; // Erstelle den Menüeintrag MenuEntry button = new MenuEntry ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: name, onClick: preview ); button.IsSelectable = true; button.IsLocalized = false; savegameMenu.Add (button); }
/// <summary> /// Erzeugt eine neue Instanz eines CreativeModeScreen-Objekts und initialisiert diese mit einem Knot3Game-Objekt game, sowie einem Knoten knot. /// </summary> public JunctionEditorScreen(GameCore game) : base(game) { // die Spielwelt world = new World (screen: this, drawOrder: DisplayLayer.GameWorld, bounds: Bounds.FromLeft (0.60f)); // der Input-Handler knotInput = new KnotInputHandler (screen: this, world: world); // der Mauszeiger pointer = new MousePointer (screen: this); // der Maus-Handler für die 3D-Modelle modelMouseHandler = new ModelMouseHandler (screen: this, world: world); // der Knoten-Renderer knotRenderer = new JunctionEditorRenderer (screen: this, position: Vector3.Zero); world.Add (knotRenderer); // visualisiert die BoundingSpheres debugBoundings = new DebugBoundings (screen: this, position: Vector3.Zero); world.Add (debugBoundings); // Hintergrund SkyCube skyCube = new SkyCube (screen: this, position: Vector3.Zero, distance: 10000); world.Add (skyCube); // Backbutton backButton = new MenuEntry ( screen: this, drawOrder: DisplayLayer.Overlay + DisplayLayer.MenuItem, name: "Back", onClick: (time) => NextScreen = new StartScreen (Game) ); backButton.AddKey (Keys.Escape); backButton.IsVisible = true; // Menü settingsMenu = new Menu (this, DisplayLayer.Overlay + DisplayLayer.Menu); settingsMenu.Bounds = Bounds.FromRight (0.40f).FromBottom (0.9f).FromLeft (0.8f); settingsMenu.Bounds.Padding = new ScreenPoint (this, 0.010f, 0.010f); settingsMenu.RelativeItemHeight = 0.030f; float[] validJunctionCounts = new float[] { 1, 2, 3 }; optionJunctionCount = new FloatOption ( section: "debug", name: "debug_junction_count", defaultValue: validJunctionCounts.At (-1), validValues: validJunctionCounts, configFile: Config.Default ); itemJunctionCount = new ComboBox ( screen: this, drawOrder: DisplayLayer.Overlay + DisplayLayer.MenuItem, text: "Junctions #" ); itemJunctionCount.AddEntries (optionJunctionCount); itemJunctionCount.ValueChanged += OnJunctionCountChanged; Direction[] validDirections = Direction.Values; optionJuctionDirection = new DistinctOption [3]; itemJunctionDirection = new ComboBox [3]; for (int i = 0; i < 3; ++i) { DistinctOption option = new DistinctOption ( section: "debug", name: "debug_junction_direction" + i.ToString (), defaultValue: validDirections [i * 2], validValues: validDirections.Select (d => d.Name), configFile: Config.Default ); ComboBox item = new ComboBox ( screen: this, drawOrder: DisplayLayer.Overlay + DisplayLayer.MenuItem, text: Localizer.Localize ("Direction ") + i.ToString () ); item.AddEntries (option); optionJuctionDirection [i] = option; item.ValueChanged += OnDirectionsChanged; itemJunctionDirection [i] = item; } itemBumpRotation = new ComboBox [3]; for (int i = 0; i < 3; ++i) { ComboBox item = new ComboBox ( screen: this, drawOrder: DisplayLayer.Overlay + DisplayLayer.MenuItem, text: Localizer.Localize ("Bump Angle ") + i.ToString () ); item.ValueChanged += OnAnglesChanged; itemBumpRotation [i] = item; } itemModels = new ComboBox [3]; for (int i = 0; i < 3; ++i) { ComboBox item = new ComboBox ( screen: this, drawOrder: DisplayLayer.Overlay + DisplayLayer.MenuItem, text: Localizer.Localize ("Model ") + i.ToString () ); item.ValueChanged += OnModelsChanged; itemModels [i] = item; } OnDirectionsChanged (null); OnJunctionCountChanged (null); world.Camera.PositionToTargetDistance = 180; }
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; }