HexCasting/src/main/java/at/petrak/hex/hexes/HexDir.kt
2021-12-25 10:58:16 -06:00

26 lines
774 B
Kotlin

package at.petrak.hex.hexes
enum class HexDir {
NORTH_EAST, EAST, SOUTH_EAST, SOUTH_WEST, WEST, NORTH_WEST;
fun rotatedBy(a: HexAngle): HexDir =
values()[(this.ordinal + a.ordinal).mod(values().size)]
operator fun times(a: HexAngle) = this.rotatedBy(a)
fun angleFrom(other: HexDir): HexAngle =
HexAngle.values()[(this.ordinal - other.ordinal).mod(HexAngle.values().size)]
operator fun minus(other: HexDir) = this.angleFrom(other)
fun asDelta(): HexCoord =
when (this) {
NORTH_EAST -> HexCoord(1, -1)
EAST -> HexCoord(1, 0)
SOUTH_EAST -> HexCoord(0, 1)
SOUTH_WEST -> HexCoord(-1, 1)
WEST -> HexCoord(-1, 0)
NORTH_WEST -> HexCoord(0, -1)
}
}