]> git.jsancho.org Git - gacela.git/blobdiff - src/gacela.scm
(no commit message)
[gacela.git] / src / gacela.scm
index d99439488d28d7d34695de8c3b5e4bf4532864b5..6be5ee8a5d178c8eb213af34899bbbdfcd730276 100644 (file)
 
 
 (define-macro (run-game . code)
-  `(let ((game-function (lambda () (begin ,@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-function (lambda () #f)))
   (set! game-loop
        (lambda ()
          (set! running #t)
-;        (do () ((quit?))
-         (do () (#f)
+         (quit? #f)
+         (do () ((quit?))
            (init-frame-time)
 ;          (check-connections)
 ;          (eval-from-clients)
-;          (process-events)
-;          (cond ((not (quit?))
-           (cond ((not #f))
-;                (glClear (+ GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT))
-;                (to-origin)
-;                (refresh-active-objects)
-;                (if (functionp game-code) (funcall game-code))
-;                (render-objects)
-                 (SDL_GL_SwapBuffers)
-                 (delay-frame))))
-       (set! running #f)))
+           (process-events)
+           (cond ((not (quit?))
+                  (glClear (+ GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT))
+                  (to-origin)
+                  (cond ((reload-mobs?)
+                         (set! mobs-function (get-mobs-function))
+                         (mobs-reloaded)))
+                  (if (procedure? game-code) (game-code))
+                  (mobs-function)
+                  (SDL_GL_SwapBuffers)
+                  (delay-frame))))
+         (set! running #f)))
 
   (set! game-running?
        (lambda ()
          (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))