예제 #1
0
        public override void Draw(Graphics graphics, ThreadList <IDrawable> drawList, Action <Graphics> onDraw)
        {
            drawList.RemoveAll(DeleteIfDead);
            try
            {
                drawList.ForEach(drawable => drawable.Draw(graphics));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            onDraw(graphics);
        }
예제 #2
0
        public override void Update(float delta, ThreadList <IUpdatable> updateList, Action <float> onUpdate)
        {
            updateList.RemoveAll(DeleteIfDead);
            try
            {
                updateList.ForEach(updatable => updatable.Update(delta));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            onUpdate(delta);
        }
예제 #3
0
        protected override void OnUpdate(float delta)
        {
            _waveState?.Update(delta);

            try
            {
                _asteroids.ForEach(asteroid => asteroid.Collision(_ship));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            try
            {
                _medics.ForEach(medic =>
                {
                    medic.Collision(_ship);
                    medic.Update(delta);
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            try
            {
                _bullets.ForEach(bullet =>
                {
                    _asteroids.ForEach(asteroid => asteroid.Collision(bullet));
                    bullet.Update(delta);
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            _asteroids.RemoveAll(asteroid => asteroid.IsDead);
            _bullets.RemoveAll(bullet => bullet.IsDead);
            _medics.RemoveAll(medic => medic.IsDead);
        }
예제 #4
0
        public override void Update(float totalSeconds)
        {
            base.Update(totalSeconds);
            try
            {
                _asteroids.ForEach(asteroid => asteroid.Collision(_ship));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            try
            {
                _medics.ForEach(medic =>
                {
                    medic.Collision(_ship);
                    medic.Update(totalSeconds);
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            try
            {
                _bullets.ForEach(bullet =>
                {
                    _asteroids.ForEach(asteroid => asteroid.Collision(bullet));
                    bullet.Update(totalSeconds);
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }

            _asteroids.RemoveAll(asteroid => asteroid.IsDead);
            _bullets.RemoveAll(bullet => bullet.IsDead);
            _medics.RemoveAll(medic => medic.IsDead);
        }
예제 #5
0
        // Перебераем весь список, но оставляем пользователю возможность
        // переопределить метод и обновлять данные как ему надо
        public virtual void Update(float totalSeconds)
        {
            if (!_loaded)
            {
                return;
            }


            _toUpdate.RemoveAll(DeleteIfDead);
            try
            {
                _toUpdate.ForEach(updatable => updatable.Update(totalSeconds));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }
        }
예제 #6
0
        // Перебераем весь список, но оставляем пользователю возможность
        // переопределить метод и рисовать как ему надо
        public virtual void Draw(Graphics graphics)
        {
            if (!_loaded)
            {
                return;
            }

            // Пока не знаю как правильно блокировать вне потока
            // поэтому изменение вместо коллекции отправляю массив из этой коллекции
            _toDraw.RemoveAll(DeleteIfDead);
            try
            {
                _toDraw.ForEach(drawable => drawable.Draw(graphics));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                Logger.Error(ex.StackTrace);
            }
        }