public static void Main() { var world = new World(9); var seed = world.Generation(new List <Coordinate>() { new Coordinate(1, 2), new Coordinate(2, 2), new Coordinate(3, 2), new Coordinate(4, 5), new Coordinate(5, 5), new Coordinate(6, 5), new Coordinate(0, 6), new Coordinate(0, 7), new Coordinate(1, 6), new Coordinate(1, 7), }).ToList().AsReadOnly(); var queue = new WorldQueue <IReadOnlyCollection <Coordinate> >(); var sourceToken = new CancellationTokenSource(); queue.PerformLogicAsync(sourceToken.Token, (newGeneration) => world.Generation(newGeneration).ToList().AsReadOnly(), seed); // The 'using' idiom guarantees proper resource cleanup. // We request 30 UpdateFrame events per second, and unlimited // RenderFrame events (as fast as the computer can handle). using (Game game = new Game(queue)) { game.Run(30.0); } sourceToken.Cancel(); }
internal Game(WorldQueue <IReadOnlyCollection <Coordinate> > worldQueue) : base(700, 600, GraphicsMode.Default, "OpenTK Quick Start Sample") { VSync = VSyncMode.On; _worldQueue = worldQueue; }