Added more satellite parameters to the map screen

This commit is contained in:
Arty Bishop committed 2022-03-10 10:42:20 +00:00
1 parent 488fe352cd
commit ec553bf429
8 files changed
+112 -60

No files matched your search

@@ -11,6 +11,8 @@ interface ISatelliteManager {
val calculatedPasses: SharedFlow<List<SatPass>>
fun getPasses(): List<SatPass>
suspend fun getPosition(sat: Satellite, pos: GeoPos, time: Long): SatPos
suspend fun getTrack(sat: Satellite, pos: GeoPos, start: Long, end: Long): List<SatPos>
@@ -27,9 +27,12 @@ import kotlinx.coroutines.withContext
class SatelliteManager(private val defaultDispatcher: CoroutineDispatcher) : ISatelliteManager {
private var passes = listOf<SatPass>()
private val _calculatedPasses = MutableSharedFlow<List<SatPass>>(replay = 1)
override val calculatedPasses: SharedFlow<List<SatPass>> = _calculatedPasses
override fun getPasses(): List<SatPass> = passes
override suspend fun getPosition(sat: Satellite, pos: GeoPos, time: Long): SatPos {
return withContext(defaultDispatcher) { sat.getPosition(pos, time) }
}
@@ -96,14 +99,18 @@ class SatelliteManager(private val defaultDispatcher: CoroutineDispatcher) : ISa
minElevation: Double
) {
if (satList.isEmpty()) {
_calculatedPasses.emit(emptyList())
val newPasses = emptyList<SatPass>()
passes = newPasses
_calculatedPasses.emit(newPasses)
} else {
withContext(defaultDispatcher) {
val allPasses = mutableListOf<SatPass>()
satList.forEach { satellite ->
allPasses.addAll(satellite.getPasses(pos, time, hoursAhead))
}
_calculatedPasses.emit(allPasses.filter(time, hoursAhead, minElevation))
val newPasses = allPasses.filter(time, hoursAhead, minElevation)
passes = newPasses
_calculatedPasses.emit(newPasses)
}
}
}