Untitled
unknown
kotlin
a year ago
7.3 kB
20
Indexable
object FindTagRouter {
fun route(currentDirection: CompassDirection, bestDirection: CompassDirection): Int {
when (bestDirection) {
// Best direction is North
is CompassDirection.North -> {
// If current direction is not North
if (currentDirection !is CompassDirection.North) {
when (currentDirection) {
is CompassDirection.East -> return 270
is CompassDirection.Northeast -> return 315
is CompassDirection.Northwest -> return 45
is CompassDirection.Southeast -> return 225
is CompassDirection.Southwest -> return 135
is CompassDirection.West -> return 90
is CompassDirection.South -> return 180
else -> {}
}
} else {
return 0
}
}
// Best direction is South
is CompassDirection.South -> {
// If current direction is not South
if (currentDirection !is CompassDirection.South) {
when (currentDirection) {
is CompassDirection.East -> return 90
is CompassDirection.North -> return 180
is CompassDirection.Northeast -> return 135
is CompassDirection.Northwest -> return 225
is CompassDirection.Southeast -> return 45
is CompassDirection.Southwest -> return 315
is CompassDirection.West -> return 270
else -> {}
}
} else {
return 0
}
}
// Best direction is East
is CompassDirection.East -> {
// If current direction is not East
if (currentDirection !is CompassDirection.East) {
when (currentDirection) {
is CompassDirection.North -> return 90
is CompassDirection.Northeast -> return 45
is CompassDirection.Northwest -> return 135
is CompassDirection.Southeast -> return 315
is CompassDirection.Southwest -> return 225
is CompassDirection.West -> return 180
is CompassDirection.South -> return 270
else -> {}
}
} else {
return 0
}
}
// Best direction is West
is CompassDirection.West -> {
// If current direction is not West
if (currentDirection !is CompassDirection.West) {
when (currentDirection) {
is CompassDirection.North -> return 270
is CompassDirection.Northeast -> return 225
is CompassDirection.Northwest -> return 315
is CompassDirection.Southeast -> return 135
is CompassDirection.Southwest -> return 45
is CompassDirection.East -> return 180
is CompassDirection.South -> return 90
else -> {}
}
} else {
return 0
}
}
// Best direction is Northeast
is CompassDirection.Northeast -> {
// If current direction is not Northeast
if (currentDirection !is CompassDirection.Northeast) {
when (currentDirection) {
is CompassDirection.North -> return 45
is CompassDirection.East -> return 315
is CompassDirection.Northwest -> return 90
is CompassDirection.Southeast -> return 270
is CompassDirection.Southwest -> return 180
is CompassDirection.West -> return 225
is CompassDirection.South -> return 135
else -> {}
}
} else {
return 0
}
}
// Best direction is Northwest
is CompassDirection.Northwest -> {
// If current direction is not Northwest
if (currentDirection !is CompassDirection.Northwest) {
when (currentDirection) {
is CompassDirection.North -> return 315
is CompassDirection.East -> return 225
is CompassDirection.Northeast -> return 270
is CompassDirection.Southeast -> return 180
is CompassDirection.Southwest -> return 90
is CompassDirection.West -> return 45
is CompassDirection.South -> return 225
else -> {}
}
} else {
return 0
}
}
// Best direction is Southeast
is CompassDirection.Southeast -> {
// If current direction is not Southeast
if (currentDirection !is CompassDirection.Southeast) {
when (currentDirection) {
is CompassDirection.North -> return 135
is CompassDirection.East -> return 45
is CompassDirection.Northeast -> return 90
is CompassDirection.Northwest -> return 225
is CompassDirection.Southwest -> return 315
is CompassDirection.West -> return 270
is CompassDirection.South -> return 45
else -> {}
}
} else {
return 0
}
}
// Best direction is Southwest
is CompassDirection.Southwest -> {
// If current direction is not Southwest
if (currentDirection !is CompassDirection.Southwest) {
when (currentDirection) {
is CompassDirection.North -> return 225
is CompassDirection.East -> return 135
is CompassDirection.Northeast -> return 180
is CompassDirection.Northwest -> return 270
is CompassDirection.Southeast -> return 45
is CompassDirection.West -> return 90
is CompassDirection.South -> return 315
else -> {}
}
} else {
return 0
}
}
is CompassDirection.None -> return 0
}
return 0
}
}Editor is loading...
Leave a Comment