X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Fnvm%2Fagent.lisp;h=ee1d97136ad72593b48c51fa2db6e1f47babbb04;hp=e26186e206d288f99816bf52d490e646c422f932;hb=97c390f3cee5094fa6795acd4b25b7598d5dd1bd;hpb=d5b1d2277655b8771cc22aba7828e0b373b7d024 diff --git a/src/main/nvm/agent.lisp b/src/main/nvm/agent.lisp index e26186e..ee1d971 100644 --- a/src/main/nvm/agent.lisp +++ b/src/main/nvm/agent.lisp @@ -36,7 +36,7 @@ DESCRIPTION: (defmethod set-agent-value-inner ((,agent ,type) (,var (eql ,symb)) ,new-val) (setf (,accessor ,agent) ,new-val))))) ; Don't want the setter for :who -(defmethod agent-value-inner ((agent turtle) (var (eql :who))) (turtle-who agent)) +(defmethod agent-value-inner ((turtle turtle) (var (eql :who))) (turtle-who turtle)) (defagent-value patch :pcolor patch-color) @@ -44,3 +44,13 @@ DESCRIPTION: (defagent-value turtle :label) (defagent-value turtle :label-color) (defagent-value turtle :size) + +(defmethod agent-value-inner ((turtle turtle) var) + (when (not (find var *turtles-own-vars*)) (error "~S is not a turtle variable" var)) + (or (getf (turtle-own-vars turtle) var) 0d0)) + +(defmethod set-agent-value-inner ((turtle turtle) var new-val) + (when (not (find var *turtles-own-vars*)) (error "~S is not a turtle variable" var)) + (if (getf (turtle-own-vars turtle) var) + (setf (getf (turtle-own-vars turtle) var) new-val) + (setf (turtle-own-vars turtle) (append (list var new-val) (turtle-own-vars turtle)))))