]> git.jsancho.org Git - gacela.git/blobdiff - src/gacela.scm
(no commit message)
[gacela.git] / src / gacela.scm
index 54691562bfe46ca5fa977c3111e617ef384bc0a5..248f1835ffbbf14201cc579cc958c95db6000e14 100644 (file)
 
 
 (define-macro (run-game . code)
-  `(let ((game-function (lambda () ,@code)))
+  `(let ((game-function ,(if (null? code)
+                            `(lambda () #f)
+                            `(lambda () ,@code))))
      (init-video-mode)
      (set-game-code game-function)
      (cond ((not (game-running?))
 (define game-running? #f)
 (define set-game-code #f)
 
-(let ((running #f) (game-code #f))
+(let ((running #f) (game-code #f) (mobs '()))
   (set! game-loop
        (lambda ()
+         (set! mobs (get-active-mobs))
          (set! running #t)
+         (quit? #f)
          (do () ((quit?))
            (init-frame-time)
-           (check-connections)
-           (eval-from-clients)
+;          (check-connections)
+;          (eval-from-clients)
            (process-events)
            (cond ((not (quit?))
                   (glClear (+ GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT))
                   (to-origin)
-                  (refresh-active-objects)
-                  (if (functionp game-code) (funcall game-code))
-                  (render-objects)
+                  (cond ((mobs-changed?) (set! mobs (get-active-mobs))))
+                  (if (procedure? game-code) (game-code))
+                  (process-mobs mobs)
                   (SDL_GL_SwapBuffers)
                   (delay-frame))))
          (set! running #f)))
          (set! game-code game-function))))
 
 (define (quit-game)
-;  (free-all-resources)
    (quit-audio)
    (quit-video-mode)
 ;  (quit-all-mobs)
 ;   (kill-all-objects)
-;  (clear-events)
-;  (quit-events)
+;   (clear-events)
+   (quit-events)
    (quit-sdl))