59 lines
2 KiB
Kotlin
59 lines
2 KiB
Kotlin
package eu.ztsh.garmin
|
|
|
|
import com.mapbox.navigation.ui.maneuver.model.Maneuver
|
|
|
|
class ManeuverMapper {
|
|
|
|
companion object {
|
|
|
|
fun apply(maneuver: Maneuver): State {
|
|
val state = State()
|
|
maneuver.apply {
|
|
this.primary.apply {
|
|
when (this.type) {
|
|
"roundabout" -> {
|
|
state.direction.out = OutType.RightRoundabout
|
|
}
|
|
"arrive" -> {
|
|
state.flag = true
|
|
}
|
|
}
|
|
when (this.modifier) {
|
|
"right" -> {
|
|
when (this.type) {
|
|
"turn" -> state.direction.angle = OutAngle.Right
|
|
"roundabout" -> {
|
|
when (this.degrees) {
|
|
137.0 -> state.direction.angle = OutAngle.EasyRight
|
|
}
|
|
}
|
|
}
|
|
}
|
|
"left" -> {
|
|
when (this.type) {
|
|
"turn" -> state.direction.angle = OutAngle.Left
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.stepDistance.apply {
|
|
this.distanceRemaining?.apply {
|
|
distanceFormatter.formatDistance(distanceRemaining!!).split(" ").apply {
|
|
state.distance = this[0].toInt()
|
|
state.unit = when (this[1]) {
|
|
"m" -> Unit.Metres
|
|
"km" -> Unit.Kilometres
|
|
else -> {Unit.Any}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
return state
|
|
}
|
|
|
|
}
|
|
|
|
}
|