Exit Full View

Cavern Quest 2 / src / commonMain / kotlin / BlastsCounter.kt

import uk.co.nickthecoder.glok.property.boilerplate.intProperty
import uk.co.nickthecoder.kyd.Actor
import uk.co.nickthecoder.kyd.Behaviour
import uk.co.nickthecoder.kyd.appearance.Label

/**
 * Text containing : "Blasts : $blasts"
 */
class BlastsCounter : Behaviour {

    val blastsProperty by intProperty(0)
    var blasts by blastsProperty

    override fun onEnteredStage(actor: Actor) {
        PlayDirector.instance.registerBlastsCounter(this)
        updateCounter(actor)
        blastsProperty.addListener { updateCounter(actor) }
    }

    private fun updateCounter(actor: Actor) {
        (actor.appearance as? Label)?.let { label ->
            label.text = "Blasts : $blasts"
        }
    }
}