/// <summary> /// Sort this plan /// </summary> /// <param name="sort"></param> /// <param name="reverseOrder"></param> /// <param name="groupByPriority"></param> public void Sort(PlanEntrySort sort, bool reverseOrder, bool groupByPriority) { var sorter = new PlanSorter(m_character, m_items, sort, reverseOrder, groupByPriority); // Perform the sort var entries = sorter.Sort(); // Update plan this.RebuildPlanFrom(entries); }
/// <summary> /// Performs a simple ordering by the given sort criteria, based on the latest statistics. /// </summary> /// <param name="sort"></param> /// <param name="reverseOrder"></param> internal void SimpleSort(PlanEntrySort sort, bool reverseOrder) { // Apply simple sort operators switch (sort) { case PlanEntrySort.Name: m_items.StableSort(PlanSorter.CompareByName); break; case PlanEntrySort.Cost: m_items.StableSort(PlanSorter.CompareByCost); break; case PlanEntrySort.PrimaryAttribute: m_items.StableSort(PlanSorter.CompareByPrimaryAttribute); break; case PlanEntrySort.SecondaryAttribute: m_items.StableSort(PlanSorter.CompareBySecondaryAttribute); break; case PlanEntrySort.Priority: m_items.StableSort(PlanSorter.CompareByPriority); break; case PlanEntrySort.PlanGroup: m_items.StableSort(PlanSorter.CompareByPlanGroup); break; case PlanEntrySort.PercentCompleted: m_items.StableSort(PlanSorter.CompareByPercentCompleted); break; case PlanEntrySort.Rank: m_items.StableSort(PlanSorter.CompareByRank); break; case PlanEntrySort.Notes: m_items.StableSort(PlanSorter.CompareByNotes); break; case PlanEntrySort.PlanType: m_items.StableSort(PlanSorter.CompareByPlanType); break; case PlanEntrySort.TimeDifference: m_items.StableSort(PlanSorter.CompareByTimeDifference); break; case PlanEntrySort.TrainingTime: m_items.StableSort(PlanSorter.CompareByTrainingTime); break; case PlanEntrySort.TrainingTimeNatural: m_items.StableSort(PlanSorter.CompareByTrainingTimeNatural); break; case PlanEntrySort.SkillGroupDuration: var skillGroupsDurations = new Dictionary <StaticSkillGroup, TimeSpan>(); m_items.StableSort((x, y) => PlanSorter.CompareBySkillGroupDuration(x, y, m_items, skillGroupsDurations)); break; case PlanEntrySort.SPPerHour: m_items.StableSort(PlanSorter.CompareBySPPerHour); break; case PlanEntrySort.SkillPointsRequired: m_items.StableSort(PlanSorter.CompareBySkillPointsRequired); break; default: break; } // Reverse order if (reverseOrder) { m_items.Reverse(); } }