private static void Main(string[] args) { Console.WriteLine("Initializing..."); var window = new RenderWindow(new VideoMode(500, 600), "Minesweeper", Styles.Close | Styles.Titlebar); window.SetFramerateLimit(30); while (true) { var board = GameStateGenerator.GenerateEmptyBoard(Difficulty.Beginner); GameEventManager.Init(board); var shapeManager = new ShapeManager(board); window.RegisterEvents(board, shapeManager); while (window.IsOpen) { window.Clear(); shapeManager.Update(); foreach (var drawable in shapeManager.AllDrawables) { window.Draw(drawable); } window.Display(); var gameState = GameEventManager.CheckGameState(); if (gameState == GameState.GameState.Lose || gameState == GameState.GameState.Win) { Thread.Sleep(3000); //TODO score and wait here break; } if (gameState == GameState.GameState.Reset) { Console.WriteLine("Instant reset"); break; } window.DispatchEvents(); } } }
public static void RegisterEvents(this RenderWindow window, Board board, ShapeManager shapeManager) { if (closeEventHandler != null) { window.Closed -= closeEventHandler.HandleEvent; } closeEventHandler = new CloseEventHandler(window); window.Closed += closeEventHandler.HandleEvent; if (mouseButtonEventHandler != null) { window.MouseButtonPressed -= mouseButtonEventHandler.HandleEvent; } mouseButtonEventHandler = new MouseButtonEventHandler(window, board, shapeManager); window.MouseButtonPressed += mouseButtonEventHandler.HandleEvent; }