Queem.Core.History.DeltaChange.Filter C# (CSharp) Method

Filter() public method

public Filter ( bool>.Func predicate ) : IEnumerable
predicate bool>.Func
return IEnumerable
        public IEnumerable<Change> Filter(Func<Change, bool> predicate)
        {
            for (int i = 0; i <= this.lastIndex; ++i)
            {
                if (predicate(this.changes[i]))
                    yield return this.changes[i];
            }
        }

Usage Example

示例#1
0
        public void AnimateCancelMove(DeltaChange dc, Move move)
        {
            this.OnMoveAnimationPreview();
            this.SetupAnimationCount(move);

            var figureDiedItems = dc.Filter((ch) =>
                (ch.Action == MoveAction.Deletion) &&
                (ch.FigureColor != this.viewModel.CurrentPlayerColor) &&
                (ch.Square == move.To));

            Queem.Core.Figure figureDied = Queem.Core.Figure.Nobody;
            if (figureDiedItems.Count() > 0)
                figureDied = figureDiedItems.First().FigureType;

            while (dc.HasItems())
            {
                var change = dc.PopLast();

                switch (change.Action)
                {
                    case MoveAction.Move:
                        this.InnerAnimateMove(new Move(change.AdditionalSquare, change.Square), figureDied);
                        break;

                    case MoveAction.Creation:
                        break;

                    case MoveAction.Deletion:
                        if (move.To != change.Square)
                            this.viewModel.UpdateFigure(change.Square,
                                change.FigureType, change.FigureColor);
                        break;
                }
            }
        }