]> git.jsancho.org Git - gacela.git/blobdiff - src/gacela.scm
No more events engine, map-mobs will do all the work
[gacela.git] / src / gacela.scm
index 1d963c6772b29a5f1924d84f0aef14d4890c97d4..bfb4d123d47a9d896bb4cdc8d9c615845f5bacc6 100644 (file)
          (set! audio #f))))
 
 
+;;; Resources Cache
+
+(define resources-cache (make-weak-value-hash-table))
+
+(define get-resource-from-cache #f)
+(define insert-resource-into-cache #f)
+
+(let ()
+  (set! get-resource-from-cache
+       (lambda (key)
+         (hash-ref resources-cache key)))
+
+  (set! insert-resource-into-cache
+       (lambda (key res)
+         (hash-set! resources-cache key res))))
+
 ;;; GaCeLa Functions
 
 (define set-frames-per-second #f)
 (define init-frame-time #f)
+(define get-frame-time #f)
 (define delay-frame #f)
 
 (let ((time 0) (time-per-frame (/ 1000.0 *frames-per-second*)))
        (lambda ()
          (set! time (SDL_GetTicks))))
 
+  (set! get-frame-time
+       (lambda ()
+         time))
+
   (set! delay-frame
        (lambda ()
          (let ((frame-time (- (SDL_GetTicks) time)))
 (define game-running? #f)
 (define set-game-code #f)
 
-(let ((running #f) (game-code #f) (mobs '()))
+(let ((running #f) (game-code #f))
   (set! game-loop
        (lambda ()
-         (set! mobs (get-active-mobs))
+         (refresh-active-mobs)
          (set! running #t)
          (quit! #f)
          (do () ((quit?))
                   (cond ((video-mode-on?)
                          (glClear (+ GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT))
                          (to-origin)))
-                  (cond ((mobs-changed?) (set! mobs (get-active-mobs))))
+                  (refresh-active-mobs)
                   (if (procedure? game-code)
                       (catch #t
                              (lambda () (game-code))
                              (lambda (key . args) #f)))
                   (cond ((video-mode-on?)
-                         (run-mobs mobs)
+                         (run-mobs)
                          (SDL_GL_SwapBuffers)))
                   (delay-frame))))
          (set! running #f)))