Exemplo n.º 1
0
        private static void AssignFirstSet(InterruptAssignment interruptAssignment, List <OrbAssignment> orbAssignments)
        {
            var firstSet = interruptAssignment.Sets[1];

            var validPlayersFirst3 = orbAssignments.Where(a => a.Set != 1).OrderBy(a => PreferMelee(a.Player)).ThenBy(p => p.Player.Name).ToList();

            var aoeStunners = validPlayersFirst3.Where(p => p.Player.HasAoeStun);

            foreach (var stunner in aoeStunners)
            {
                if (firstSet.Adds[2].Interrupts[1] == null)
                {
                    firstSet.Adds[2].Interrupts[1] = stunner.Player;
                    firstSet.Adds[3].Interrupts[1] = stunner.Player;
                    continue;
                }
                if (firstSet.Adds[2].Interrupts[2] == null)
                {
                    firstSet.Adds[2].Interrupts[2] = stunner.Player;
                    firstSet.Adds[3].Interrupts[2] = stunner.Player;
                    break;
                }
            }

            AssignRest(validPlayersFirst3, firstSet.Adds[1], firstSet);
            AssignRest(validPlayersFirst3, firstSet.Adds[2], firstSet);
            AssignRest(validPlayersFirst3, firstSet.Adds[3], firstSet);

            var validPlayersLast2 = orbAssignments.Where(a => a.Set != 2 && a.Set != 1).OrderBy(a => PreferRanged(a.Player)).ThenBy(p => p.Player.Name).ToList();

            AssignRest(validPlayersLast2, firstSet.Adds[4], firstSet);
            AssignRest(validPlayersLast2, firstSet.Adds[5], firstSet);
        }
Exemplo n.º 2
0
        private static void AssignThirdSet(InterruptAssignment interruptAssignment, List <OrbAssignment> orbAssignments)
        {
            var thirdSet     = interruptAssignment.Sets[3];
            var validPlayers = orbAssignments.Where(a => a.Set != 3).OrderBy(a => PreferRanged(a.Player)).ThenBy(p => p.Player.Name).ToList();

            AssignRest(validPlayers, thirdSet.Adds[1], thirdSet);
            AssignRest(validPlayers, thirdSet.Adds[2], thirdSet);
            AssignRest(validPlayers, thirdSet.Adds[3], thirdSet);
        }
Exemplo n.º 3
0
        public static InterruptAssignment AssignInterrupts(List <OrbAssignment> orbAssignments)
        {
            var interruptAssignment = new InterruptAssignment();

            AssignFirstSet(interruptAssignment, orbAssignments);
            AssignSecondSet(interruptAssignment, orbAssignments);
            AssignThirdSet(interruptAssignment, orbAssignments);
            AssignFourthSet(interruptAssignment, orbAssignments);
            AssignTendrils(interruptAssignment, orbAssignments);

            return(interruptAssignment);
        }
Exemplo n.º 4
0
 public static IEnumerable <PersonalTendrilAssignment> ListTendrilAssignments(InterruptAssignment assignments)
 {
     foreach (var tendrilAssignment in assignments.Tendrils.Interrupts)
     {
         yield return(new PersonalTendrilAssignment
         {
             Player = tendrilAssignment.Value,
             Order = tendrilAssignment.Key,
             Partner = assignments.Tendrils.Interrupts.FirstOrDefault(t => t.Value != tendrilAssignment.Value).Value
         });
     }
 }
Exemplo n.º 5
0
        public static List <PersonalInterruptAssignment> ListAssignments(InterruptAssignment assignments)
        {
            var personalAssignments = assignments.Sets.SelectMany(s => s.Value.Adds.SelectMany(a => a.Value.Interrupts.Select(i => new PersonalInterruptAssignment
            {
                Player    = i.Value,
                Order     = i.Key,
                AddNumber = a.Key,
                SetNumber = s.Key
            }))).ToList();

            foreach (var personalAssignment in personalAssignments)
            {
                var inverseOrder = personalAssignment.Order == 1 ? 2 : 1;
                personalAssignment.Partner = personalAssignments.FirstOrDefault(pa => pa.SetNumber == personalAssignment.SetNumber && pa.AddNumber == personalAssignment.AddNumber && pa.Order == inverseOrder)?.Player;
            }

            return(personalAssignments);
        }
Exemplo n.º 6
0
        private static void AssignTendrils(InterruptAssignment interruptAssignment, List <OrbAssignment> orbAssignments)
        {
            var validPlayers = orbAssignments.Where(a => a.Set != 3).OrderBy(a => PreferMelee(a.Player)).ThenBy(p => p.Player.Name).ToList();

            foreach (var player in validPlayers)
            {
                if (IsAssigned(player.Player, interruptAssignment.Sets[3]) || IsAssigned(player.Player, interruptAssignment.Sets[4]))
                {
                    continue;
                }

                if (interruptAssignment.Tendrils.Interrupts[1] == null)
                {
                    interruptAssignment.Tendrils.Interrupts[1] = player.Player;
                    continue;
                }

                if (interruptAssignment.Tendrils.Interrupts[2] == null)
                {
                    interruptAssignment.Tendrils.Interrupts[2] = player.Player;
                    break;
                }
            }
        }