All Downloads are FREE. Search and download functionalities are using the official Maven repository.

APT.all-test.HauntBot.all.record-node.soar Maven / Gradle / Ivy

echo "\nLoading record-node"

# record all new connector nodes on the map
sp {all*propose*record-node
   (state  ^name << explore record-entryway move-to-xyz move-to-node >>
              ^io.input-link.objects.node )
   ( ^name 
           ^type << door connector window >>   # Changed from -none
           ^area-id)
  -( ^top-state.map.area.node.name )  #Don't record nodes I've already seen
-->
   ( ^operator  + >, =)
   ( ^name record-node
        ^node )
}

sp {all*propose*record-node*outside
   (state  ^name << explore record-entryway move-to-xyz move-to-node >>
              ^io.input-link.objects.node )
   ( ^name 
           ^area |Outside|
          -^area-id
           ^connect-heading {  >= 0 }
           ^type {  << door connector >> })
  -( ^top-state.map.area.node.name )  #Don't record nodes I've already seen
-->
   ( ^operator  + >, =)
   ( ^name record-node
        ^node )
}

## This handles nodes that should have area outside but don't
sp {all*propose*record-node*outside2
   (state  ^name << explore record-entryway move-to-xyz move-to-node >>
              ^io.input-link.objects.node )
   ( ^name 
           ^area |EntryNode|
          -^area-id
           ^connect-heading {  >= 0 }
           ^type {  << door connector window >> })
  -( ^top-state.map.area.node.name )  #Don't record nodes I've already seen
-->
   ( ^operator  + >, =)
   ( ^name record-node
        ^node )
}


##Record node trumps record entryway
sp {all*compare*record-node-beats-record-entryway
   (state  ^operator  +
                         +)
   ( ^name record-node)
   ( ^name record-entryway)
-->
   ( ^operator  > )
}

#Record a windownode
sp {all*apply*record-node*windownode
   (state  ^operator 
              ^top-state.map )
   ( ^name record-node
        ^node )
   ( ^position 
              ^name 
              ^area-name 
              ^area-id 
              ^type window)
   ( ^x 
          ^y 
          ^z )
-->
   (write (crlf) |Record windownode |  | at: | )
   ( ^node )
   ( ^position 
           ^type window
           ^name 
           ^area 
           ^area-name 
           ^visited 1)
   ( ^x 
             ^y 
             ^z )
}

##############################
#Record an entrynode
sp {all*apply*record-node*entrynode*0
   (state  ^operator 
              ^top-state )
   ( ^map 
         ^parameters.entry-node-displacement )
   ( ^name record-node
        ^node )
   ( ^position 
              ^name 
              ^area-id 
              ^area-name {  <> |Outside| }
              ^connect-heading 0
              ^type {  << door connector >> })
   ( ^x 
          ^y 
          ^z )
-->
   (write (crlf) |Record entrynode |  |, area: |  )
   ( ^node )
   ( ^position 
           ^derived yes
           ^name 
           ^type 
           ^area 
           ^area-name 
           ^visited 0
           ^connect-heading 0
           ^entryway-recorded *no*)
   ( ^x (-  )
             ^y 
             ^z )
}

sp {all*apply*record-node*entrynode*180
   (state  ^operator 
              ^top-state )
   ( ^map 
         ^parameters.entry-node-displacement )
   ( ^name record-node
        ^node )
   ( ^position 
              ^name 
              ^area-id 
              ^area-name {  <> |Outside| }
              ^connect-heading 180
              ^type {  << door connector >> })
   ( ^x 
          ^y 
          ^z )
-->
   (write (crlf) |Record entrynode |  |, area: | )
   ( ^node )
   ( ^position 
           ^derived yes
           ^name 
           ^type 
           ^area 
           ^area-name 
           ^visited 0
           ^connect-heading 180
           ^entryway-recorded *no*)
   ( ^x (+  )
             ^y 
             ^z )
}
sp {all*apply*record-node*entrynode*90
   (state  ^operator 
              ^top-state )
   ( ^map 
         ^parameters.entry-node-displacement )
   ( ^name record-node
        ^node )
   ( ^position 
              ^name 
              ^area-id 
              ^area-name {  <> |Outside| }
              ^connect-heading 90
              ^type {  << door connector >> })
   ( ^x 
          ^y 
          ^z )
-->
   (write (crlf) |Record entrynode |  |, area: |  )
   ( ^node )
   ( ^position 
           ^derived yes
           ^name 
           ^type 
           ^area 
           ^area-name 
           ^visited 0
           ^connect-heading 90
           ^entryway-recorded *no*)
   ( ^x 
             ^y (-  )
             ^z )
}
sp {all*apply*record-node*entrynode*270
   (state  ^operator 
              ^top-state )
   ( ^map 
         ^parameters.entry-node-displacement )
   ( ^name record-node
        ^node )
   ( ^position 
              ^name 
              ^area-id 
              ^area-name {  <> |Outside| }
              ^connect-heading 270
              ^type {  << door connector >> })
   ( ^x 
          ^y 
          ^z )
-->
   (write (crlf) |Record entrynode |  |, area: |  )
   ( ^node )
   ( ^position 
           ^derived yes
           ^name 
           ^type 
           ^area 
           ^area-name 
           ^visited 0
           ^connect-heading 270
           ^entryway-recorded *no*)
   ( ^x 
             ^y (+  )
             ^z )
}


################################################
#Record Outside entrynodes with a non-zero visit count
sp {all*apply*record-node*entrynode*outside
   (state  ^operator 
              ^top-state.map )
   ( ^name record-node
        ^node )
   ( ^position 
              ^name 
              ^area-name |Outside|
              ^area-id 
              ^connect-heading {  >= 0 }
              ^type {  << door connector >> })
   ( ^x 
          ^y 
          ^z )
-->
   #(write (crlf) |Record Outside entrynode |  | at: | )
   ( ^node )
   ( ^position 
           ^name 
           ^type 
           ^area 
           ^area-name 
           ^visited 1
           ^connect-heading 
           ^entryway-recorded *no*)
   ( ^x 
             ^y 
             ^z )
}

sp {all*apply*record-node*entrynode*outside2
   (state  ^operator 
              ^top-state.map )
   ( ^name record-node
        ^node )
   ( ^area )
   ( ^name |Outside|)
   ( ^position 
              ^name 
              ^area |EntryNode|
             -^area-id
              ^connect-heading {  >= 0 }
              ^type {  << door connector >> })
   ( ^x 
          ^y 
          ^z )
-->
   #(write (crlf) |Record Outside entrynode |  | at: | )
   ( ^node )
   ( ^position 
           ^name 
           ^type 
           ^area 
           ^area-name |Outside|
           ^visited 1
           ^connect-heading 
           ^entryway-recorded *no*)
   ( ^x 
             ^y 
             ^z )
}