]> git.jsancho.org Git - gacela.git/commitdiff
Catching errors from main loop and square meshes
authorJavier Sancho <jsf@jsancho.org>
Mon, 24 Sep 2012 19:07:37 +0000 (21:07 +0200)
committerJavier Sancho <jsf@jsancho.org>
Mon, 24 Sep 2012 19:07:37 +0000 (21:07 +0200)
src/gacela.scm
src/video.scm

index e2be9a8c5091dd992a49420642b15ced35387927..b9d13160dccac4bce3695d60fb0922e657d3393f 100644 (file)
 ;                (run-mobs)
 ;                (run-extensions)
                  (if game-loop-procedure
-                     (set! game-elements (game-loop-procedure game-elements)))
+                     (catch #t
+                            (lambda () (set! game-elements (game-loop-procedure game-elements)))
+                            (lambda (key . args) #f)))
                  (process-game-elements game-elements)
                  (flip-screen)
                  (delay-frame)
-                 (loop)))))))
+                 (loop game-elements)))))))
 
 (define (game-running?)
   game-loop-flag)
   (cond ((not (list? elements))
         (process-game-elements (list elements)))
        (else
-        (draw-meshes (filter (lambda (e) (mesh? e)) elements))
-)))
+        (draw-meshes (filter (lambda (e) (mesh? e)) elements)))))
+
+(define (draw-meshes meshes)
+  (cond ((null? meshes) #t)
+       (else
+        (catch #t
+               (lambda () (mesh-draw (car meshes)))
+               (lambda (key . args) #f))
+        (draw-meshes (cdr meshes)))))
 
 ;;; Extensions to main loop
 
index e65d6bdcecaeb787b003764932237c03663a718c..0e6a51345dfd9a6337a27a79bb7f83ad69e12f26 100644 (file)
               #:texture-coord texture-coord
               #:color color)))
 
-(define* (draw-square #:key (size 1) texture color)
+(define* (draw-square size #:key texture color)
   (draw-rectangle size size #:texture texture #:color color))
 
 (define* (draw-cube #:key (size 1)
         (mesh-properties-set! m (list ,@(map (lambda (a) `(cons ',a ,a)) (names-arguments args))))
         m))))
 
+(define-mesh (square size #:key texture color)
+  (draw-square size #:texture texture #:color color))
+
 
 (module-map (lambda (sym var)
              (if (not (eq? sym '%module-public-interface))