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)) ))); }
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 } }); }
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; }
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)); }
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); }
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))); }
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(); } }