public Review() { // Initialize coverage for Celestial Bodies (other than the Sun) CelestialBody[] Bodies = FlightGlobals.Bodies.ToArray(); Coverages = new CoverageReport [Bodies.Length - 1]; int k = 0; for (int i = 0; i < Bodies.Length; i++) { CelestialBody Body = Bodies [i]; // Don't need to survey the sun if (Body.GetName() != "Sun") { CoverageReport Report = new CoverageReport(); Report.entity = Body.GetName(); // Benchmark: Kerbin // 10 sats till full coverage on Kerbin Report.satCountForFullCoverage = (int)Math.Ceiling(Body.Radius / 60000); Coverages [k] = Report; k++; } } }
private void UpdateCoverage() { for (int i = 0; i < Coverages.Length; i++) { Coverages [i].satCount = 0; } Vessel[] Satellites = VesselHelper.GetSatellites(); for (int i = 0; i < Satellites.Length; i++) { Vessel Satellite = Satellites [i]; CelestialBody Body = Satellite.GetOrbit().referenceBody; CoverageReport Report = GetReport(Body.GetName()); Report.satCount++; Report.Update(); } float totalCoverage = 0; for (int i = 0; i < Coverages.Length; i++) { totalCoverage += Coverages [i].coverage; } satelliteCoverage = (float)totalCoverage / (float)Coverages.Length; }
public Review() { // Initialize coverage for Celestial Bodies (other than the Sun) CelestialBody[] Bodies = FlightGlobals.Bodies.ToArray (); Coverages = new CoverageReport [Bodies.Length-1]; CelestialBody home = Planetarium.fetch.Home; if (home == null) home = FlightGlobals.Bodies.Find(body => body.isHomeWorld == true); if (home != null) refRadius = home.Radius / 10; int k = 0; for (int i = 0; i < Bodies.Length; i++) { CelestialBody Body = Bodies [i]; // Don't need to survey the sun if (Body.GetName () != "Sun") { CoverageReport Report = new CoverageReport (); Report.entity = Body.GetName (); // Benchmark: Kerbin // 10 sats till full coverage on Kerbin Report.satCountForFullCoverage = (int)Math.Ceiling (Body.Radius / refRadius); Coverages [k] = Report; k++; } } }
public Review() { // Initialize coverage for Celestial Bodies (other than the Sun) CelestialBody[] Bodies = FlightGlobals.Bodies.ToArray (); Coverages = new CoverageReport [Bodies.Length-1]; int k = 0; for (int i = 0; i < Bodies.Length; i++) { CelestialBody Body = Bodies [i]; // Don't need to survey the sun if (Body.GetName () != "Sun") { CoverageReport Report = new CoverageReport (); Report.entity = Body.GetName (); // Benchmark: Kerbin // 10 sats till full coverage on Kerbin Report.satCountForFullCoverage = (int)Math.Ceiling (Body.Radius / 60000); Coverages [k] = Report; k++; } } }
public CoverageReport GetReport(string bodyName) { for (var i = 0; i < Coverages.Length; i++) { CoverageReport Report = Coverages [i]; if (Report.entity == bodyName) { return(Report); } } CoverageReport CReport = new CoverageReport(); CReport.entity = bodyName; return(CReport); }
public static void draw(View Vw, ViewWindow Window) { Window.title = "Satellite Coverage"; Instance GameInstance = StateFundingGlobal.fetch.GameInstance; Review Rev = GameInstance.ActiveReview; Rev.touch(); string Description = "Below is your space programs satellite coverage. Satellite coverage increases State Confidence. " + "The number of satellites needed to provide full coverage veries depending on the size of the " + "celestial body. Kerbin needs 10 satelites to be fully covered while a small moon like Pol only " + "needs 1 and the massive Jool needs 100. Your total coverage is calculated on the coverage provided " + "to all celestial bodies. So even though Jool needs so many you can still get a high coverage " + "rating by covering the smaller bodies. So start with Kerbin, moons, and the near planets. To have " + "a qualified \"Surveyor Satellite\" it must have an antenna, an autonomous control system, and be " + "able to generate power."; ViewLabel DescriptionLabel = new ViewLabel(Description); DescriptionLabel.setRelativeTo(Window); DescriptionLabel.setLeft(140); DescriptionLabel.setTop(20); DescriptionLabel.setColor(Color.white); DescriptionLabel.setHeight(100); DescriptionLabel.setWidth(Window.getWidth() - 140); Vw.addComponent(DescriptionLabel); ViewLabel TotalCoverage = new ViewLabel("Total Coverage: " + Math.Round((double)Rev.satelliteCoverage * 100) + "%"); TotalCoverage.setRelativeTo(Window); TotalCoverage.setLeft(140); TotalCoverage.setTop(130); TotalCoverage.setColor(Color.white); TotalCoverage.setHeight(30); TotalCoverage.setWidth(Window.getWidth() - 140); Vw.addComponent(TotalCoverage); ViewScroll CoverageScroll = new ViewScroll(); CoverageScroll.setRelativeTo(Window); CoverageScroll.setWidth(Window.getWidth() - 140); CoverageScroll.setHeight(Window.getHeight() - 160); CoverageScroll.setLeft(140); CoverageScroll.setTop(150); Vw.addComponent(CoverageScroll); CoverageReport[] Coverages = Rev.Coverages; int labelHeight = 20; for (int i = 0; i < Coverages.Length; i++) { CoverageReport Coverage = Coverages [i]; string label = Coverage.entity + " : (" + Coverage.satCount + "/" + Coverage.satCountForFullCoverage + ") " + Math.Round(Coverage.coverage * 100) + "%"; ViewLabel CoverageLabel = new ViewLabel(label); CoverageLabel.setRelativeTo(CoverageScroll); CoverageLabel.setTop(labelHeight + (labelHeight + 5) * i); CoverageLabel.setLeft(0); CoverageLabel.setHeight(labelHeight); CoverageLabel.setWidth(CoverageScroll.getWidth() - 20); if (Coverage.coverage <= 0.25) { CoverageLabel.setColor(Color.white); } else if (Coverage.coverage <= .75) { CoverageLabel.setColor(Color.yellow); } else { CoverageLabel.setColor(Color.green); } CoverageScroll.Components.Add(CoverageLabel); } }
public CoverageReport GetReport(string bodyName) { for (var i = 0; i < Coverages.Length; i++) { CoverageReport Report = Coverages [i]; if (Report.entity == bodyName) { return Report; } } CoverageReport CReport = new CoverageReport(); CReport.entity = bodyName; return CReport; }