/// <summary> /// Метод, описывающий получение урона. /// </summary> /// <param name="damage">Количество жизней, которые следует отнять у объекта</param> public void GetDamage(int damage) { System.Media.SystemSounds.Asterisk.Play(); Health -= damage; EnemyMessage?.Invoke(this, new MessageEventArgs("Астероид поврежден.", damage, MessageEventArgs.EventTypeEnum.GotDamage)); if (Health <= 0) { Die(); } }
/// <summary> /// Метод обновления параметров объекта. /// </summary> public override void Update() { //Движение объекта вдоль координат X и Y Pos.X = Pos.X + Dir.X; Pos.Y = Pos.Y + Dir.Y; if (Pos.X < -Size.Width || Pos.Y < -Size.Height || Pos.Y > ScreenSize.Height + Size.Height) { //Если объект доходит до края экрана, то генерируется событие EnemyMessage?.Invoke(this, new MessageEventArgs("Астероид не был уничтожен, и теперь направляется в сторону планеты.", -2, MessageEventArgs.EventTypeEnum.OutOfScreen)); } //Поворот объекта на заданный угол Angle += DAngle; if (Angle >= 360) //Если угол больше или равен 360 градусов, то он выставляется в 0 { Angle = 0; } }
/// <summary> /// Метод, описывающий смерть объекта. /// </summary> public void Die() { System.Media.SystemSounds.Exclamation.Play(); EnemyMessage?.Invoke(this, new MessageEventArgs("Астероид уничтожен!", Points, MessageEventArgs.EventTypeEnum.Killed)); }