/// <summary> /// Load an icon file into the list of all ship icons. /// </summary> /// <param name="fi">The file to load.</param> private static void LoadIcon(FileInfo fi) { Bitmap i = new Bitmap(Path.Combine(fi.DirectoryName, fi.Name)); ShipIcon icon = new ShipIcon(fi.Name, i); Data.IconList.Add(icon); // fi.Name format is <baseHull><iconNumber>.png where the length of <Number> in characters is defined by Global.ShipIconNumberingLength. int extensionSeperatorIndex = fi.Name.IndexOf('.'); // position of the '.' in the file name // get the base hull of this icon string baseHull = fi.Name.Substring(0, extensionSeperatorIndex - Global.ShipIconNumberingLength); // Report.Information(baseHull); // get the hull number of this icon int iconNumber = int.Parse(fi.Name.Substring(extensionSeperatorIndex - Global.ShipIconNumberingLength, Global.ShipIconNumberingLength), System.Globalization.CultureInfo.InvariantCulture); // add to the list of hulls if (Data.Hulls.ContainsKey(baseHull)) { Data.Hulls[baseHull].Add(iconNumber, icon); } else { Dictionary <int, ShipIcon> iconList = new Dictionary <int, ShipIcon>(); iconList.Add(iconNumber, icon); Data.Hulls.Add(baseHull, iconList); } }
/// <summary> /// Find an icon in the list of all ship icons from the file name. /// </summary> /// <param name="iconSource">The path and file name of the icon.</param> /// <returns>A <see cref="ShipIcon"/> that matches the iconSource or a default icon.</returns> public ShipIcon GetIconBySource(string iconSource) { // fi.Name format is <baseHull><iconNumber>.png where the length of <Number> in characters is defined by Global.ShipIconNumberingLength. ShipIcon icon = null; string[] fileParts = iconSource.Split(System.IO.Path.DirectorySeparatorChar); string iconFileName = fileParts[fileParts.Length - 1]; int extensionSeperatorIndex = iconFileName.IndexOf('.'); string baseHull = iconFileName.Substring(0, extensionSeperatorIndex - Global.ShipIconNumberingLength); int iconIndex = int.Parse(iconFileName.Substring(extensionSeperatorIndex - Global.ShipIconNumberingLength, Global.ShipIconNumberingLength), System.Globalization.CultureInfo.InvariantCulture); if (AllShipIcons.Data.Hulls.ContainsKey(baseHull)) { icon = Data.Hulls[baseHull][iconIndex]; } else { icon = Data.IconList[0]; } return(icon); }
/// <summary> /// Return a clone of this object. /// </summary> public object Clone() { ShipIcon clone = new ShipIcon(Source, Image); return(clone as object); }