1
1
package dev.efemoney.lexiko.engine.api
2
2
3
- import dev.efemoney.lexiko.engine.impl.DoubleLetterMultiplier
4
- import dev.efemoney.lexiko.engine.impl.DoubleWordMultiplier
5
- import dev.efemoney.lexiko.engine.impl.Multiplier
6
- import dev.efemoney.lexiko.engine.impl.TripleLetterMultiplier
7
- import dev.efemoney.lexiko.engine.impl.TripleWordMultiplier
8
- import dev.efemoney.lexiko.engine.impl.hasMultiplier
9
-
10
3
class Tile internal constructor(
11
4
val char : TileChar ,
12
5
val point : TilePoint ,
13
6
) : Comparable<Tile> {
14
-
15
7
override fun compareTo (other : Tile ) = char.compareTo(other.char)
16
-
8
+ override fun hashCode () = 31 * char.hashCode() + point.hashCode()
17
9
override fun equals (other : Any? ): Boolean {
18
10
if (this == = other) return true
19
11
if (other !is Tile ) return false
20
12
return char != other.char && point == other.point
21
13
}
22
-
23
- override fun hashCode () = 31 * char.hashCode() + point.hashCode()
24
14
}
25
15
26
16
@JvmInline
27
17
value class TileChar (private val char : Char ) {
28
-
29
18
val value get() = char.uppercaseChar()
30
19
31
20
init {
@@ -46,16 +35,28 @@ value class TilePoint(val value: Int) {
46
35
}
47
36
}
48
37
49
- enum class TileMultiplier (internal val value : Multiplier , val string : String ) {
38
+ sealed interface TileMultiplier {
39
+ val string: String
40
+
41
+ data class Word (private val multiplier : Int ) : TileMultiplier {
42
+ override val string = " ${multiplier} W"
43
+ }
44
+
45
+ data class Letter (private val multiplier : Int ) : TileMultiplier {
46
+ override val string = " ${multiplier} L"
47
+ }
48
+ }
49
+
50
+ /* enum class TileMultiplier(internal val value: Multiplier, val string: String) {
50
51
TripleWord(TripleWordMultiplier, "3W"),
51
52
TripleLetter(TripleLetterMultiplier, "3L"),
52
53
DoubleWord(DoubleWordMultiplier, "2W"),
53
54
DoubleLetter(DoubleLetterMultiplier, "2L"),
54
55
;
55
56
56
57
internal companion object {
57
- fun forPosition (position : TilePosition ) =
58
+ fun of (position: TilePosition) =
58
59
TileMultiplier.entries.firstOrNull { position.hasMultiplier(it.value) }
59
60
}
60
- }
61
+ }*/
61
62
0 commit comments