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); } }