@@ -11,10 +11,7 @@ import com.lambda.interaction.construction.DynamicBlueprint
1111import com.lambda.interaction.construction.StaticBlueprint.Companion.toBlueprint
1212import com.lambda.interaction.construction.context.BreakContext
1313import com.lambda.interaction.construction.context.PlaceContext
14- import com.lambda.interaction.construction.result.BreakResult
15- import com.lambda.interaction.construction.result.BuildResult
16- import com.lambda.interaction.construction.result.PlaceResult
17- import com.lambda.interaction.construction.result.Resolvable
14+ import com.lambda.interaction.construction.result.*
1815import com.lambda.interaction.construction.simulation.BuildSimulator
1916import com.lambda.interaction.construction.simulation.BuildSimulator.simulate
2017import com.lambda.interaction.construction.verify.TargetState
@@ -50,7 +47,8 @@ class BuildStructure @Ta5kBuilder constructor(
5047 private val blueprint : Blueprint ,
5148 private val finishOnDone : Boolean = true ,
5249 private val pathing : Boolean = TaskFlow .build.pathing,
53- private val collectDrops : Boolean = TaskFlow .build.collectDrops,
50+ val collectDrops : Boolean = TaskFlow .build.collectDrops,
51+ private val cancelOnUnsolvable : Boolean = true ,
5452) : Task<Unit>() {
5553 private var lastTask: Task <* >? = null
5654
@@ -72,33 +70,29 @@ class BuildStructure @Ta5kBuilder constructor(
7270 val instantResults = results.filterIsInstance<BreakResult .Success >()
7371 .filter { it.context.instantBreak }
7472 .sorted()
75- .take(TaskFlow .build.interactLimit )
73+ .take(TaskFlow .build.breaksPerTick )
7674
77- if (TaskFlow .build.breakInstantAtOnce && instantResults.isNotEmpty()) {
78- // cancelSubTasks()
75+ if (TaskFlow .build.breaksPerTick > 1 && instantResults.isNotEmpty()) {
7976 instantResults.forEach {
80- it.resolve.start(this @BuildStructure, false )
77+ it.resolve.start(this @BuildStructure, pauseParent = false )
8178 }
8279 lastTask = instantResults.last().resolve
8380 return @listener
8481 }
8582
8683 results.minOrNull()?.let { result ->
87- if (! pathing && result is BuildResult . OutOfReach ) return @let
84+ if (! pathing && result is Navigable ) return @let
8885
8986 if (result !is Resolvable ) {
9087 if (result is BuildResult .Done ) {
9188 checkDone()
92- } else {
89+ } else if (cancelOnUnsolvable) {
9390 failure(" Failed to resolve build result: $result " )
9491 return @listener
9592 }
9693 return @listener
9794 }
98- // if (lastTask?.isCompleted == false) return@listener
99-
10095 lastTask = result.resolve
101- // cancelSubTasks()
10296
10397 LOG .info(" Resolving: $result " )
10498 result.resolve.start(this @BuildStructure)
@@ -120,12 +114,14 @@ class BuildStructure @Ta5kBuilder constructor(
120114 finishOnDone : Boolean = true,
121115 collectDrops : Boolean = TaskFlow .build.collectDrops,
122116 pathing : Boolean = TaskFlow .build.pathing,
117+ cancelOnUnsolvable : Boolean = true,
123118 blueprint : () -> Blueprint ,
124119 ) = BuildStructure (
125120 blueprint(),
126121 finishOnDone,
127122 pathing,
128123 collectDrops,
124+ cancelOnUnsolvable
129125 )
130126
131127 @Ta5kBuilder
0 commit comments