コード例 #1
0
        /// <summary>
        /// Exports the certificates classes.
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns></returns>
        private static IEnumerable <SerializableCertificateClass> ExportCertificateClasses(IHasID group)
        {
            List <SerializableCertificateClass> listOfCertClasses = new List <SerializableCertificateClass>();

            // Exclude unused classes
            foreach (CrtClasses certClass in Database.CrtClassesTable)
            {
                Util.UpdatePercentDone(Database.CertificatesTotalCount);

                SerializableCertificateClass crtClass = new SerializableCertificateClass
                {
                    ID          = certClass.ID,
                    Name        = certClass.ClassName,
                    Description = certClass.Description
                };

                // Export certificate
                SerializableCertificate certificate = Database.CrtCertificatesTable
                                                      .Where(x => x.ClassID == certClass.ID && x.GroupID == group.ID).Select(ExportCertificate).FirstOrDefault();

                if (certificate == null)
                {
                    continue;
                }

                // Add certificate to class
                crtClass.Certificate = certificate;

                // Add certificate class to classes
                listOfCertClasses.Add(crtClass);
            }
            return(listOfCertClasses);
        }
コード例 #2
0
        /// <summary>
        /// Constructor from XML
        /// </summary>
        /// <param name="certClass"></param>
        /// <param name="element"></param>
        internal StaticCertificate(StaticCertificateClass certClass, SerializableCertificate src)
        {
            m_class = certClass;

            m_id          = src.ID;
            m_grade       = src.Grade;
            m_description = src.Description;

            // Recommendations
            if (src.Recommendations != null)
            {
                foreach (var recommendation in src.Recommendations)
                {
                    var ship = StaticItems.Ships.AllItems.FirstOrDefault(x => x.Name == recommendation.Ship) as Ship;
                    if (ship != null)
                    {
                        ship.Recommendations.Add(this);
                        m_recommendations.Add(ship);
                    }
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Constructor from XML.
        /// </summary>
        /// <param name="certClass"></param>
        /// <param name="src"></param>
        internal StaticCertificate(StaticCertificateClass certClass, SerializableCertificate src)
        {
            ID          = src.ID;
            Description = src.Description;
            Class       = certClass;
            Grades      = new Dictionary <CertificateGrade, List <StaticSkillLevel> >();

            // Recommendations
            Recommendations = new StaticRecommendations <Item>();
            if (src.Recommendations == null || StaticItems.ShipsMarketGroup == null)
            {
                return;
            }

            foreach (Ship ship in src.Recommendations
                     .Select(recommendation => StaticItems.ShipsMarketGroup.AllItems.OfType <Ship>()
                             .FirstOrDefault(item => item.Name == recommendation.ShipName))
                     .Where(ship => ship != null))
            {
                ship.Recommendations.Add(this);
                Recommendations.Add(ship);
            }
        }
コード例 #4
0
        /// <summary>
        /// Exports the certificate.
        /// </summary>
        /// <param name="certificate">The certificate.</param>
        private static SerializableCertificate ExportCertificate(CrtCertificates certificate)
        {
            SerializableCertificate crtCertificate = new SerializableCertificate
            {
                ID          = certificate.ID,
                Description = certificate.Description
            };

            // Export prerequesities
            IEnumerable <SerializableCertificatePrerequisite> listOfPrereq = Database.CrtRelationshipsTable
                                                                             .Where(x => x.ChildID == certificate.ID && x.ParentLevel != 0)
                                                                             .Select(relationship => new SerializableCertificatePrerequisite
            {
                ID    = Database.InvTypesTable[relationship.ParentTypeID].ID,
                Skill = Database.InvTypesTable[relationship.ParentTypeID].Name,
                Level = relationship.ParentLevel.ToString(CultureInfo.InvariantCulture),
                Grade = (CertificateGrade)Enum.ToObject(typeof(CertificateGrade), relationship.Grade),
            });

            //Add prerequisites to certificate
            crtCertificate.Prerequisites.AddRange(listOfPrereq.OrderBy(x => x.Grade));

            // Add recommendations to certificate
            IEnumerable <SerializableCertificateRecommendation> listOfRecommendations = Database.CrtRecommendationsTable.Where(
                x => x.CertificateID == certificate.ID)
                                                                                        .Select(recommendation => new SerializableCertificateRecommendation
            {
                ID       = recommendation.ShipTypeID,
                ShipName = Database.InvTypesTable[recommendation.ShipTypeID].Name,
            });

            crtCertificate.Recommendations.AddRange(listOfRecommendations);

            // Add certificate
            return(crtCertificate);
        }