/// <summary> /// Add a <see cref="LevelMappingEntry"/> to this mapping /// </summary> /// <param name="entry">the entry to add</param> /// <remarks> /// <para> /// If a <see cref="LevelMappingEntry"/> has previously been added /// for the same <see cref="Level"/> then that entry will be /// overwritten. /// </para> /// </remarks> public void Add(LevelMappingEntry entry) { if (m_entriesMap.ContainsKey(entry.Level)) { m_entriesMap.Remove(entry.Level); } m_entriesMap.Add(entry.Level, entry); }
/// <summary> /// Initialize options /// </summary> /// <remarks> /// <para> /// Caches the sorted list of <see cref="LevelMappingEntry"/> in an array /// </para> /// </remarks> public void ActivateOptions() { Level[] sortKeys = new Level[m_entriesMap.Count]; LevelMappingEntry[] sortValues = new LevelMappingEntry[m_entriesMap.Count]; m_entriesMap.Keys.CopyTo(sortKeys, 0); m_entriesMap.Values.CopyTo(sortValues, 0); // Sort in level order Array.Sort(sortKeys, sortValues, 0, sortKeys.Length, null); // Reverse list so that highest level is first Array.Reverse(sortValues, 0, sortValues.Length); foreach (LevelMappingEntry entry in sortValues) { entry.ActivateOptions(); } m_entries = sortValues; }