/// <summary> /// Starts the planetary generator /// </summary> /// <param name="sender">The sender object</param> /// <param name="e">The event arguments</param> private void btnGenPlanets_Click(object sender, EventArgs e) { CreatePlanetsFinished = false; //clear the tables. if (OurSystem.CountPlanets() > 0) { OurSystem.ClearPlanets(); PlanetTable.Clear(); } var pCs = new CreatePlanets(OurSystem, VelvetBag, this); //register a closed event here. pCs.Closing += createPlanets_Closed; pCs.ShowDialog(); }
/// <summary> /// The object called when the create planets form is closed. Checks to see if we should update the listing /// </summary> /// <param name="sender">The sender object</param> /// <param name="e">The event arguments</param> private void createPlanets_Closed(object sender, EventArgs e) { if (CreatePlanetsFinished) { LblNumberPlanets.Content = OurSystem.CountPlanets().ToString(); foreach (var s in OurSystem.SysStars) { foreach (var pl in s.SysPlanets) { if (pl.BaseType == Satellite.BasetypeEmpty) { continue; } var ourValues = new object[10]; ourValues[0] = pl.Name; if (OptionCont.ExpandAsteroidBelt != null && (pl.BaseType != Satellite.BasetypeAsteroidbelt || (bool)OptionCont.ExpandAsteroidBelt)) { ourValues[1] = pl.DescSizeType(); } if (pl.BaseType == Satellite.BasetypeAsteroidbelt) { ourValues[1] = "Asteroid Belt"; } ourValues[2] = Math.Round(pl.DiameterInKm(), 2); ourValues[3] = Math.Round(pl.OrbitalRadius, 2); ourValues[4] = Math.Round(pl.Gravity * Satellite.Gforce, 2); if (pl.BaseType == Satellite.BasetypeAsteroidbelt) { ourValues[5] = "None."; } if (pl.BaseType == Satellite.BasetypeGasgiant) { ourValues[5] = "Superdense Atmosphere."; } if (pl.BaseType == Satellite.BasetypeMoon || pl.BaseType == Satellite.BasetypeTerrestial) { ourValues[5] = pl.GetDescAtmCategory() + "(" + Math.Round(pl.AtmPres, 2) + ")"; } ourValues[6] = pl.DescAtm(); ourValues[7] = pl.HydCoverage * 100 + "%"; if (pl.BaseType == Satellite.BasetypeMoon || pl.BaseType == Satellite.BasetypeTerrestial) { ourValues[8] = pl.GetClimateDesc(pl.GetClimate(pl.SurfaceTemp)) + "( " + Math.Round(pl.SurfaceTemp, 2) + "K/ " + Math.Round(LibStarGen.ConvertTemp("kelvin", "celsius", pl.SurfaceTemp), 2) + "C)"; } else { ourValues[8] = "Blackbody Temperature: " + Math.Round(pl.BlackbodyTemp, 2) + "K"; } ourValues[9] = pl.GetRvmDesc(); PlanetTable.Rows.Add(ourValues); } } } }