Skip to content

Commit

Permalink
Prefactor: Simplify breed-on to be like turtles-on
Browse files Browse the repository at this point in the history
  • Loading branch information
LaCuneta committed Apr 8, 2024
1 parent 8cea3a2 commit 492fe2d
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 26 deletions.
4 changes: 4 additions & 0 deletions engine/src/main/coffee/engine/core/turtle.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 4 additions & 8 deletions engine/src/main/coffee/engine/prim-checks/agentset-checks.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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) ->
Expand Down
25 changes: 7 additions & 18 deletions engine/src/main/coffee/engine/prim/prims.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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) ->
Expand Down

0 comments on commit 492fe2d

Please sign in to comment.