Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Return a clone of this object.
        /// </summary>
        public object Clone()
        {
            ShipIcon clone = new ShipIcon(Source, Image);

            return(clone as object);
        }