/// <summary> /// Copy Constructor /// </summary> /// <param name="s">Object being copied</param> public StellarSystem(StellarSystem s) { //copy basic details this.location = new PlotPoint(s.location); this.name = name; this.catName = catName; //copy lists s.ourPlanets.ForEach((item) => { this.ourPlanets.Add(new Planet(item)); }); //copy lists s.stellarMembers.ForEach((item) => { this.stellarMembers.Add(new AstronomicalObject(item)); }); this.systemHistory = new StellarHistoryLogger(s.systemHistory); }
/// <summary> /// This function updates the listing when passed a stellar system that has changed /// </summary> /// <param name="s"></param> public void refreshInfo(StellarSystem s) { foreach (SystemView sv in ourSystems) { if (sv.catalog == s.catName) { sv.name = s.name; sv.sectorCoords = s.location.ToString(); //.sumString(); sv.stellarDetails = "[Pending]"; // s.getDescStars(); sv.numOfPlanets = s.getNumPlanets(); sv.hasHabitablePlanets = s.isHabitable(); } } }
/// <summary> /// This function updates the system with the new details. /// </summary> /// <param name="catName">Category name of the system</param> /// <param name="s">The new stellar details</param> public void updateStellarSystem(string catName, StellarSystem s) { for (int i = 0; i < this.ourSystem.Count; i++) { if (this.ourSystem[i].catName == catName) this.ourSystem[i] = new StellarSystem(s); } }
/// <summary> /// This populates the screen with the details from the system /// </summary> /// <param name="s">The stellar system</param> /// <param name="prSettings">The program settings</param> /// <param name="update">The function we call to update info</param> public void popDetails(StellarSystem s, AetherumSettings prSettings, AetherExp.updateInfoDisplay update) { /* this.updater = update; this.system = s; //propagate the info txtStellar.Text = system.name; txtCatalog.Text = system.catName; double lyR = prSettings.getLightYearResolution(); txtLocation.Text = String.Format("{0:f1}, {1:f1}, {2:f1})", (system.location.getCoordX() / lyR), (system.location.getCoordY() / lyR), (system.location.getCoordZ() / lyR)); //txtLocation.Text = system.location.descString(prSettings.getLightYearResolution()); if (s.ourStars.Count > 1) { lblDist.Text = "Distance of stars from primary: "; double[] distances = s.getDistArray(); for (int i = 1; i < distances.Length; i++) { lblDist.Text = lblDist.Text + "(" + (i + 1) + ") " + distances[i] + " AU "; } } else lblDist.Visible = false; //Hide controls we don't need to see. if (s.ourStars.Count < 4) pnlObjectD.Visible = false; if (s.ourStars.Count < 3) { pnlObjectC.Visible = false; lblObj3Age.Visible = false; lblObj3Bright.Visible = false; lblObj3Mass.Visible = false; lblObj3Name.Visible = false; lblObj3Type.Visible = false; lblObj3FlareStar.Visible = false; } if (s.ourStars.Count < 2) { pnlObjectB.Visible = false; lblObj2Age.Visible = false; lblObj2Bright.Visible = false; lblObj2Mass.Visible = false; lblObj2Name.Visible = false; lblObj2Type.Visible = false; lblObj2FlareStar.Visible = false; } //go through the solar objects. for (int i = 0; i < s.ourStars.Count; i++) { StellarObject ourStar = s.ourStars[i].getStellarObject(); PictureBox picObj = null; //set image if (i == 0) picObj = picObjA; else if (i == 1) picObj = picObjB; else if (i == 2) picObj = picObjC; else picObj = picObjD; if (ourStar.stellarType == SOOpCode.Anomaly) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.anamoly; else if (ourStar.stellarType == SOOpCode.NebulaPlanetaryDense) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.planetaryNebula; else if (ourStar.stellarType == SOOpCode.StarG0V || ourStar.stellarType == SOOpCode.StarG5V) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.typeGstar; else if (ourStar.stellarType == SOOpCode.StarA5V || ourStar.stellarType == SOOpCode.StarA0V) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.typeAstar; else if (ourStar.stellarType == SOOpCode.StarK5V || ourStar.stellarType == SOOpCode.StarK0V) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.typeKstar; else if (ourStar.stellarType == SOOpCode.StarM5V || ourStar.stellarType == SOOpCode.StarM0V) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.typeMstar; else if (ourStar.stellarType == SOOpCode.StarF5V || ourStar.stellarType == SOOpCode.StarF0V) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.typeFstar; else if (ourStar.stellarType == SOOpCode.ProtoStar) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.protostar; else if (ourStar.stellarType == SOOpCode.Pulsar) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.neutronStar; else if (ourStar.stellarType == SOOpCode.BlackHole) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.blackhole; else if (ourStar.stellarType == SOOpCode.NebulaPlanetaryDense) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.planetaryNebula; else if (ourStar.stellarType == SOOpCode.NebulaInterstellar) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.intestellarNebula; else if (ourStar.stellarType == SOOpCode.StarRedGiant) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.redgiant; else if (ourStar.stellarType == SOOpCode.WhiteDwarf) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.whiteDwarf; else if (ourStar.stellarType == SOOpCode.TypeOGiant || ourStar.stellarType == SOOpCode.TypeBGiant || ourStar.stellarType == SOOpCode.TypeAGiant) picObj.Image = TwilightShards.AetherumExplorer.Properties.Resources.Blue_Giant; //image set. Now let's display info. For now, we're just going to be displaying info. if (i == 0) { lblObj1Age.Text = "Age: " + AetherumExplorer.formatAge(ourStar.age); lblObj1Bright.Text = "Brightness: " + ourStar.brightness + " solar brightness"; lblObj1Mass.Text = "Mass: " + ourStar.stellarMass + " solar masses"; lblObj1Name.Text = "Object Name: " + ourStar.stellarName; lblObj1Type.Text = "Object Type: " + ourStar.stellarType; if (ourStar.isFlareStar) lblObjAFlareStar.Text = "Flare Star: Yes"; else lblObjAFlareStar.Visible = false; } if (i == 1) { lblObj2Age.Text = "Age: " + AetherumExplorer.formatAge(ourStar.age); lblObj2Bright.Text = "Brightness: " + ourStar.brightness + " solar brightness"; lblObj2Mass.Text = "Mass: " + ourStar.stellarMass + " solar masses"; lblObj2Name.Text = "Object Name: " + ourStar.stellarName; lblObj2Type.Text = "Object Type: " + ourStar.stellarType; if (ourStar.isFlareStar) lblObj2FlareStar.Text = "Flare Star: Yes"; else lblObj2FlareStar.Visible = false; } if (i == 2) { lblObj3Age.Text = "Age: " + AetherumExplorer.formatAge(ourStar.age); lblObj3Bright.Text = "Brightness: " + ourStar.brightness + " solar brightness"; lblObj3Mass.Text = "Mass: " + ourStar.stellarMass + " solar masses"; lblObj3Name.Text = "Object Name: " + ourStar.stellarName; lblObj3Type.Text = "Object Type: " + ourStar.stellarType; if (ourStar.isFlareStar) lblObj3FlareStar.Text = "Flare Star: Yes"; else lblObj3FlareStar.Visible = false; } if (i == 3) { lblObj4Age.Text = "Age: " + AetherumExplorer.formatAge(ourStar.age); lblObj4Bright.Text = "Brightness: " + ourStar.brightness + " solar brightness"; lblObj4Mass.Text = "Mass: " + ourStar.stellarMass + " solar masses"; lblObj4Name.Text = "Object Name: " + ourStar.stellarName; lblObj4Type.Text = "Object Type: " + ourStar.stellarType; if (ourStar.isFlareStar) lblObj4FlareStar.Text = "Flare Star: Yes"; else lblObj4FlareStar.Visible = false; } } populatePlanetaryInfo(system); this.ShowDialog(); } private void populatePlanetaryInfo(StellarSystem s) { foreach (Planet p in s.ourPlanets) { string parName = p.parentPtr.stellarName + " (" + starLayout.renderOrder(s.returnStarOrder(p.parentPtr)) + ")"; planetInfo.Add(new PlanetView(p.parentPtr.stellarName, p.planetName, p.orbitalRadius, p.locCode)); } dgvPlanetaryInfo.AutoGenerateColumns = false; // do not auto generate. //specify columns var parNameColumn = new DataGridViewTextBoxColumn(); var plaNameColumn = new DataGridViewTextBoxColumn(); var orbRadiColumn = new DataGridViewTextBoxColumn(); var locCodeColumn = new DataGridViewTextBoxColumn(); parNameColumn.HeaderText = "Parent Star"; plaNameColumn.HeaderText = "Planet Name"; orbRadiColumn.HeaderText = "Orbital Radius"; locCodeColumn.HeaderText = "Orbital Zone"; parNameColumn.DataPropertyName = "stellarName"; plaNameColumn.DataPropertyName = "planetName"; orbRadiColumn.DataPropertyName = "orbitalDistance"; locCodeColumn.DataPropertyName = "planetZone"; parNameColumn.Width = 250; parNameColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; plaNameColumn.Width = 250; plaNameColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; dgvPlanetaryInfo.Columns.Add(parNameColumn); dgvPlanetaryInfo.Columns.Add(plaNameColumn); dgvPlanetaryInfo.Columns.Add(orbRadiColumn); dgvPlanetaryInfo.Columns.Add(locCodeColumn); dgvPlanetaryInfo.DataSource = planetInfo; */ }