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