void SectorView::UpdateSystemLabels(SystemLabels &labels, const SystemPath &path) { PROFILE_SCOPED() Sector *sec = GetCached(path.sectorX, path.sectorY, path.sectorZ); Sector *playerSec = GetCached(m_current.sectorX, m_current.sectorY, m_current.sectorZ); char format[256]; if (m_inSystem) { const float dist = Sector::DistanceBetween(sec, path.systemIndex, playerSec, m_current.systemIndex); int fuelRequired; double dur; enum Ship::HyperjumpStatus jumpStatus = Pi::player->GetHyperspaceDetails(&path, fuelRequired, dur); const double DaysNeeded = dur*(1.0 / (24*60*60)); const double HoursNeeded = (DaysNeeded - floor(DaysNeeded))*24; switch (jumpStatus) { case Ship::HYPERJUMP_OK: snprintf(format, sizeof(format), "[ %s | %s | %s, %s ]", Lang::NUMBER_LY, Lang::NUMBER_TONNES, Lang::NUMBER_DAYS, Lang::NUMBER_HOURS); labels.distance->SetText(stringf(format, formatarg("distance", dist), formatarg("mass", fuelRequired), formatarg("days", floor(DaysNeeded)), formatarg("hours", HoursNeeded))); labels.distance->Color(0, 255, 51); m_jumpLine.SetColor(Color(0, 255, 51, 255)); break; case Ship::HYPERJUMP_INSUFFICIENT_FUEL: snprintf(format, sizeof(format), "[ %s | %s ]", Lang::NUMBER_LY, Lang::NUMBER_TONNES); labels.distance->SetText(stringf(format, formatarg("distance", dist), formatarg("mass", fuelRequired))); labels.distance->Color(255, 255, 0); m_jumpLine.SetColor(Color::YELLOW); break; case Ship::HYPERJUMP_OUT_OF_RANGE: snprintf(format, sizeof(format), "[ %s ]", Lang::NUMBER_LY); labels.distance->SetText(stringf(format, formatarg("distance", dist))); labels.distance->Color(255, 0, 0); m_jumpLine.SetColor(Color::RED); break; default: labels.distance->SetText(""); break; } } else if (path.IsSameSystem(Pi::player->GetHyperspaceDest())) { snprintf(format, sizeof(format), "[ %s ]", Lang::IN_TRANSIT); labels.distance->SetText(format); labels.distance->Color(102, 102, 255); } else labels.distance->SetText(""); RefCountedPtr<StarSystem> sys = StarSystem::GetCached(path); std::string desc; if (sys->GetNumStars() == 4) { desc = Lang::QUADRUPLE_SYSTEM; } else if (sys->GetNumStars() == 3) { desc = Lang::TRIPLE_SYSTEM; } else if (sys->GetNumStars() == 2) { desc = Lang::BINARY_SYSTEM; } else { desc = sys->rootBody->GetAstroDescription(); } labels.starType->SetText(desc); labels.systemName->SetText(sys->GetName()); labels.shortDesc->SetText(sys->GetShortDescription()); if (m_detailBoxVisible == DETAILBOX_INFO) m_infoBox->ShowAll(); }