diff --git a/engine/src/main/coffee/engine/core/turtle.coffee b/engine/src/main/coffee/engine/core/turtle.coffee index 46aab12b9..87c62bbdb 100644 --- a/engine/src/main/coffee/engine/core/turtle.coffee +++ b/engine/src/main/coffee/engine/core/turtle.coffee @@ -337,6 +337,10 @@ module.exports = breedHere: (breedName) -> @getPatchHere().breedHere(breedName) + # (String) => Array[Turtle] + breedHereArray: (breedName) -> + @getPatchHere().breedHereArray(breedName) + # (Number, String) => TurtleSet hatch: (n, breedName) -> num = if n >= 0 then n else 0 diff --git a/engine/src/main/coffee/engine/prim-checks/agentset-checks.coffee b/engine/src/main/coffee/engine/prim-checks/agentset-checks.coffee index 79995127c..6e0ed3bfc 100644 --- a/engine/src/main/coffee/engine/prim-checks/agentset-checks.coffee +++ b/engine/src/main/coffee/engine/prim-checks/agentset-checks.coffee @@ -83,14 +83,10 @@ class AgentSetChecks # (String, Patch | Turtle | PatchSet | TurtleSet) => AgentSet breedOn: (breedName, target) -> - if checks.isPatch(target) - @prims.breedOnPatch(breedName, target) - else if checks.isTurtle(target) - @prims.breedOnTurtle(breedName, target) - else if checks.isPatchSet(target) - @prims.breedOnPatchSet(breedName, target) - else if checks.isTurtleSet(target) - @prims.breedOnTurtleSet(breedName, target) + if checks.isAgentSet(target) + @prims.breedOnAgentSet(breedName, target) + else + @prims.breedOnAgent(breedName, target) # (AgentSet[T]) => Number count: (agentset) -> diff --git a/engine/src/main/coffee/engine/prim/prims.coffee b/engine/src/main/coffee/engine/prim/prims.coffee index 079023d91..aae06464c 100644 --- a/engine/src/main/coffee/engine/prim/prims.coffee +++ b/engine/src/main/coffee/engine/prim/prims.coffee @@ -38,26 +38,15 @@ module.exports = boom: -> throw exceptions.runtime("boom!", "boom") - # (String, Array[Patch]) -> TurtleSet - breedOn: (breedName, patches) -> - turtles = flatMap((p) -> p.breedHereArray(breedName))(patches) + # (String, Agent) -> TurtleSet + breedOnAgent: (breedName, agent) -> + turtles = agent.breedHereArray(breedName) new TurtleSet(turtles, @_world) - # (String, Patch) => TurtleSet - breedOnPatch: (breedName, patch) -> - @breedOn(breedName, [patch]) - - # (String, Turtle) => TurtleSet - breedOnTurtle: (breedName, turtle) -> - @breedOn(breedName, [turtle.getPatchHere()]) - - # (String, PatchSet) => TurtleSet - breedOnPatchSet: (breedName, patchSet) -> - @breedOn(breedName, patchSet.toArray()) - - # (String, TurtleSet) => TurtleSet - breedOnTurtleSet: (breedName, turtleSet) -> - @breedOn(breedName, map((t) -> t.getPatchHere())(turtleSet.iterator().toArray())) + # (String, AgentSet) -> TurtleSet + breedOnAgentSet: (breedName, agents) -> + turtles = flatMap((p) -> p.breedHereArray(breedName))(agents.toArray()) + new TurtleSet(turtles, @_world) # (Any, String) => Boolean booleanCheck: (b, primName) ->