public void Draw(IEntities entities) { entities.ForEach( e => e.With <TextDisplay>( text => e.With <Spatial2>( spatial => UI.DrawTextCentered(text.Text(), spatial.Transform.ToRectangle(), text.Color, text.Font)))); }
public void Update(IEntities entities, TimeSpan delta) { _unprocessedControls.ForEach( ctrl => entities.ForEach( e => e.With <Controls>( ctrls => ctrls.OnControl(ctrl)))); _unprocessedControls.Clear(); }
private void SelectDragTarget(IEntities entities) { var possibleTargets = new List <GameObject>(); entities.ForEach(e => e.With <MouseDrag>(x => e.Transform.If(t => t.Intersects(_lastPos), t => possibleTargets.Add(e)))); if (possibleTargets.Any()) { _targets.Add(possibleTargets.OrderByDescending(x => x.Transform.ZIndex).First()); } }
public void Update(IEntities entities, TimeSpan delta) { entities.ForEach( (entity) => entity.With <Mortal>( (mortal) => entity.With <Health>( (health) => { if (health.HP < 1) { mortal.OnDeath(); } }))); }
private List <GameObject> GetMoving(IEntities entities) { var result = new List <GameObject>(); entities.ForEach( e => e.With <BoxCollider>( solid => e.With <Motion2>( motion => motion.If(motion.Velocity.Speed > 0, () => result.Add(e))))); return(result); }
public void Update(IEntities entities, TimeSpan delta) { // @todo #1 Add support for other Mouse Button Clicks var leftIsPressed = Mouse.GetState().LeftButton == ButtonState.Pressed; var pos = Mouse.GetState().Position; if (!_leftWasPressed && leftIsPressed) { entities.ForEach(e => e.With <MouseDownAction>(t => e.Transform.If(x => x.Intersects(pos), () => t.Action()))); entities.ForEach(e => e.With <ClickAction>(t => e.Transform.If(x => x.Intersects(pos), () => _targets.Add(e)))); _timer.Reset(); } if (_leftWasPressed && !leftIsPressed) { _targets.ForEach(e => e.With <ClickAction>(t => e.Transform.If(x => x.Intersects(pos), () => t.Action()))); _targets.Clear(); } _leftWasPressed = leftIsPressed; _timer.Update(delta); }
public void Update(IEntities entities, TimeSpan delta) { var moving = GetMoving(entities); if (!moving.Any()) { return; } entities.ForEach( e => e.With <BoxCollider>( collider => moving.ForEach(x => x.If(!e.Equals(x), () => StopIfWouldCollide(x, collider, delta))))); }
public void Draw(IEntities entities) { entities.ForEach(e => e.With <Sprite>( sprite => World.Draw(sprite.Name, e.Transform))); }
public void Update(IEntities entities, TimeSpan delta) { entities.ForEach(e => e.With <Motion2>( x => e.Transform.Location = e.Transform.Location + x.Velocity.GetDelta(delta))); }
public void Update(IEntities entities, TimeSpan delta) { entities.ForEach( (e) => e.With <Directable>( (d) => d.Binding(_unprocessedDirection))); }
public void Draw(IEntities entities) { entities.ForEach(x => x.With <ScreenBackgroundColor>( e => World.DrawBackgroundColor(e.Color))); }
public static void ForEach <T>(this IEntities entities, Action <T> action) { entities.ForEach(e => e.With(action)); }
public void Draw(IEntities entities) { entities.ForEach(x => x.With <Spatial2>( spatial => x.With <Sprite>( sprite => World.Draw(sprite.Name, spatial.Transform)))); }
public void Update(IEntities entities, TimeSpan delta) { entities.ForEach <IAutomaton>(x => x.Update(delta)); }
public void Update(IEntities entities, TimeSpan delta) { entities.ForEach(x => x.With <Spatial2>( spatial => x.With <Motion2>( motion => spatial.Transform.Location = spatial.Transform.Location + motion.Velocity.GetDelta(delta)))); }