Sanguosha.UI.Controls.PlayerViewModel._GetSelectedPlayers C# (CSharp) Method

_GetSelectedPlayers() private method

private _GetSelectedPlayers ( ) : List
return List
        private List<Player> _GetSelectedPlayers()
        {
            var currentSelection = new List<Player>();
            foreach (var playerModel in _game.PlayerModels)
            {
                if (playerModel.IsSelected)
                {
                    if (!playerModel.IsSelectionRepeatable)
                    {
                        currentSelection.Add(playerModel.Player);
                    }
                    else
                    {
                        for (int i = 0; i < playerModel.SelectedTimes; i++)
                        {
                            currentSelection.Add(playerModel.Player);
                        }
                    }
                }
            }

            var diff1 = new List<Player>(currentSelection);
            var diff2 = new List<Player>(_lastSelectedPlayers);

            foreach (var player in _lastSelectedPlayers)
            {
                diff1.Remove(player);
            }
            foreach (var player in currentSelection)
            {
                diff2.Remove(player);
            }

            _lastSelectedPlayers.AddRange(diff1);
            foreach (var player in diff2)
            {
                _lastSelectedPlayers.Remove(player);
            }
            Trace.Assert(_lastSelectedPlayers.Count == currentSelection.Count);
            return new List<Player>(_lastSelectedPlayers);
        }