]> git.jsancho.org Git - gacela.git/commitdiff
Images in development
authorJavier Sancho <jsf@jsancho.org>
Wed, 28 Sep 2016 15:36:18 +0000 (17:36 +0200)
committerJavier Sancho <jsf@jsancho.org>
Wed, 28 Sep 2016 15:36:18 +0000 (17:36 +0200)
gacela/game.scm
gacela/image.scm
gacela/scene.scm

index 0b0981dec6ed25eff1565991e78c6e4727644392..dad04126bbd1812ea0ef7b92f4810fb49d33ab9f 100644 (file)
@@ -23,7 +23,8 @@
   #:use-module ((sdl2 video) #:prefix sdl2:)
   #:use-module (gl)
   #:use-module (srfi srfi-11)
-  #:export (run-game-loop))
+  #:export (play-game
+           %sdl-renderer))
 
 
 ;;; Based on Sly code. Thank you so much!!
@@ -117,8 +118,6 @@ milliseconds of the last iteration of the game loop."
          (lambda (signum)
            (stop-game-loop)))
        (set! %root-scene scene)
-       (init-window)
-       (open-window)
        (game-loop (sdl2:sdl-ticks) 0))
       (lambda (cont callback)
        (when (procedure? callback)
@@ -129,11 +128,13 @@ milliseconds of the last iteration of the game loop."
   (abort-to-prompt 'game-loop-prompt #f))
 
 (define %sdl-window #f)
+(define %sdl-renderer #f)
 (define %gl-context #f)
 
 (define (init-window)
   (sdl2:sdl-init)
   (set! %sdl-window (sdl2:make-window #:opengl? #t #:show? #t))
+  (set! %sdl-renderer (sdl2:make-renderer %sdl-window))
   (sdl2:set-gl-attribute! 'context-major-version 3)
   (sdl2:set-gl-attribute! 'context-minor-version 2)
   (sdl2:set-gl-attribute! 'double-buffer 1)
@@ -146,3 +147,13 @@ milliseconds of the last iteration of the game loop."
   (sdl2:set-window-size! %sdl-window resolution)
   (sdl2:set-window-fullscreen! %sdl-window fullscreen?)
   (sdl2:show-window! %sdl-window))
+
+(define (close-window)
+  (sdl2:hide-window! %sdl-window)
+  (sdl2:sdl-quit))
+
+(define (play-game scene)
+  (init-window)
+  (open-window)
+  (run-game-loop scene)
+  (close-window))
index 6a9710101009f7014360f0ca2ab21c69f2fa3655..1fdeaf61441826351c459f4c1ca1c18bef0dfa0b 100644 (file)
 
 (define-module (gacela image)
   #:use-module (gacela scene)
-  #:use-module ((sdl2 surface) #:prefix sdl2:)
+  #:use-module (gacela game)
+  #:use-module ((sdl2 image) #:prefix sdl2:)
+  #:use-module ((sdl2 render) #:prefix sdl2:)
   #:export (import-bitmap
            move-xy))
 
 (define-syntax-rule (import-bitmap filename)
   (make-scene
    "bitmap"
-   (let ((surface (sdl2:load-bmp filename)))
+   (let ((image (sdl2:load-image filename))
+        (texture #f))
      (let ((a 0))
        (lambda ()
-        (set! a (+ a 1))
-        (format #t "Steps: ~a~%" a))))))
+        (if (not texture)
+            (set! texture (sdl2:surface->texture %sdl-renderer image)))
+        ;; (set! a (+ a 1))
+        ;; (format #t "~a steps with texture ~a~%" a texture))))))
+        (sdl2:clear-renderer %sdl-renderer)
+        (sdl2:render-copy %sdl-renderer texture)
+        (sdl2:present-renderer %sdl-renderer))))))
 
 (define-syntax-rule (move-xy x y scene)
   (make-scene
index 9145907347b4e505a935fbb17d2614c5d37463fc..62b1a1e8f5cb996cca44c48056c6a91939264401 100644 (file)
@@ -43,5 +43,5 @@
   ((scene-procedure scene)))
 
 (define (run-scene scene)
-  (run-game-loop
+  (play-game
    (scene-procedure scene)))