diff --git a/src/commonMain/kotlin/com/github/awcz/torch/SpecialEvent.kt b/src/commonMain/kotlin/com/github/awcz/torch/SpecialEvent.kt index e6b9154..6edc9a1 100644 --- a/src/commonMain/kotlin/com/github/awcz/torch/SpecialEvent.kt +++ b/src/commonMain/kotlin/com/github/awcz/torch/SpecialEvent.kt @@ -1,7 +1,7 @@ package com.github.awcz.torch -enum class SpecialEvent(val probability: Double) { - FIRE_RAIN(0.001), - WATER_RAIN(0.002), - EARTHQUAKE(0.003) +enum class SpecialEvent(val startProbability: Double, val sustainProbability: Double) { + FIRE_RAIN(0.008, 0.05), + WATER_RAIN(0.002, 0.05), + EARTHQUAKE(0.003, 0.05) } \ No newline at end of file diff --git a/src/commonMain/kotlin/com/github/awcz/torch/scene/GameScene.kt b/src/commonMain/kotlin/com/github/awcz/torch/scene/GameScene.kt index c41e14e..2c73f07 100644 --- a/src/commonMain/kotlin/com/github/awcz/torch/scene/GameScene.kt +++ b/src/commonMain/kotlin/com/github/awcz/torch/scene/GameScene.kt @@ -336,10 +336,10 @@ class GameScene : Scene() { specialEvents.filter { it.value <= 0 }.forEach { specialEvents.remove(it.key) } - if (!specialEvents.contains(SpecialEvent.FIRE_RAIN) && Random.nextFloat() < SpecialEvent.FIRE_RAIN.probability) { + if (!specialEvents.contains(SpecialEvent.FIRE_RAIN) && Random.nextFloat() < SpecialEvent.FIRE_RAIN.startProbability) { specialEvents[SpecialEvent.FIRE_RAIN] = 400 } - if (!specialEvents.contains(SpecialEvent.WATER_RAIN) && Random.nextFloat() < SpecialEvent.WATER_RAIN.probability) { + if (!specialEvents.contains(SpecialEvent.WATER_RAIN) && Random.nextFloat() < SpecialEvent.WATER_RAIN.startProbability) { specialEvents[SpecialEvent.WATER_RAIN] = 200 } } @@ -449,7 +449,11 @@ class GameScene : Scene() { private fun registerNewCollisions() { val fireRainProbability = - if (specialEvents.containsKey(SpecialEvent.FIRE_RAIN)) 0.05 else 0.008 // todo associate probability with events + if (specialEvents.containsKey(SpecialEvent.FIRE_RAIN)) { + SpecialEvent.FIRE_RAIN.sustainProbability + } else { + SpecialEvent.FIRE_RAIN.startProbability + } if (Random.nextFloat() < fireRainProbability) { CollisionObject( mapView,