Ejemplo n.º 1
0
        /// <summary>
        /// Обновление всех объектов
        /// </summary>
        public static void Update()
        {
            foreach (Star star in _stars)
            {
                star.Update();
            }
            foreach (Bullet bullet in Bullets)
            {
                bullet.Update();
            }
            foreach (Asteroid asteroid in _asteroids.ToArray())
            {
                asteroid.Update();

                foreach (Bullet bullet in Bullets.ToArray())
                {
                    if (asteroid.Collision(bullet))
                    {
                        GameMessage?.Invoke($"Попадание в {nameof(asteroid)}! Нанесено урона: {bullet.Damage}");
                        asteroid.ToDamage(bullet.Damage);
                        Bullets.Remove(bullet);

                        if (_ship.Heath <= 5)
                        {
                            GameMessage?.Invoke(
                                $"Внимание!!! Низкий уровень здоровья!!! Осталось жизней: {_ship.Heath}");
                            if (_aidKit == null)
                            {
                                _aidKit = new AidKit(new Point(50, Rnd.Next(Height)), new Point(1, 0),
                                                     new Size(20, 20));
                            }
                        }
                    }
                }

                if (_ship.Collision(asteroid))
                {
                    GameMessage?.Invoke($"Столкновение с {nameof(asteroid)}! Получено урона: {asteroid.Damage}");
                    _ship.ToDamage(asteroid.Damage);
                    asteroid.ToDamage(1);
                }

                if (asteroid.Health <= 0)
                {
                    GameMessage?.Invoke($"{nameof(asteroid)} уничтожен! Текущий счет: {_ship.Score}");
                    _asteroids.Remove(asteroid);
                    _ship.Score++;
                    if (_asteroids.Count == 0)
                    {
                        _countAsteroids++;
                        CreateAsteroids();
                    }
                }
            }

            _ship.Update();

            if (_aidKit != null)
            {
                if (_ship.Collision(_aidKit))
                {
                    GameMessage?.Invoke($"Аптечка поднята! Жизней восстановлено: {_aidKit.Health}");
                    _ship.Heath += _aidKit.Health;
                    _aidKit      = null;
                }
            }

            if (_ship.Heath <= 0)
            {
                GameMessage?.Invoke($"{nameof(_ship)} уничтожен!");
                _ship.ToDie();
            }
        }