Fact.kt

Branches > main > ba82e8d > files / src / main / kotlin / net / bowmap / stormbow / fact / Fact.kt

package net.bowmap.stormbow.fact

import kotlinx.collections.immutable.*
import net.bowmap.stormbow.effect.Effect
import net.bowmap.stormbow.registry

/// A fact is something that happened in the game
interface Fact

fun handle(fact: Fact): PersistentList<Effect> {
  var effects: PersistentList<Effect> = persistentListOf()
  registry[fact::class]?.forEach { handler ->
    effects = effects.addingAll(handler(fact))
  }
  return effects
}