]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Tue, 31 May 2011 19:48:07 +0000 (19:48 +0000)
committerjsancho <devnull@localhost>
Tue, 31 May 2011 19:48:07 +0000 (19:48 +0000)
src/gacela_mobs.scm

index c0037f1053a5ab5416848c671623d07f2fdcd31c..de527bdf7f3a93ad28f718d5550a58fa901fa90c 100755 (executable)
 
 ;;; Actions for mobs
 
 
 ;;; Actions for mobs
 
+(define-macro (define-action name attr . code)
+  `(define (,name mob-attr)
+     (let ,attr
+       ,@code
+       ,(cons 'begin (map #'attribute-save (reverse attr)))
+       mob-attr)))
+
+(defun attribute-save (attribute)
+  (let* ((name (cond ((listp attribute) (car attribute))
+                    (t attribute)))
+        (pname (attribute-name name)))
+    `(setf (getf object-attr ,pname) ,name)))
+
 
 
 ;;; Mob Factory
 
 
 ;;; Mob Factory