Example #1
0
        /// <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);
        }
Example #2
0
        /// <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();
            }
        }