コード例 #1
0
 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))));
 }
コード例 #2
0
 public void Update(IEntities entities, TimeSpan delta)
 {
     _unprocessedControls.ForEach(
         ctrl => entities.ForEach(
             e => e.With <Controls>(
                 ctrls => ctrls.OnControl(ctrl))));
     _unprocessedControls.Clear();
 }
コード例 #3
0
        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());
            }
        }
コード例 #4
0
ファイル: Reaper.cs プロジェクト: EnigmaDragons/AmberSunrise
 public void Update(IEntities entities, TimeSpan delta)
 {
     entities.ForEach(
         (entity) => entity.With <Mortal>(
             (mortal) => entity.With <Health>(
                 (health) => { if (health.HP < 1)
                               {
                                   mortal.OnDeath();
                               }
                 })));
 }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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)))));
        }
コード例 #8
0
 public void Draw(IEntities entities)
 {
     entities.ForEach(e => e.With <Sprite>(
                          sprite => World.Draw(sprite.Name, e.Transform)));
 }
コード例 #9
0
 public void Update(IEntities entities, TimeSpan delta)
 {
     entities.ForEach(e => e.With <Motion2>(
                          x => e.Transform.Location = e.Transform.Location + x.Velocity.GetDelta(delta)));
 }
コード例 #10
0
 public void Update(IEntities entities, TimeSpan delta)
 {
     entities.ForEach(
         (e) => e.With <Directable>(
             (d) => d.Binding(_unprocessedDirection)));
 }
コード例 #11
0
 public void Draw(IEntities entities)
 {
     entities.ForEach(x => x.With <ScreenBackgroundColor>(
                          e => World.DrawBackgroundColor(e.Color)));
 }
コード例 #12
0
 public static void ForEach <T>(this IEntities entities, Action <T> action)
 {
     entities.ForEach(e => e.With(action));
 }
コード例 #13
0
 public void Draw(IEntities entities)
 {
     entities.ForEach(x => x.With <Spatial2>(
                          spatial => x.With <Sprite>(
                              sprite => World.Draw(sprite.Name, spatial.Transform))));
 }
コード例 #14
0
ファイル: Automation.cs プロジェクト: EnigmaDragons/MegaBuy
 public void Update(IEntities entities, TimeSpan delta)
 {
     entities.ForEach <IAutomaton>(x => x.Update(delta));
 }
コード例 #15
0
 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))));
 }