public TitleConsole(int width, int height) : base(width, height) { DefaultBackground = Color.Black; landGrid = new bool[Width, Height]; var start = new Button(10, 1) { Position = new Point(5, 5), Text = "START", }; start.Click += (btn, args) => { StartGame(); }; this.Controls.Add(start); var quit = new Button(10, 1) { Position = new Point(5, 6), Text = "QUIT", }; quit.Click += (btn, args) => { ExitGame(); }; this.Controls.Add(quit); titleLines = 0; waterLevel = Height - 10; timers = new List <ITimer> { new TimerLimited(0.25, () => { titleLines++; }, 25), new TimerLimited(5, () => { timers = new List <ITimer> { new Timer(waterLineInterval, () => { waterLines.Add(new XY(0, waterLevel + Random.Next(waterHeight))); }), new Timer(waterTrailInterval, () => { waterLines.ForEach(line => waterTrails.Add(new WaterTrail(line.x, line.y, waterTrailLifespan))); }), new Timer(planeInterval, () => { planes.Add(new XY(0, planeLevel + Random.Next(10))); }), new Timer(playerInterval, () => { planes.ForEach(plane => { if (Main.InRange(plane.x + PLANE.LineLength(), Width / 2, 30) && Random.Next(2) < 1) { players.Add(plane.clone + new XY(8, 1)); } }); }), new TimerLimited(0.05, () => { for (int i = 0; i < 25; i++) { land.Add(new XY(Width / 2 + Random.Amplitude(15) + Random.Amplitude(15) + Random.Amplitude(15), planeLevel)); } }, (int)(landSpawnTime / 0.05)) }; }), }; }