branch: elpa/pacmacs
commit af3407e6765b9adc96dc8b98c5192108beb1882a
Author: rexim <[email protected]>
Commit: rexim <[email protected]>
Sprite sheets as part of anim object. Close #24
---
pacman-anim.el | 15 ++++++++++-----
pacman.el | 14 ++++++--------
2 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/pacman-anim.el b/pacman-anim.el
index 832338cb11..8dedc4b128 100644
--- a/pacman-anim.el
+++ b/pacman-anim.el
@@ -34,17 +34,22 @@
(require 'json)
-(defun pacman-make-anim (frames)
+(require 'pacman-resources)
+
+(defun pacman-make-anim (frames sprite-sheet)
(list :frames frames
- :current-frame 0))
+ :current-frame 0
+ :sprite-sheet sprite-sheet))
-(defun pacman-load-anim (aseprite-json-file)
+(defun pacman-load-anim (aseprite-json-file sprite-sheet-file)
(let* ((aseprite-json (json-read-file aseprite-json-file))
- (aseprite-frames (cdr (assoc 'frames aseprite-json))))
+ (aseprite-frames (cdr (assoc 'frames aseprite-json)))
+ (sprite-sheet (pacman-load-resource sprite-sheet-file)))
(pacman-make-anim
(mapcar 'pacman-convert-aseprite-frame
(sort aseprite-frames
- 'pacman-compare-aseprite-frames)))))
+ 'pacman-compare-aseprite-frames))
+ sprite-sheet)))
(defun pacman-aseprite-frame-get-order (aseprite-frame)
(let ((frame-name (symbol-name (car aseprite-frame))))
diff --git a/pacman.el b/pacman.el
index b80c69f580..ec140fa051 100644
--- a/pacman.el
+++ b/pacman.el
@@ -52,11 +52,8 @@
(list :row 0
:column 0
:direction 'right
- :animation (pacman-load-anim "sprites/Red-Ghost-Down.json")))
-
-(defvar pacman-resource nil)
-(setq pacman-resource
- (pacman-load-resource "sprites/Red-Ghost-Down.png"))
+ :animation (pacman-load-anim "sprites/Red-Ghost-Up.json"
+ "sprites/Red-Ghost-Up.png")))
(define-derived-mode pacman-mode special-mode "pacman-mode"
(define-key pacman-mode-map (kbd "<up>") 'pacman-up)
@@ -98,13 +95,14 @@
(defun pacman-render-state ()
(let* ((player-anim (plist-get pacman-player-state :animation))
- (player-vector (pacman-anim-get-frame player-anim)))
+ (player-vector (pacman-anim-get-frame player-anim))
+ (player-sprite-sheet (plist-get player-anim :sprite-sheet)))
(dotimes (row pacman-board-height)
(dotimes (column pacman-board-width)
(if (and (equal row (plist-get pacman-player-state :row))
(equal column (plist-get pacman-player-state :column)))
- (pacman-insert-image pacman-resource player-vector)
- (pacman-insert-image pacman-resource player-vector)))
+ (pacman-insert-image player-sprite-sheet player-vector)
+ (pacman-insert-image player-sprite-sheet player-vector)))
(insert "\n"))))
(defun pacman-up ()