private void SpawnEnemies() { if (EnemyAppearingSW.Elapsed.TotalSeconds >= 1 / EnemiesPerSecond) { var enemy = new Enemy(RenderWidth - 1, Rand.Next(0, RenderHeight - 1)) { Health = 25 }; Creatures.Add(enemy); Enemies.Add(enemy); EnemyAppearingSW = Stopwatch.StartNew(); EnemyAppearingSW.Start(); } }
private void UpdateEnemies() { foreach (var enemy in Enemies) { enemy.PreciseX += enemy.Speed * FrameTime.TotalSeconds; var eBullet = ((Enemy)enemy).Fire(); if (eBullet != null) { EnemyBullets.Add(eBullet); Creatures.Add(eBullet); } } UpdateEnemyBullets(); }
public void Run() { Running = true; Thread t = new Thread(() => { Console.CursorVisible = false; Stopwatch sw = new Stopwatch(); EnemyAppearingSW.Start(); State = GameState.Playing; InitMenus(); Creatures.Add(Character); while (Running) { sw = Stopwatch.StartNew(); sw.Start(); ProcessInput(); Update(); Render(); sw.Stop(); FrameTime = sw.Elapsed; //if (FrameTime.TotalMilliseconds < 33) //{ // sw.Start(); // Thread.Sleep(TimeSpan.FromMilliseconds(33) - FrameTime); // sw.Stop(); // FrameTime = sw.Elapsed; //} } }); t.SetApartmentState(ApartmentState.STA); t.Start(); }
private void ProcessInput() { if (State == GameState.Typing) { ProcessTypingInput(); return; } if (Keyboard.IsKeyDown(Key.Escape) && State == GameState.Playing) { State = GameState.OpenedPauseMenu; } if (Keyboard.IsKeyDown(Key.Escape) && State != GameState.Playing && State != GameState.OpenedPauseMenu) { State = GameState.OpenedMainMenu; } if (State == GameState.OpenedMainMenu || State == GameState.OpenedPauseMenu) { ProcessMenuInput(); return; } if (State == GameState.ShowingDeathMessage) { return; } if (Keyboard.IsKeyDown(Key.Right)) { if (Character.PreciseX < RenderWidth) { Character.PreciseX += Character.Speed * FrameTime.TotalSeconds; } } if (Keyboard.IsKeyDown(Key.Left)) { if (Character.PreciseX > 0) { Character.PreciseX -= Character.Speed * FrameTime.TotalSeconds; } } if (Keyboard.IsKeyDown(Key.Up)) { if (Character.PreciseY > 0) { Character.PreciseY -= Character.Speed * FrameTime.TotalSeconds; } } if (Keyboard.IsKeyDown(Key.Down)) { if (Character.PreciseY < RenderHeight - Character.Height) { Character.PreciseY += Character.Speed * FrameTime.TotalSeconds; } } if (Keyboard.IsKeyDown(Key.Space)) { var bullet = Character.Fire(); if (bullet != null) { Creatures.Add(bullet); } } }