コード例 #1
0
        public virtual bool Equals(XModels.XScanClass scandata, bool ignoremats = false)
        {
            var scan     = scandata.Scan;
            var rings    = this.Rings?.OrderBy(r => r.RingNum).ToArray();
            var basehash = scandata.ScanBase.GetHashCode();

            return(this.ScanBaseHash == basehash &&
                   (scandata.DbBody == null || this.SystemBodyId == scandata.DbBody.Id) &&
                   this.Eccentricity == scan.Eccentricity &&
                   this.OrbitalInclination == scan.OrbitalInclination &&
                   this.Periapsis == scan.Periapsis &&
                   this.Radius == scan.Radius &&
                   this.HasOrbit == scan.HasOrbit &&
                   this.SemiMajorAxis == scan.SemiMajorAxis &&
                   this.OrbitalPeriod == scan.OrbitalPeriod &&
                   this.RotationPeriod == scan.RotationPeriod &&
                   this.SurfaceTemperature == scan.SurfaceTemperature &&
                   (this.ParentSetId == null || scandata.DbParents == null || this.ParentSetId == scandata.DbParents.Id) &&
                   (!scan.HasAxialTilt || this.AxialTilt == null || this.AxialTilt == scan.AxialTilt) &&
                   (!scan.HasTidalLock || this.TidalLock == null || this.TidalLock == scan.TidalLock) &&
                   (this is BodyScanPlanet == scan.IsPlanet) &&
                   (this is BodyScanStar == scan.IsStar) &&
                   (!scan.HasRings || rings == null || rings.Length == 0 || (
                        ((rings.Length >= 1 && rings[0].Equals(scandata.RingA) && rings[0].Name == scandata.RingAName) || (rings.Length < 1 && scandata.RingA.ClassId == 0)) &&
                        ((rings.Length >= 2 && rings[1].Equals(scandata.RingB) && rings[1].Name == scandata.RingBName) || (rings.Length < 2 && scandata.RingB.ClassId == 0)) &&
                        ((rings.Length >= 3 && rings[2].Equals(scandata.RingC) && rings[2].Name == scandata.RingCName) || (rings.Length < 3 && scandata.RingC.ClassId == 0)) &&
                        ((rings.Length >= 4 && rings[3].Equals(scandata.RingD) && rings[3].Name == scandata.RingDName) || (rings.Length < 4 && scandata.RingD.ClassId == 0))
                        )));
        }
コード例 #2
0
        public static SystemBody From(XModels.XScanClass scan, string customname, System sys)
        {
            var body = scan.Body;

            return(new SystemBody
            {
                Id = body.DbId,
                SystemId = sys.Id,
                BodyID = body.BodyID,
                Stars = body.Stars,
                IsBelt = body.IsBelt,
                Planet = body.Planet,
                Moon1 = body.Moon1,
                Moon2 = body.Moon2,
                Moon3 = body.Moon3,
                SystemRef = sys,
                ScanBaseHash = scan.Scan.GetHashCode(),
                CustomNameId = BodyDatabase.BodyCustomName.GetId(customname) ?? 0,
                CustomName = customname == null ? null : new SystemBodyCustomName
                {
                    Id = body.DbId,
                    SystemId = sys.Id,
                    BodyID = body.BodyID,
                    CustomName = customname
                }
            });
        }
コード例 #3
0
        public BodyScanStar(XModels.XScanClass scan, SystemBody sysbody, int sysbodyid, int id = 0) : base(scan, sysbody, sysbodyid, id)
        {
            XScanStar sscan = scan.Star;

            AbsoluteMagnitude = sscan.AbsoluteMagnitude;
            StellarMass       = sscan.StellarMass;
            Age_MY            = sscan.Age_MY;
            StarTypeId        = sscan.StarTypeId;
            LuminosityId      = sscan.LuminosityId == 0 ? (byte?)null : sscan.LuminosityId;
        }
コード例 #4
0
        public override bool Equals(XModels.XScanClass scan, float epsilon)
        {
            XModels.XScanStar sscan = scan.Star;

            return(base.Equals(scan) &&
                   this.AbsoluteMagnitude == sscan.AbsoluteMagnitude &&
                   this.StellarMass == sscan.StellarMass &&
                   this.Age_MY == sscan.Age_MY &&
                   this.StarTypeId == sscan.StarTypeId &&
                   (sscan.LuminosityId == 0 || this.LuminosityId == null || this.LuminosityId == sscan.LuminosityId));
        }
コード例 #5
0
        public static List <BodyScanRing> GetRings(XModels.XScanClass scan)
        {
            List <BodyScanRing> rings = new[]
            {
                new BodyScanRing(scan.RingA, 1, name: scan.RingAName),
                new BodyScanRing(scan.RingB, 2, name: scan.RingBName),
                new BodyScanRing(scan.RingC, 3, name: scan.RingCName),
                new BodyScanRing(scan.RingD, 4, name: scan.RingDName),
            }.TakeWhile(r => r.ClassId != 0)
            .ToList();

            return(rings);
        }
コード例 #6
0
 public override bool Equals(XModels.XScanClass scan, bool ignoremats = false)
 {
     XModels.XScanPlanet pscan = scan.Planet;
     return(base.Equals(scan) &&
            this.PlanetClassId == pscan.PlanetClassId &&
            this.MassEM == pscan.MassEM &&
            this.SurfaceGravity == pscan.SurfaceGravity &&
            (!this.HasComposition || !pscan.HasComposition || (
                 this.CompositionMetal == pscan.CompositionMetal &&
                 this.CompositionRock == pscan.CompositionRock &&
                 this.CompositionIce == pscan.CompositionIce
                 )) &&
            (this.VolcanismId == null || pscan.VolcanismId == 0 || (
                 this.VolcanismId == pscan.VolcanismId &&
                 this.VolcanismMajor == pscan.VolcanismMajor &&
                 this.VolcanismMinor == pscan.VolcanismMinor
                 )) &&
            (this.IsLandable == null || !pscan.HasLandable || this.IsLandable == pscan.IsLandable) &&
            (this.Atmosphere == null || !pscan.HasAtmosphere || this.Atmosphere.Equals(scan.Atmosphere)) &&
            (ignoremats || this.Materials == null || !pscan.HasMaterials || this.Materials.Equals(scan.Materials)));
 }
コード例 #7
0
        public void Update(XModels.XScanClass scandata, SystemBody dbbody, BodyScan dbscan)
        {
            if (dbbody.BodyID == -1 && scandata.Body.BodyID >= 0)
            {
                short bodyid = scandata.Body.BodyID;
                paramUpdateBodyId.Value     = dbbody.Id;
                paramUpdateBodyBodyID.Value = bodyid;
                cmdUpdateBody.ExecuteNonQuery();
                dbbody.BodyID = bodyid;
            }

            if ((dbscan.ParentSetId == null && scandata.Scan.ParentSetId != 0) ||
                (dbscan.AxialTilt == null && scandata.Scan.HasAxialTilt) ||
                (dbscan.ReserveLevelId == null && scandata.Scan.ReserveLevelId != 0) ||
                (dbscan.TidalLock == null && scandata.Scan.HasTidalLock))
            {
                paramUpdateScanId.Value           = dbscan.Id;
                paramUpdateScanAxialTilt.Value    = (object)dbscan.AxialTilt ?? (scandata.Scan.HasAxialTilt ? (object)scandata.Scan.AxialTilt : DBNull.Value);
                paramUpdateScanReserveLevel.Value = (object)dbscan.ReserveLevelId ?? (scandata.Scan.ReserveLevelId != 0 ? (object)scandata.Scan.ReserveLevelId : DBNull.Value);
                paramUpdateScanTidalLock.Value    = (object)dbscan.TidalLock ?? (scandata.Scan.HasTidalLock ? (object)scandata.Scan.TidalLock : DBNull.Value);
                paramUpdateScanParents.Value      = (object)dbscan.ParentSetId ?? (scandata.Scan.HasParents ? (object)scandata.Parents.DbId : DBNull.Value);
                cmdUpdateScan.ExecuteNonQuery();
                dbscan.AxialTilt      = dbscan.AxialTilt ?? (scandata.Scan.HasAxialTilt ? (float?)scandata.Scan.AxialTilt : null);
                dbscan.TidalLock      = dbscan.TidalLock ?? (scandata.Scan.HasTidalLock ? (bool?)scandata.Scan.TidalLock : null);
                dbscan.ReserveLevelId = dbscan.ReserveLevelId ?? (scandata.Scan.ReserveLevelId != 0 ? (byte?)scandata.Scan.ReserveLevelId : null);
                dbscan.ParentSetId    = dbscan.ParentSetId ?? (scandata.Scan.ParentSetId != 0 ? (byte?)scandata.Scan.ParentSetId : null);
            }

            if (dbscan is BodyScanPlanet pscan && scandata.Scan.IsPlanet)
            {
                if ((!pscan.HasComposition && scandata.Planet.HasComposition) ||
                    (pscan.VolcanismId == null && scandata.Planet.VolcanismId != 0) ||
                    (pscan.IsLandable == null && scandata.Planet.HasLandable) ||
                    (pscan.TerraformStateId == null && scandata.Planet.TerraformStateId != 0))
                {
                    pscan.CompositionMetal                = pscan.HasComposition ? pscan.CompositionMetal : scandata.Planet.CompositionMetal;
                    pscan.CompositionRock                 = pscan.HasComposition ? pscan.CompositionRock : scandata.Planet.CompositionRock;
                    pscan.CompositionIce                  = pscan.HasComposition ? pscan.CompositionIce : scandata.Planet.CompositionIce;
                    pscan.HasComposition                 |= scandata.Planet.HasComposition;
                    pscan.IsLandable                      = pscan.IsLandable ?? (scandata.Planet.HasLandable ? (bool?)scandata.Planet.IsLandable : null);
                    pscan.TerraformStateId                = pscan.TerraformStateId ?? (scandata.Planet.TerraformStateId != 0 ? (byte?)scandata.Planet.TerraformStateId : null);
                    pscan.VolcanismMajor                  = pscan.VolcanismId != null ? pscan.VolcanismMajor : scandata.Planet.VolcanismMajor;
                    pscan.VolcanismMinor                  = pscan.VolcanismId != null ? pscan.VolcanismMinor : scandata.Planet.VolcanismMinor;
                    pscan.VolcanismId                     = pscan.VolcanismId ?? (scandata.Planet.VolcanismId != 0 ? (byte?)scandata.Planet.VolcanismId : null);
                    paramUpdatePlanetScanId.Value         = pscan.Id;
                    paramUpdatePlanetComposIce.Value      = pscan.CompositionIce;
                    paramUpdatePlanetComposRock.Value     = pscan.CompositionRock;
                    paramUpdatePlanetComposMetal.Value    = pscan.CompositionMetal;
                    paramUpdatePlanetHasCompos.Value      = pscan.HasComposition;
                    paramUpdatePlanetLandable.Value       = (object)pscan.IsLandable ?? DBNull.Value;
                    paramUpdatePlanetTerraformState.Value = (object)pscan.TerraformStateId ?? DBNull.Value;
                    paramUpdatePlanetVolcanismId.Value    = (object)pscan.VolcanismId ?? DBNull.Value;
                    paramUpdatePlanetVolcanismMajor.Value = pscan.VolcanismMajor;
                    paramUpdatePlanetVolcanismMinor.Value = pscan.VolcanismMinor;
                    cmdUpdatePlanet.ExecuteNonQuery();
                }

                if (pscan.Atmosphere == null)
                {
                    if (scandata.Planet.HasAtmosphere)
                    {
                        pscan.Atmosphere = new BodyScanAtmosphere(scandata.Atmosphere, pscan.Id);

                        paramAtmosScanId.Value     = pscan.Atmosphere.Id;
                        paramSurfacePressure.Value = pscan.Atmosphere.SurfacePressure;
                        paramAtmosComp1Id.Value    = (object)pscan.Atmosphere.AtmosphereComponent1Id ?? DBNull.Value;
                        paramAtmosComp1Amt.Value   = pscan.Atmosphere.AtmosphereComponent1Amt;
                        paramAtmosComp2Id.Value    = (object)pscan.Atmosphere.AtmosphereComponent2Id ?? DBNull.Value;
                        paramAtmosComp2Amt.Value   = pscan.Atmosphere.AtmosphereComponent2Amt;
                        paramAtmosComp3Id.Value    = (object)pscan.Atmosphere.AtmosphereComponent3Id ?? DBNull.Value;
                        paramAtmosComp3Amt.Value   = pscan.Atmosphere.AtmosphereComponent3Amt;
                        paramAtmosNameId.Value     = pscan.Atmosphere.AtmosphereId;
                        paramAtmosTypeId.Value     = (object)pscan.Atmosphere.AtmosphereTypeId ?? DBNull.Value;
                        paramAtmosHot.Value        = pscan.Atmosphere.AtmosphereHot;
                        paramAtmosThin.Value       = pscan.Atmosphere.AtmosphereThin;
                        paramAtmosThick.Value      = pscan.Atmosphere.AtmosphereThick;
                        cmdInsertAtmos.ExecuteNonQuery();
                    }
                }
                else if ((pscan.Atmosphere.AtmosphereTypeId == null && scandata.Atmosphere.AtmosphereTypeId != 0) ||
                         (pscan.Atmosphere.AtmosphereComponent1Id == null && scandata.Atmosphere.Component1Id != 0))
                {
                    pscan.Atmosphere.AtmosphereTypeId = pscan.Atmosphere.AtmosphereTypeId ?? (scandata.Atmosphere.AtmosphereTypeId != 0 ? (byte?)scandata.Atmosphere.AtmosphereTypeId : null);
                    if (pscan.Atmosphere.AtmosphereComponent1Id == null && scandata.Atmosphere.Component1Id != 0)
                    {
                        pscan.Atmosphere.AtmosphereComponent1Id  = scandata.Atmosphere.Component1Id != 0 ? (byte?)scandata.Atmosphere.Component1Id : null;
                        pscan.Atmosphere.AtmosphereComponent1Amt = scandata.Atmosphere.Component1Amt;
                        pscan.Atmosphere.AtmosphereComponent2Id  = scandata.Atmosphere.Component2Id != 0 ? (byte?)scandata.Atmosphere.Component2Id : null;
                        pscan.Atmosphere.AtmosphereComponent2Amt = scandata.Atmosphere.Component2Amt;
                        pscan.Atmosphere.AtmosphereComponent3Id  = scandata.Atmosphere.Component3Id != 0 ? (byte?)scandata.Atmosphere.Component3Id : null;
                        pscan.Atmosphere.AtmosphereComponent3Amt = scandata.Atmosphere.Component3Amt;
                    }

                    paramAtmosUpdateScanId.Value   = pscan.Atmosphere.Id;
                    paramAtmosUpdateTypeId.Value   = (object)pscan.Atmosphere.AtmosphereTypeId ?? DBNull.Value;
                    paramAtmosUpdateComp1Id.Value  = (object)pscan.Atmosphere.AtmosphereComponent1Id ?? DBNull.Value;
                    paramAtmosUpdateComp1Amt.Value = pscan.Atmosphere.AtmosphereComponent1Amt;
                    paramAtmosUpdateComp2Id.Value  = (object)pscan.Atmosphere.AtmosphereComponent2Id ?? DBNull.Value;
                    paramAtmosUpdateComp2Amt.Value = pscan.Atmosphere.AtmosphereComponent2Amt;
                    paramAtmosUpdateComp3Id.Value  = (object)pscan.Atmosphere.AtmosphereComponent3Id ?? DBNull.Value;
                    paramAtmosUpdateComp3Amt.Value = pscan.Atmosphere.AtmosphereComponent3Amt;
                    cmdUpdateAtmos.ExecuteNonQuery();
                }

                if (pscan.Materials == null && scandata.Planet.HasMaterials)
                {
                    pscan.Materials           = new BodyScanMaterials(scandata.Materials, pscan.Id);
                    paramMatsId.Value         = pscan.Materials.Id;
                    paramMatsCarbon.Value     = pscan.Materials.MaterialCarbon;
                    paramMatsIron.Value       = pscan.Materials.MaterialIron;
                    paramMatsNickel.Value     = pscan.Materials.MaterialNickel;
                    paramMatsPhosphorus.Value = pscan.Materials.MaterialPhosphorus;
                    paramMatsSulphur.Value    = pscan.Materials.MaterialSulphur;
                    paramMat1Id.Value         = pscan.Materials.Material1Id;
                    paramMat1Amt.Value        = pscan.Materials.Material1Amt;
                    paramMat2Id.Value         = pscan.Materials.Material2Id;
                    paramMat2Amt.Value        = pscan.Materials.Material2Amt;
                    paramMat3Id.Value         = pscan.Materials.Material3Id;
                    paramMat3Amt.Value        = pscan.Materials.Material3Amt;
                    paramMat4Id.Value         = pscan.Materials.Material4Id;
                    paramMat4Amt.Value        = pscan.Materials.Material4Amt;
                    paramMat5Id.Value         = pscan.Materials.Material5Id;
                    paramMat5Amt.Value        = pscan.Materials.Material5Amt;
                    paramMat6Id.Value         = pscan.Materials.Material6Id;
                    paramMat6Amt.Value        = pscan.Materials.Material6Amt;
                    cmdInsertMats.ExecuteNonQuery();
                }
            }