/// <summary> /// Split eligible players based upon contribution into "all", "winner", "loser" /// </summary> /// <param name="logger"></param> /// <param name="lockingRealm"></param> /// <returns></returns> public Tuple <ConcurrentDictionary <Player, int>, ConcurrentDictionary <Player, int>, ConcurrentDictionary <Player, int> > DetermineEligiblePlayers(ILogger logger, Realms lockingRealm) { ConcurrentDictionary <Player, int> winningRealmPlayers; ConcurrentDictionary <Player, int> losingRealmPlayers; ConcurrentDictionary <Player, int> eligiblePlayersAllRealms; var allEligiblePlayers = GetEligiblePlayers(0).ToList(); // Reverse the order so we have highest eligbility first. allEligiblePlayers.Reverse(); // var rewardAssignments = new List<LootBagTypeDefinition>(); // Split the contributing players into segments. var eligibilitySplits = PlayerUtil.SegmentEligiblePlayers( allEligiblePlayers, lockingRealm, this, true, true); // All eligible players that are still in game eligiblePlayersAllRealms = eligibilitySplits.Item1; winningRealmPlayers = eligibilitySplits.Item2; losingRealmPlayers = eligibilitySplits.Item3; logger.Debug($"eligiblePlayersAllRealms Players Count = {eligiblePlayersAllRealms.Count()}"); logger.Debug($"winningRealmPlayers Players Count = {winningRealmPlayers.Count()}"); logger.Debug($"losingRealmPlayers Players Count = {losingRealmPlayers.Count()}"); return(eligibilitySplits); }