Newer
Older
Twilight / src / main / kotlin / net / taehui / twilight / system / QwilightNamesSystem.kt
@Taehui Taehui on 6 Nov 1 KB 2023-11-06 오후 7:15
package net.taehui.twilight.system

import net.taehui.twilight.Logger
import net.taehui.twilight.Utility

object QwilightNamesSystem : Logger {
    private val qwilightNameCountMap = mutableMapOf<String, Int>()
    private val qwilightNames = mutableListOf<String>()

    fun loadQwilightNames() {
        qwilightNames.addAll(DB.getQwilightNames())
        qwilightNames.forEach { qwilightNameCountMap[it] = 0 }
        logInfo("Loaded Qwilight Names")
    }

    val qwilightName: String
        get() {
            synchronized(qwilightNameCountMap) {
                val minValue = qwilightNameCountMap.values.minOrNull() ?: 0
                val qwilightName = Utility.getSaltedItem(
                    qwilightNameCountMap.entries
                        .filter { it.value == minValue }
                        .map { it.key }, ""
                )
                if (qwilightName.isNotEmpty()) {
                    qwilightNameCountMap[qwilightName] = (qwilightNameCountMap[qwilightName] ?: 0) + 1
                }
                return qwilightName
            }
        }
}