Skip to content

Commit 8a7f878

Browse files
committed
refactor(sdk/Vector): move generic methods to IVector interface
1 parent d24d827 commit 8a7f878

File tree

1 file changed

+14
-14
lines changed
  • sdk/src/main/server-api/sc/api/plugins

1 file changed

+14
-14
lines changed

sdk/src/main/server-api/sc/api/plugins/Vector.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,45 @@ package sc.api.plugins
22

33
import kotlin.math.abs
44
import kotlin.math.sqrt
5-
import kotlin.random.Random
65

76
interface IVector {
87
val dx: Int
98
val dy: Int
9+
10+
/** Verändert die Länge des Vektors um den gegebenen Faktor, ohne seine Richtung zu ändern. */
11+
operator fun times(scalar: Int): Vector =
12+
Vector(scalar * dx, scalar * dy)
13+
14+
/** Konvertiert den Vektor zu entsprechenden [Coordinates]. */
15+
operator fun unaryPlus(): Coordinates = Coordinates(dx, dy)
1016
}
1117

1218
/**
1319
* Die Strecke zwischen zwei [Coordinates].
1420
* @property dx die Differenz in x-Richtung
1521
* @property dy die Differenz in y-Richtung
1622
*/
17-
data class Vector(override val dx: Int, override val dy: Int): IVector, Comparable<IVector> {
23+
data class Vector(override val dx: Int, override val dy: Int): IVector, Comparable<Vector> {
1824

1925
/** Die Fläche des Rechtecks, dessen Diagonale der Vector ist. */
2026
val area: Int
2127
get() = abs(dx * dy)
2228

29+
/** Länge des Vektors auf einem rechteckigen Spielfeld. */
2330
val length: Double
2431
get() = sqrt(comparableLength.toDouble())
2532

26-
/** Verändert die Länge des Vektors um den gegebenen Faktor, ohne seine Richtung zu ändern. */
27-
operator fun times(scalar: Int): Vector =
28-
Vector(scalar * dx, scalar * dy)
29-
33+
/** Ob dieser Vektor auf einem doubled Hex Feld eine gerade Linie beschreibt. */
3034
val straightHex: Boolean
3135
get() = abs(dx) == abs(dy) || (dx % 2 == 0 && dy == 0)
3236

33-
private val IVector.comparableLength: Int
37+
private val comparableLength: Int
3438
get() = dx * dx + dy * dy
3539

3640
/**
3741
* Vergleicht die Länge dieses Vektors mit einem anderen.
38-
* @return groesser Null, wenn dieser laenger ist
42+
* @return groesser als 0, wenn dieser Vektor laenger ist
3943
*/
40-
override operator fun compareTo(other: IVector): Int =
41-
comparableLength - other.comparableLength
42-
43-
/** Konvertiert den Vektor zu entsprechenden [Coordinates]. */
44-
operator fun unaryPlus(): Coordinates = Coordinates(dx, dy)
45-
44+
override operator fun compareTo(other: Vector): Int =
45+
comparableLength - other.comparableLength
4646
}

0 commit comments

Comments
 (0)