tree¶
Builds a forest of TreeNodes as a TreeRegistry. A top-level TreeScope.node call declares one of TreeRegistry.roots; NodeBuilder.children nests further nodes; NodeBuilder.dependsOn wires an extra prerequisite. factory supplies a fresh B per TreeScope.node call.
class SkillNodeBuilder : NodeBuilder<String, SkillNode, SkillNodeBuilder>() {
var label = ""
var locked = false
override fun build() = SkillNode(label, locked)
}
val skillTree = tree(factory = { SkillNodeBuilder() }) {
node("gathering") {
label = "Gathering"
children {
node("mining") {
label = "Mining"
children {
node("smithing") { label = "Smithing"; dependsOn("gathering") }
node("rare_ore") { label = "Rare Ore"; locked = true }
}
}
}
}
}