public void Update(IEngine engine)
        {
            foreach (var entity in engine.Entities(RequiredComponents))
            {
                var position   = entity.Component <Position>();
                var renderable = entity.Component <Renderable>();
                var opacity    = entity.Component <Opacity>();

                var fillColor = renderable.FillColor;
                fillColor.A = (byte)(opacity.Alpha * 255);

                renderable.FillColor = fillColor;
                renderable.Location  = new Point2D(position.X, position.Y);

                var render = renderable.Render();
                _target.Draw(render);
            }

            _frameCount.Tick();
            _lastUpdate += engine.Elapsed;

            if (_lastUpdate >= _settings.FpsFrequency)
            {
                var fps     = (long)(_frameCount / _lastUpdate);
                var content = engine.Debug(fps);
                _text.Content = content;

                _lastUpdate = ElapsedGameTime.Zero;
                _frameCount.Reset();
            }
            _target.Draw(_text);
        }
        public void Update(IEngine engine, HealingSettings settings)
        {
            _timeSinceLastHeal += engine.Elapsed;

            var elapsedIntervals = _timeSinceLastHeal / settings.Interval;

            if (elapsedIntervals <= 0)
            {
                return;
            }
            else
            {
                _timeSinceLastHeal = ElapsedGameTime.Zero;
            }

            foreach (var entity in engine.Entities(RequiredComponents))
            {
                var regen  = entity.Component <Regenerates>();
                var health = entity.Component <Health>();

                var newHealth = health.Amount + (regen.Amount * elapsedIntervals);
                health.Amount = Math.Min(health.Max, newHealth);
            }
        }