summaryrefslogtreewikicommitdiff
path: root/core/src/command/Top.kt
blob: 900f52f207478fa830ca902f704cbfb9d631cdf5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package cat.freya.khs.command

import cat.freya.khs.Khs
import cat.freya.khs.command.util.Command
import cat.freya.khs.player.Player

class KhsTop : Command {
    override val label = "top"
    override val usage = listOf("*page")
    override val description = "Shows the game leaderboard"

    private fun getColor(index: UInt): Char {
        return when (index) {
            0u -> 'e'
            1u -> '7'
            2u -> '6'
            else -> 'f'
        }
    }

    override fun execute(plugin: Khs, player: Player, args: List<String>) {
        var page = args.firstOrNull()?.toUIntOrNull() ?: 0u
        page = maxOf(page, 1u) - 1u

        var pageSize = 5u
        val entires = plugin.database?.getPlayers(page, pageSize)
        if (entires == null || entires.isEmpty()) {
            player.message(plugin.locale.prefix.default + plugin.locale.database.noInfo)
            return
        }

        val message = buildString {
            appendLine("&f------- &lLEADERBOARD &7(Page ${page + 1u}) &f-------")
            for ((i, entry) in entires.withIndex()) {
                val wins = entry.hiderWins + entry.seekerWins
                val idx = (pageSize * page) + i.toUInt()
                val color = getColor(idx)
                val name = entry.name ?: continue
                appendLine("&$color${idx + 1u}. &c$wins &f$name")
            }
        }

        player.message(message)
    }

    override fun autoComplete(plugin: Khs, parameter: String, typed: String): List<String> {
        return listOf(parameter)
    }
}