| 195 | }; |
| 196 | |
| 197 | float SystemWorld::planetSize(CelestialCoordinate const& coordinate) const { |
| 198 | if (coordinate.isNull()) |
| 199 | return 0; |
| 200 | |
| 201 | if (coordinate.isSystem()) |
| 202 | return m_config.starSize; |
| 203 | |
| 204 | if (!m_celestialDatabase->childOrbits(coordinate.parent()).contains(coordinate.orbitNumber())) |
| 205 | return m_config.emptyOrbitSize; |
| 206 | |
| 207 | if (auto parameters = m_celestialDatabase->parameters(coordinate)) { |
| 208 | if (auto visitableParameters = parameters->visitableParameters()) { |
| 209 | float size = 0; |
| 210 | if (is<FloatingDungeonWorldParameters>(visitableParameters)) { |
| 211 | if (auto s = m_config.floatingDungeonWorldSizes.maybe(visitableParameters->typeName)) |
| 212 | return *s; |
| 213 | } |
| 214 | for (auto s : m_config.planetSizes) { |
| 215 | if (visitableParameters->worldSize[0] >= s.first) |
| 216 | size = s.second; |
| 217 | else |
| 218 | break; |
| 219 | } |
| 220 | return size; |
| 221 | } |
| 222 | } |
| 223 | return m_config.unvisitablePlanetSize; |
| 224 | } |
| 225 | |
| 226 | Vec2F SystemWorld::planetPosition(CelestialCoordinate const& coordinate) const { |
| 227 | if (coordinate.isNull() || coordinate.isSystem()) |
no test coverage detected