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(); } }
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); }
/// <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); }
private static void Initialize() { #region setup debug TextWriterTraceListener debugger = new TextWriterTraceListener(Console.Out); Debug.Listeners.Add(debugger); #endregion Debug.WriteLine("Initializing Game"); #region window setup window = new RenderWindow(new VideoMode((uint)screenSize.X, (uint)screenSize.Y, 32), "BPN", Styles.Close); window.SetFramerateLimit(30); window.KeyReleased += new EventHandler<KeyEventArgs>(window_KeyReleased); window.Closed += new EventHandler(window_Closed); window.MouseButtonReleased += new EventHandler<MouseButtonEventArgs>(window_MouseButtonReleased); window.MouseMoved += new EventHandler<MouseMoveEventArgs>(window_MouseMoved); window.MouseButtonPressed += new EventHandler<MouseButtonEventArgs>(window_MouseButtonPressed); window.MouseWheelMoved += new EventHandler<MouseWheelEventArgs>(window_MouseWheelMoved); window.EnableVerticalSync(true); #endregion #region Gui Setup guiRenderer = new Gwen.Renderer.SFML(window); guiRenderer.Initialize(); skin = new TexturedBase(guiRenderer, @"Data/DefaultSkin.png"); guiFont = new Gwen.Font("Data/OpenSans.ttf", 10); guiFontLarge = new Gwen.Font("Data/OpenSans.ttf", 14); guiRenderer.LoadFont(guiFont); guiRenderer.LoadFont(guiFontLarge); skin.SetDefaultFont(guiFont.FaceName); _canvas = new Canvas(skin); _canvas.SetSize(screenSize.X, screenSize.Y); _canvas.ShouldDrawBackground = true; _canvas.BackgroundColor = System.Drawing.Color.FromArgb(255, 150, 170, 170); _canvas.KeyboardInputEnabled = true; input = new Gwen.Input.SFML(); input.Initialize(_canvas); #endregion #region Side Buttons aboutPageButton = new Button(_canvas); aboutPageButton.Text = "About"; aboutPageButton.SetPos(4, 2*screenSize.Y/3-8); aboutPageButton.OnDown += new Gwen.Controls.Base.ControlCallback(aboutPageButton_OnDown); bookPageButton = new Button(_canvas); bookPageButton.Text = "Books"; bookPageButton.SetPos(4, 32); bookPageButton.OnDown += new Gwen.Controls.Base.ControlCallback(bookPageButton_OnDown); activePageButton = bookPageButton; #endregion int leftBound = 80; smallPageBounds = new System.Drawing.Rectangle(leftBound,leftBound,screenSize.X-leftBound*2,screenSize.Y -leftBound*2); #region Name Generator Initialization BookNameGenerator.Initialize(); PersonNameGenerator.Initialize(); //Have a few books ready for review at beginning of the game for (int i = 0; i < 8; i++) { Book b = new Book(); } #endregion GameManager.Initialize(); guiRenderer.Initialize(); Notifications.Initialize(); Book.Initialize(); Debug.WriteLine("Initialization Complete"); }