]> git.jsancho.org Git - gacela.git/commitdiff
Direct access to mob properties.
authorjsancho <devnull@localhost>
Sun, 15 Apr 2012 12:23:56 +0000 (12:23 +0000)
committerjsancho <devnull@localhost>
Sun, 15 Apr 2012 12:23:56 +0000 (12:23 +0000)
src/gacela.scm

index d027cfa37b8c360bbfcdeb28d97a74f979a3d974..1c3855bfbb49518fb04fe7a0f91f657d4b05262b 100644 (file)
 
 (define current-mob-id #f)
 
+(define translate-mob translate)
+
 (define (get-current-mob-id)
   current-mob-id)
 
          (save-data)
          saved-data)
         (else
-         (save-data)
-         (let ((res (,fun-name mob-id mob-data)))
-           (set! mob-z-index (car res))
-           (set! mob-data (cadr res))))))))
+         (cond ((keyword? option)
+                (assoc-ref saved-data (keyword->symbol option)))
+               (else
+                (save-data)
+                (let ((res (,fun-name mob-id mob-data)))
+                  (set! mob-z-index (car res))
+                  (set! mob-data (cadr res))))))))))
 
 (define-macro (define-mob-function head . body)
   (let ((fun-name (car head))
 
 ;;; Functions for checking mobs (collisions and more)
 
-(define translate-mob translate)
-
 (define (map-mobs fun type)
   (let ((mobs (filter (lambda (m) (and (eq? (m 'get-type) type) (not (eq? (m 'get-mob-id) (get-current-mob-id))))) (get-active-mobs))))
     (map (lambda (m) (fun (m 'get-data))) mobs)))
          (let ,(map (lambda (a) `(,(car a) (assoc-ref m ',(cadr a)))) attr)
            ,@body))
        ',type))))
+
+
+;;; Scenes
+
+(define-macro (define-scene name . body)
+  `(define (,name)
+     ,@body))