Skip to content

Commit

Permalink
Refactor tutorial 11
Browse files Browse the repository at this point in the history
  • Loading branch information
TatriX committed Aug 25, 2021
1 parent 7f9bb53 commit 401c62d
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 32 deletions.
63 changes: 32 additions & 31 deletions 11/tutorial-11.lisp → 11-clip-rendering-and-sprite-sheets.lisp
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
(defpackage #:sdl2-tutorial-11
(:use :common-lisp)
(:export :main))
(defpackage #:sdl2-tutorial-11-clip-rendering-and-sprite-sheets
(:use :cl)
(:export :run)
(:import-from :sdl2-tutorial-utils :asset-pathname))

(in-package :sdl2-tutorial-11)
(in-package :sdl2-tutorial-11-clip-rendering-and-sprite-sheets)

(defparameter *screen-width* 640)
(defparameter *screen-height* 480)
Expand All @@ -21,15 +22,16 @@
:accessor tex-texture
:initform nil)))

(defun load-texture-from-file (renderer filename)
(defun load-texture-from-file (renderer pathname)
(let ((tex (make-instance 'tex :renderer renderer)))
(with-slots (renderer texture width height) tex
(let ((surface (sdl2-image:load-image filename)))
(let ((surface (sdl2-image:load-image pathname)))
(setf width (sdl2:surface-width surface))
(setf height (sdl2:surface-height surface))
(sdl2:set-color-key surface :true (sdl2:map-rgb (sdl2:surface-format surface)
0 #xFF #xFF))
(setf texture (sdl2:create-texture-from-surface renderer surface))))
(setf texture (sdl2:create-texture-from-surface renderer surface))
(sdl2:free-surface surface)))
tex))

(defun render (tex x y &key clip)
Expand All @@ -45,46 +47,45 @@
(defmacro with-window-renderer ((window renderer) &body body)
`(sdl2:with-init (:video)
(sdl2:with-window (,window
:title "SDL2 Tutorial"
:title "SDL2 Tutorial 11"
:w *screen-width*
:h *screen-height*
:flags '(:shown))
(sdl2:with-renderer (,renderer ,window :index -1 :flags '(:accelerated))
,@body))))

(defun main()
(defun run ()
(with-window-renderer (window renderer)
(sdl2-image:init '(:png))
(let ((spritesheet-tex (load-texture-from-file renderer "11/spritesheet.png"))
(sprite-clips '(:top-left (0 0 100 100)
:top-right (100 0 100 100)
:bottom-left (0 100 100 100)
:bottom-right (100 100 100 100))))
(let ((spritesheet-tex (load-texture-from-file renderer (asset-pathname #P"assets/11/spritesheet.png")))
(top-left (sdl2:make-rect 0 0 100 100))
(top-right (sdl2:make-rect 100 0 100 100))
(bottom-left (sdl2:make-rect 0 100 100 100))
(bottom-right (sdl2:make-rect 100 100 100 100)))
(sdl2:with-event-loop (:method :poll)
(:quit () t)
(:idle ()
(sdl2:set-render-draw-color renderer #xFF #xFF #xFF #xFF)
(sdl2:render-clear renderer)

(let ((rect (apply #'sdl2::make-rect (getf sprite-clips :top-left))))
(render spritesheet-tex 0 0 :clip rect))
(render spritesheet-tex
0
0
:clip top-left)

(let ((rect (apply #'sdl2::make-rect (getf sprite-clips :top-right))))
(render spritesheet-tex
(- *screen-width* (sdl2:rect-width rect))
0
:clip rect))
(render spritesheet-tex
(- *screen-width* (sdl2:rect-width top-right))
0
:clip top-right)

(let ((rect (apply #'sdl2::make-rect (getf sprite-clips :bottom-left))))
(render spritesheet-tex
0
(- *screen-height* (sdl2:rect-height rect))
:clip rect))
(render spritesheet-tex
0
(- *screen-height* (sdl2:rect-height bottom-left))
:clip bottom-left)

(let ((rect (apply #'sdl2::make-rect (getf sprite-clips :bottom-right))))
(render spritesheet-tex
(- *screen-width* (sdl2:rect-width rect))
(- *screen-height* (sdl2:rect-height rect))
:clip rect))
(render spritesheet-tex
(- *screen-width* (sdl2:rect-width bottom-right))
(- *screen-height* (sdl2:rect-height bottom-right))
:clip bottom-right)

(sdl2:render-present renderer))))))
File renamed without changes
2 changes: 1 addition & 1 deletion sdl2-tutorial.asd
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
(:file "08-geometry-rendering")
(:file "09-the-viewport")
(:file "10-color-keying")
(:file "11/tutorial-11")
(:file "11-clip-rendering-and-sprite-sheets")
(:file "12/tutorial-12")
(:file "13/tutorial-13")
(:file "14/tutorial-14")
Expand Down

0 comments on commit 401c62d

Please sign in to comment.