mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-06-03 00:15:27 +00:00
44 lines
1.1 KiB
Kotlin
44 lines
1.1 KiB
Kotlin
package dev.inmo.tgbotapi.extensions.utils
|
|
|
|
import dev.inmo.tgbotapi.types.DiceResult
|
|
import dev.inmo.tgbotapi.types.dice.Dice
|
|
import dev.inmo.tgbotapi.types.dice.SlotMachineDiceAnimationType
|
|
import kotlinx.serialization.Serializable
|
|
import kotlinx.serialization.Transient
|
|
|
|
enum class SlotMachineReelImages {
|
|
BAR, BERRIES, LEMON, SEVEN
|
|
}
|
|
val Int.asSlotMachineReelImage
|
|
get() = when (this) {
|
|
0 -> SlotMachineReelImages.BAR
|
|
1 -> SlotMachineReelImages.BERRIES
|
|
2 -> SlotMachineReelImages.LEMON
|
|
else -> SlotMachineReelImages.SEVEN
|
|
}
|
|
|
|
@Serializable
|
|
data class SlotMachineResult(
|
|
val rawValue: DiceResult
|
|
) {
|
|
@Transient
|
|
val left = rawValue and 3
|
|
@Transient
|
|
val center = rawValue shr 2 and 3
|
|
@Transient
|
|
val right = rawValue shr 4
|
|
|
|
@Transient
|
|
val leftReel = left.asSlotMachineReelImage
|
|
@Transient
|
|
val centerReel = center.asSlotMachineReelImage
|
|
@Transient
|
|
val rightReel = right.asSlotMachineReelImage
|
|
}
|
|
|
|
fun Dice.calculateSlotMachineResult() = if (animationType == SlotMachineDiceAnimationType) {
|
|
SlotMachineResult(value - 1)
|
|
} else {
|
|
null
|
|
}
|