/// <summary> /// Handles the <see cref="IGameContainer.RenderWindowChanged"/> event. /// </summary> /// <param name="oldValue">The old value.</param> /// <param name="newValue">The new value.</param> protected virtual void OnRenderWindowChanged(RenderWindow oldValue, RenderWindow newValue) { if (newValue == null) { return; } newValue.ShowMouseCursor(ShowMouseCursor); newValue.EnableVerticalSync(UseVerticalSync); newValue.SetActive(); newValue.Show(true); }
void RecreateRenderWindow(IntPtr handle) { if (_rw != null) { if (!_rw.IsDisposed) { _rw.Dispose(); } _rw = null; } _rw = new RenderWindow(handle); _rw.EnableVerticalSync(false); _rw.Show(true); OnRenderWindowCreated(_rw); }
private static void Main(string[] args) { var form = new SettingsDialog(); Application.EnableVisualStyles(); Application.Run(form); videoMode = VideoMode.DesktopMode; RenderWindow window = new RenderWindow(videoMode, "Maze Crap", Styles.Fullscreen); window.EnableVerticalSync(Settings.Default.VerticalSync); window.ShowMouseCursor(false); window.Closed += (sender, e) => Application.Exit(); window.KeyPressed += (sender, e) => ((RenderWindow)sender).Close(); SetUpMaze(); target = new Image(VideoMode.DesktopMode.Width / 10, VideoMode.DesktopMode.Height / 10) { Smooth = false }; float accumulator = 0; float WaitTime = 0; var fps = (float)Settings.Default.Framerate; window.Show(true); bool hasrun = false; while (window.IsOpened()) { accumulator += window.GetFrameTime(); while (accumulator > fps) { if (FinishedGenerating && !Solving) { if (WaitTime < Settings.Default.WaitTime && hasrun) { WaitTime += window.GetFrameTime(); } else { WaitTime = 0; CurrentCell = StartCell * 2; VisitedWalls[CurrentCell.X, CurrentCell.Y] = true; CellStack.Clear(); Solving = true; hasrun = true; } accumulator -= fps; continue; } if (Solving && FinishedSolving) { if (WaitTime < Settings.Default.WaitTime) { WaitTime += window.GetFrameTime(); } else { Solving = false; FinishedGenerating = false; FinishedSolving = false; SetUpMaze(); continue; } continue; } if (Solving && !FinishedSolving) { if (Settings.Default.ShowSolving) { FinishedSolving = !SolveIterate(CellStack, Cells, Walls, StartCell, EndCell); } else { while (SolveIterate(CellStack, Cells, Walls, StartCell, EndCell)) { ; } FinishedSolving = true; } accumulator -= fps; continue; } if (Settings.Default.ShowGeneration) { FinishedGenerating = !GenerateIterate(CellStack, Cells, Walls); hasrun = true; } else { while (GenerateIterate(CellStack, Cells, Walls)) { ; } FinishedGenerating = true; } accumulator -= fps; NeedsRedraw = true; } Render(window); window.Display(); window.DispatchEvents(); } }