Exit Full View

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

import uk.co.nickthecoder.glok.event.Key
import uk.co.nickthecoder.glok.event.KeyEvent
import uk.co.nickthecoder.kyd.Act
import uk.co.nickthecoder.kyd.Director
import uk.co.nickthecoder.kyd.Management
import uk.co.nickthecoder.kyd.appearance.Label

class MenuDirector : Director {

    private lateinit var modeAppearance: Label

    override fun onActStarted(act: Act) {
        (Management.instance.act?.stages?.firstOrNull { it.name == "glass" }?.actors?.firstOrNull { it.id == "mode" }
            ?.appearance as? Label)?.let { modeAppearance = it }
    }

    override fun onKeyPressed(keyEvent: KeyEvent) {
        when (keyEvent.key) {

            Key.DIGIT_1 -> { // PLAY
                Management.instance.loadAct("/play")
            }

            Key.DIGIT_2 -> { // EASY
                modeAppearance.text = "*"
                with(CavernQuest.instance) {
                    maxBlasts = 1000
                    blastsPerDynamite = 50
                    friendly = true
                    monstersGetStuck = true
                }
            }

            Key.DIGIT_3 -> { // STANDARD
                modeAppearance.text = "\n*"
                with(CavernQuest.instance) {
                    maxBlasts = 1000
                    blastsPerDynamite = 25
                    friendly = false
                    monstersGetStuck = true
                }
            }

            Key.DIGIT_4 -> { // HARD
                modeAppearance.text = "\n\n*"
                with(CavernQuest.instance) {
                    maxBlasts = 50
                    blastsPerDynamite = 10
                    friendly = false
                    monstersGetStuck = false
                }
            }

            Key.DIGIT_9 -> { // QUIT
                Management.instance.terminate()
            }

            else -> {}
        }
    }

}