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