X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgacela_mobs.scm;h=6b9d6997f42e402576435c6aaaf5f494d6639aa6;hb=f150638c6d3fe992a1557d36d3e1858e9a4f395c;hp=555ce0f185add81cf7b76d0a967271e1e536337c;hpb=4487eb2a881092ebebd5496e6425fa8f07546c0f;p=gacela.git diff --git a/src/gacela_mobs.scm b/src/gacela_mobs.scm index 555ce0f..6b9d699 100755 --- a/src/gacela_mobs.scm +++ b/src/gacela_mobs.scm @@ -57,12 +57,24 @@ (lambda-mob ,attr ,@look)))) (define-macro (lambda-mob attr . look) - (let ((look-code (map (lambda (x) (if (string? x) `(draw-texture ,x) x)) look))) - `(let ((attr ',attr)) - (lambda (option) - (case option - ((#:render) - (glPushMatrix) - ,@look-code + (define (process-look look) + (cond ((null? look) (values '() '())) + (else + (let ((line (car look))) + (receive (lines images) (process-look (cdr look)) + (cond ((string? line) + (cons `(draw-texture ,line) lines) + (cons line images)) + (else + (cons line lines))) + (values lines images)))))) + + (receive (look-lines look-images) (process-look look) + `(let ((attr ',attr)) + (lambda (option) + (case option + ((#:render) + (glPushMatrix) + ,@look-lines ; ,@(map (lambda (x) (if (string? x) `(draw-texture ,x) x)) look) - (glPopMatrix))))))) + (glPopMatrix)))))))