Esempio n. 1
0
 /// <summary>
 /// Compares by plan group.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByPlanGroup(PlanEntry x, PlanEntry y)
     => String.Compare(x.PlanGroupsDescription, y.PlanGroupsDescription, StringComparison.CurrentCulture);
Esempio n. 2
0
 /// <summary>
 /// Compares by plan type.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByPlanType(PlanEntry x, PlanEntry y) => (int)x.Type - (int)y.Type;
Esempio n. 3
0
 /// <summary>
 /// Compares by secondary attribute.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareBySecondaryAttribute(PlanEntry x, PlanEntry y)
     => (int)x.Skill.SecondaryAttribute - (int)y.Skill.SecondaryAttribute;
Esempio n. 4
0
 /// <summary>
 /// Compares by priority.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByPriority(PlanEntry x, PlanEntry y) => x.Priority - y.Priority;
Esempio n. 5
0
 /// <summary>
 /// Compares by skill points required.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareBySkillPointsRequired(PlanEntry x, PlanEntry y)
     => x.SkillPointsRequired.CompareTo(y.SkillPointsRequired);
Esempio n. 6
0
        /// <summary>
        /// Removes an item.
        /// </summary>
        /// <param name="entry">The entry.</param>
        /// <exception cref="System.ArgumentNullException">entry</exception>
        public void Remove(PlanEntry entry)
        {
            entry.ThrowIfNull(nameof(entry));

            int index = IndexOf(entry.Skill, entry.Level);
            if (index != -1)
                RemoveCore(index);
        }
Esempio n. 7
0
 /// <summary>
 /// Compares by training time.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByTrainingTime(PlanEntry x, PlanEntry y) => x.TrainingTime.CompareTo(y.TrainingTime);
Esempio n. 8
0
 /// <summary>
 /// Compares by percent completed.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByPercentCompleted(PlanEntry x, PlanEntry y)
 {
     float xRatio = x.CharacterSkill.FractionCompleted;
     float yRatio = y.CharacterSkill.FractionCompleted;
     return xRatio.CompareTo(yRatio);
 }
Esempio n. 9
0
 /// <summary>
 /// Compares by name.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByName(PlanEntry x, PlanEntry y)
 {
     int nameDiff = String.CompareOrdinal(x.Skill.Name, y.Skill.Name);
     return nameDiff != 0 ? nameDiff : Convert.ToInt32(x.Level - y.Level);
 }
Esempio n. 10
0
 /// <summary>
 /// Compares by cost.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByCost(PlanEntry x, PlanEntry y)
 {
     long xCost = x.Level == 1 && !x.CharacterSkill.IsOwned ? x.Skill.Cost : 0;
     long yCost = y.Level == 1 && !x.CharacterSkill.IsOwned ? y.Skill.Cost : 0;
     return xCost.CompareTo(yCost);
 }
Esempio n. 11
0
        /// <summary>
        /// Adds the training time.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="shoppingListCandidate">if set to <c>true</c> [shopping list candidate].</param>
        /// <param name="entry">The entry.</param>
        /// <param name="builder">The builder.</param>
        private static void AddTrainingTime(PlanExportSettings settings, bool shoppingListCandidate, PlanEntry entry, StringBuilder builder)
        {
            if (!settings.EntryTrainingTimes && !settings.EntryStartDate && !settings.EntryFinishDate &&
                (!settings.EntryCost || !shoppingListCandidate))
                return;

            const DescriptiveTextOptions TimeFormat = DescriptiveTextOptions.FullText
                                                      | DescriptiveTextOptions.IncludeCommas
                                                      | DescriptiveTextOptions.SpaceText;

            builder.Append(" (");
            bool needComma = false;

            // Training time
            if (settings.EntryTrainingTimes)
            {
                needComma = true;
                builder.Append(entry.TrainingTime.ToDescriptiveText(TimeFormat));
            }

            // Training start date
            if (settings.EntryStartDate)
            {
                if (needComma)
                    builder.Append("; ");

                needComma = true;

                builder.Append($"Start: {entry.StartTime.ToUniversalTime().DateTimeToTimeString()} UTC");
            }

            // Training end date
            if (settings.EntryFinishDate)
            {
                if (needComma)
                    builder.Append("; ");

                needComma = true;

                builder.Append($"Finish: {entry.EndTime.ToUniversalTime().DateTimeToTimeString()} UTC");
            }

            // Skill cost
            if (settings.EntryCost && shoppingListCandidate)
            {
                if (needComma)
                    builder.Append("; ");

                builder.Append(FormattableString.Invariant($"Cost: {entry.Skill.Cost:N0} ISK"));
            }

            builder.Append(')');
        }
Esempio n. 12
0
        /// <summary>
        /// Creates a clone of this entry for the given plan.
        /// </summary>
        /// <param name="plan"></param>
        /// <returns></returns>
        internal PlanEntry Clone(BasePlan plan)
        {
            // We need a skill for the plan's character
            PlanEntry clone = new PlanEntry(plan, m_skill, m_level)
            {
                m_entryType = m_entryType,
                m_priority = m_priority,
                m_notes = m_notes,
                m_remapping = m_remapping?.Clone(),
                OldTrainingTime = OldTrainingTime,
                TrainingTime = TrainingTime
            };
            clone.m_planGroups.AddRange(m_planGroups);

            return clone;
        }
Esempio n. 13
0
 /// <summary>
 /// Adds an item.
 /// </summary>
 /// <param name="entry"></param>
 public void Add(PlanEntry entry)
 {
     AddCore(entry);
 }
Esempio n. 14
0
 /// <summary>
 /// Compares by notes.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByNotes(PlanEntry x, PlanEntry y)
     => String.Compare(x.Notes, y.Notes, StringComparison.CurrentCulture);
Esempio n. 15
0
 /// <summary>
 /// Compares by training time natural.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByTrainingTimeNatural(PlanEntry x, PlanEntry y)
     => x.NaturalTrainingTime.CompareTo(y.NaturalTrainingTime);
Esempio n. 16
0
 /// <summary>
 /// Compares by time difference.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByTimeDifference(PlanEntry x, PlanEntry y)
 {
     TimeSpan xDuration = x.TrainingTime - x.OldTrainingTime;
     TimeSpan yDuration = y.TrainingTime - y.OldTrainingTime;
     return xDuration.CompareTo(yDuration);
 }
Esempio n. 17
0
 /// <summary>
 /// Compares by SP per hour.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareBySPPerHour(PlanEntry x, PlanEntry y) => x.SpPerHour - y.SpPerHour;
Esempio n. 18
0
 /// <summary>
 /// Compares by rank.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByRank(PlanEntry x, PlanEntry y) => Convert.ToInt32(x.Skill.Rank - y.Skill.Rank);
Esempio n. 19
0
 /// <summary>
 /// Compares by primary attribute.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 public static int CompareByPrimaryAttribute(PlanEntry x, PlanEntry y)
     => (int)x.Skill.PrimaryAttribute - (int)y.Skill.PrimaryAttribute;
Esempio n. 20
0
 /// <summary>
 /// Compares by skill group duration.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <param name="entries">The entries.</param>
 /// <param name="skillGroupsDurations">The skill groups durations.</param>
 /// <returns></returns>
 public static int CompareBySkillGroupDuration(PlanEntry x, PlanEntry y, IEnumerable<PlanEntry> entries,
     Dictionary<StaticSkillGroup, TimeSpan> skillGroupsDurations)
 {
     TimeSpan xDuration = GetSkillGroupDuration(x.Skill.Group, entries, skillGroupsDurations);
     TimeSpan yDuration = GetSkillGroupDuration(y.Skill.Group, entries, skillGroupsDurations);
     return xDuration.CompareTo(yDuration);
 }
Esempio n. 21
0
        /// <summary>
        /// Prints a single entry
        /// </summary>
        /// <param name="g">The graphics canvas.</param>
        /// <param name="index">The index.</param>
        /// <param name="pe">The plan entry.</param>
        private void PrintEntry(Graphics g, int index, PlanEntry pe)
        {
            Size size;

            // Print entry index
            if (m_settings.EntryNumber)
            {
                size = Print(g, $"{index}: ");
                m_point.X += size.Width;
            }

            // Print skill name and level
            size = PrintBold(g, pe.ToString());
            m_point.X += size.Width;

            // Print Notes ?
            if (m_settings.EntryNotes)
            {
                // Jump to next line
                m_point.Y += size.Height;
                m_point.X = 20;

                // Note
                size = Print(g, pe.Notes);
                m_point.X += size.Width;
            }

            // Print additional infos below
            if (m_settings.EntryTrainingTimes || m_settings.EntryStartDate || m_settings.EntryFinishDate)
            {
                // Jump to next line
                m_point.Y += size.Height;
                m_point.X = 20;

                // Open parenthesis
                size = Print(g, " (");
                m_point.X += size.Width;

                // Training time ?
                bool needComma = false;
                if (m_settings.EntryTrainingTimes)
                {
                    size = Print(g, pe.TrainingTime.ToDescriptiveText(
                        DescriptiveTextOptions.FullText |
                        DescriptiveTextOptions.IncludeCommas |
                        DescriptiveTextOptions.SpaceText));
                    m_point.X += size.Width;
                    needComma = true;
                }

                // Start date ?
                if (m_settings.EntryStartDate)
                {
                    if (needComma)
                    {
                        size = Print(g, "; ");
                        m_point.X += size.Width;
                    }

                    size = Print(g, "Start: ");
                    m_point.X += size.Width;

                    size = Print(g, pe.StartTime.ToString());
                    m_point.X += size.Width;

                    needComma = true;
                }

                // End date ?
                if (m_settings.EntryFinishDate)
                {
                    if (needComma)
                    {
                        size = Print(g, "; ");
                        m_point.X += size.Width;
                    }
                    size = Print(g, "Finish: ");
                    m_point.X += size.Width;

                    size = Print(g, pe.EndTime.ToString());
                    m_point.X += size.Width;
                }

                // Close parenthesis
                size = Print(g, ")");
                m_point.X += size.Width;
            }

            // Jump to next line
            m_point.X = 5;
            m_point.Y += size.Height;
        }