X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgacela.scm;h=248f1835ffbbf14201cc579cc958c95db6000e14;hb=4487eb2a881092ebebd5496e6425fa8f07546c0f;hp=54691562bfe46ca5fa977c3111e617ef384bc0a5;hpb=e5fb1dc4dd17359c5769e4be4ece63df2c8bbade;p=gacela.git diff --git a/src/gacela.scm b/src/gacela.scm index 5469156..248f183 100644 --- a/src/gacela.scm +++ b/src/gacela.scm @@ -208,7 +208,9 @@ (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?)) @@ -218,21 +220,23 @@ (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))) @@ -246,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))