private void GameWorkFlow() { GameStatusTimer--; if (GameStatusTimer > 0) { return; } GameStatusTimer = 0; switch (GameStatus) { case GameEnum.Stop: break; case GameEnum.Prepare: Player.Visible = true; GameStatus = GameEnum.Play; break; case GameEnum.Play: if (Enemies.EnemiesAlive() == 0) { GameStatus = GameEnum.Next; GameStatusTimer = Constants.PlayerNextTime; } break; case GameEnum.Next: var initScore = Score + (Lives * Constants.RemainingLifeBonus); Initialise(initScore, Lives); break; case GameEnum.Dying: if (Lives > 0) { Player = new Models.Player(Constants.GameAreaWidth / 2, Constants.InitialPlayerYpos); GameStatus = GameEnum.Prepare; GameStatusTimer = Constants.PlayerPrepareTime; } else { GameStatus = GameEnum.Dead; LastKeyPress = default; } break; case GameEnum.Dead: if (LastKeyPress != default) { Initialise(); } break; default: break; } }
private void MoveMotherShip() { if (Mother.Visible && Mother.Status == StatusEnum.Alive) { Mother.Xpos -= Constants.MotherSpeed; if (Mother.Xpos < -Mother.Width / 2) { Mother.Visible = false; } } else if (Mother.Status != StatusEnum.Dying) { Mother.TimerTick(Enemies.EnemiesAlive()); } }