]> git.jsancho.org Git - gacela.git/blobdiff - src/gacela.scm
Gacela as Guile modules.
[gacela.git] / src / gacela.scm
index f14b837bdd956ca859d84a9e70d2b2a7d1681cbd..d440c087399421842ae1a6b8bd16517c0566b7ac 100644 (file)
   (glLoadIdentity)
   #t)
 
-(define get-current-color #f)
-(define set-current-color #f)
-
-(let ((current-color '(1 1 1 1)))
-  (set! get-current-color
-       (lambda ()
-         current-color))
-
-  (set! set-current-color
-       (lambda* (red green blue #:optional (alpha 1))
-         (set! current-color (list red green blue alpha))
-         (glColor4f red green blue alpha))))
-
 
 ;;; Audio Subsystem
 
 
 (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)))