X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgacela.scm;h=248f1835ffbbf14201cc579cc958c95db6000e14;hb=4487eb2a881092ebebd5496e6425fa8f07546c0f;hp=d99439488d28d7d34695de8c3b5e4bf4532864b5;hpb=46487d7bdbf43bac830d5310ecdb8c07feb9163f;p=gacela.git diff --git a/src/gacela.scm b/src/gacela.scm index d994394..248f183 100644 --- a/src/gacela.scm +++ b/src/gacela.scm @@ -208,7 +208,9 @@ (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?)) @@ -218,26 +220,26 @@ (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) -; (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 ((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-running? (lambda () @@ -248,11 +250,10 @@ (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))