SnowyGUI/common/src/main/kotlin/fr/username404/snowygui/Snowy.kt

38 lines
1.5 KiB
Kotlin

package fr.username404.snowygui
import fr.username404.snowygui.EventSnowy.Companion.useKey
import fr.username404.snowygui.config.Configuration
import fr.username404.snowygui.gui.feature.ButtonImpl
import fr.username404.snowygui.gui.feature.Ignored
import fr.username404.snowygui.misc.AddKeyMaps
import net.minecraft.network.chat.TranslatableComponent
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
import java.lang.reflect.Modifier
abstract class Snowy {
protected fun Class<*>.isValidForButtonCollection(): Boolean = (!((Modifier.isAbstract(javaClass.modifiers)) || javaClass.isAnnotationPresent(Ignored::class.java)))
private val displayInitMessage: Boolean by Configuration
companion object {
val MissingComponent: TranslatableComponent = object: TranslatableComponent(null) { override fun getString(): String = "MISSING_COMPONENT" }
@JvmStatic
protected val FeaturePackage: String = "fr.username404.snowygui.gui.feature"
lateinit var annotatedButtons: Set<Class<out ButtonImpl>>
fun onEvent(e: String, lambda: argsLambda) = useKey(e).add(lambda)
@JvmField
val logs: Logger = LogManager.getLogger()
}
private fun eventsInit() {
onEvent("EndTick") {
for (Key in AddKeyMaps.list.keys) {
if (Key.isDown) {
AddKeyMaps.list[Key]?.invoke()
}
}
}
}
fun atInit() {
if (displayInitMessage) logs.info("Init point of SnowyGUI hit.")
eventsInit()
}
}