public void RefreshScreen() { Flight flight = currFlight; World.Sys destSys = flight.destLocation.sys; string systemString = destSys.name; systemText.SetText(systemString); if (destSys.cellCoords == World.GetLocation().sys.cellCoords) { infoSubScreen.SetActive(false); currVisSubScreen.SetActive(true); } else { infoSubScreen.SetActive(true); currVisSubScreen.SetActive(false); string distString = flight.details.distanceSU + " system units."; distText.SetText(distString); string timeString = flight.details.time + " total."; timeText.SetText(timeString); string securityString = destSys.FormatSec() + " " + SecurityText(destSys.security); securityText.SetText(securityString); string fuelTopString = Mathf.Round(Ship.fuel) + "/" + Ship.maxFuel; fuelTopText.SetText(fuelTopString); string fuelBotString = "-" + flight.details.fuel; fuelBotText.SetText(fuelBotString); string fuelStatusString; Color fuelStatusColor; if (Ship.fuel >= flight.fuel) { fuelStatusString = "OK"; fuelStatusColor = Color.green; fuelBotText.color = new Color(1, 1, 1, 0.5f); } else { fuelStatusString = "BAD"; fuelStatusColor = Color.red; fuelBotText.color = new Color(1, 0, 0, 0.5f); } fuelStatusText.SetText(fuelStatusString); fuelStatusText.color = fuelStatusColor; fuelStatusOutline.color = fuelStatusColor; fuelStatusColor.a = 0.3f; fuelStatusBg.color = fuelStatusColor; } }
public void DrawVisualisations(World.Sys sys) { Vector2 canvasDiam = canvasRect.sizeDelta; star = new VisImage(); planets = new List <VisImage>(); #region Init //Star World.Star starObj = sys.star; star.type = starObj.type; star.id = starObj.id; star.color = starObj.visColor; star.sprite = starSprite; star.size = starObj.visSize; //Planets foreach (World.Planet planet in sys.planets) { Sprite sprite; if (!planet.field) { sprite = planetSprite; } else { sprite = fieldSprite; } VisImage planetVis = new VisImage { type = planet.type, id = planet.id, color = planet.visColor, sprite = sprite, field = planet.field }; planets.Add(planetVis); } #endregion #region Positions float paddingFromStar = (star.size / 2) * 1.5f; star.posX = 0; float planetsTotalWidth = 0; foreach (VisImage planet in planets) { planetsTotalWidth += planet.size; } float canvasTotal = (canvasDiam.x / 2) - paddingFromStar; float planetsTotalSpace = canvasTotal - planetsTotalWidth; float planetsSpace = planetsTotalSpace / planets.Count; for (int i = 0; i <= planets.Count - 1; i++) { VisImage planet = planets[i]; float virtPosX = ((planet.size + planetsSpace) * i) + paddingFromStar; planet.virtPosX = virtPosX; if (virtPosX > canvasDiam.x / 2) { virtPosX = (canvasDiam.x / 2) - planet.size; } if (!planet.field) { planet.posX = virtPosX; } else { planet.posX = 0; } } #endregion #region Sizes for (int i = 0; i <= planets.Count - 1; i++) { VisImage planetVis = planets[i]; World.Planet planet = World.GetLocation().sys.planets[i]; if (!planetVis.field) { planetVis.size = planet.visSize; } else { planetVis.size = planetVis.virtPosX * 2; } } #endregion #region Render DrawVisualisation(star); foreach (VisImage planet in planets) { DrawVisualisation(planet); if (!planet.field) { DrawOrbit(planet); } //Set a random orbit point planet.rect.RotateAround(star.rect.position, Vector3.right, Random.Range(0, 360)); } #endregion displaying = true; }