diff options
Diffstat (limited to 'assets.lisp')
-rw-r--r-- | assets.lisp | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/assets.lisp b/assets.lisp index 0adf417..37d05d3 100644 --- a/assets.lisp +++ b/assets.lisp @@ -1,14 +1,51 @@ +;;;; assets.lisp (in-package #:the-price-of-a-cup-of-coffee) +;;; Utility Functions + +(defun make-source-rects (tile-defs) + "Accepts a TILE-DEFS list and adds an SDL2:RECT instance to each keyed to :RECT" + (mapcar + (lambda (tl) + (list* :rect + (sdl2:make-rect (getf tl :x) + (getf tl :y) + (getf tl :width) + (getf tl :height)) + tl)) + tile-defs)) + +(defun find-tile-rect (tile-defs name) + "Return the rect for the tile with NAME in TILE-DEFS list." + (let-when (tl (find name tile-defs + :key (lambda (tl) (getf tl :name)) + :test #'string-equal)) + (getf tl :rect))) + +(defun select-tile-rects (tile-defs &rest names) + (map 'vector ($ #'find-tile-rect tile-defs _) names)) + + +(defun create-sprite-faces (defs) + (list :facing-down (select-tile-rects defs "front") + :walking-down (select-tile-rects defs "front" "walkforward1" "front" "walkforward2") + :facing-up (select-tile-rects defs "back") + :walking-up (select-tile-rects defs "back" "walkback1" "back" "walkback2") + :facing-left (select-tile-rects defs "profileleft") + :walking-left (select-tile-rects defs "profileleft" "walkleft1" "profileleft" "walkleft2") + :facing-right (select-tile-rects defs "profileright") + :walking-right (select-tile-rects defs "profileright" "walkright1" "profileright" "walkright1"))) + +;;; Nance Assets (defparameter +nance-sheet-image+ "assets/Nance.png") -(defparameter +nance-tiles+ +(defvar *nance-tile-defs* '((:NAME "Back" :X 256 :Y 128 :WIDTH 64 :HEIGHT 128) (:NAME "Front" :X 320 :Y 0 :WIDTH 64 :HEIGHT 128) - (:NAME "ProfileLeft" :X 192 :Y 128 :PATH :WIDTH 64 :HEIGHT 128) - (:NAME "ProfileRight" :X 256 :Y 0 :PATH :WIDTH 64 :HEIGHT 128) + (:NAME "ProfileLeft" :X 192 :Y 128 :WIDTH 64 :HEIGHT 128) + (:NAME "ProfileRight" :X 256 :Y 0 :WIDTH 64 :HEIGHT 128) (:NAME "WalkBack1" :X 64 :Y 128 :WIDTH 64 :HEIGHT 128) (:NAME "WalkBack2" :X 128 :Y 128 :WIDTH 64 :HEIGHT 128) (:NAME "WalkForward1" :X 0 :Y 256 :WIDTH 64 :HEIGHT 128) @@ -19,3 +56,6 @@ (:NAME "WalkRight2" :X 0 :Y 0 :WIDTH 64 :HEIGHT 128))) + + + |