From 111f4d37f1a2f37a84468842737f2eebb8ee4402 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 20 May 2024 12:15:39 -0400 Subject: [PATCH] Add support for more objects to map editor. --- Makefile | 1 + assets/sounds/exit.wav | Bin 0 -> 98100 bytes assets/sounds/pickup.wav | Bin 0 -> 56544 bytes game.scm | 27 ++++----- modules/game/actors.scm | 58 ++++++------------ modules/game/level.scm | 40 +++++++++++++ modules/game/levels/level-1.tmx | 18 ++++-- modules/game/levels/tiles.tsx | 11 +++- scripts/compile-map.scm | 103 +++++++++++++++++++------------- 9 files changed, 151 insertions(+), 107 deletions(-) create mode 100644 assets/sounds/exit.wav create mode 100644 assets/sounds/pickup.wav create mode 100644 modules/game/level.scm diff --git a/Makefile b/Makefile index d604e0d..ff2f9fd 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ modules = \ modules/dom/media.scm \ modules/dom/window.scm \ modules/game/actors.scm \ + modules/game/level.scm \ modules/game/tileset.scm \ modules/goblins/abstract-types.scm \ modules/goblins/core.scm \ diff --git a/assets/sounds/exit.wav b/assets/sounds/exit.wav new file mode 100644 index 0000000000000000000000000000000000000000..60f704d3b6afafb8257bdcad62675b48704fc773 GIT binary patch literal 98100 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%0DcK*ve3` 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 SRP4QDKOg(aPv8CDfBS#Vxf{d) literal 0 HcmV?d00001 diff --git a/assets/sounds/pickup.wav b/assets/sounds/pickup.wav new file mode 100644 index 0000000000000000000000000000000000000000..7810e7b5060ba9249419acb6ca0ce4d0aeb251cf GIT binary patch literal 56544 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 tile-width) (inexact->exact tile-height))) -(define* (load-sound-effect name #:key (volume 0.5)) +(define* (load-sound-effect name #:key (volume 0.25)) (let ((audio (make-audio (string-append "assets/sounds/" name ".wav")))) (set-media-volume! audio volume) audio)) @@ -62,6 +63,7 @@ (define audio:push (load-sound-effect "push")) (define audio:undo (load-sound-effect "undo")) (define audio:no (load-sound-effect "no")) +(define audio:exit (load-sound-effect "exit")) ;; Game state (define *actormap* (make-whactormap)) @@ -73,8 +75,6 @@ (define *level* #f) ;; Latest representation of all actors in level (define *grid* #f) -;; Background tile layer. -(define *background* #f) (define *snapshots* '()) (define (clear-snapshots!) @@ -90,25 +90,23 @@ (media-play audio:undo)))) (define (update-grid!) - (set! *grid* ($ *level* 'describe))) + (set! *grid* ($ (level-actor *level*) 'describe))) (define (reset-game!) (set! *actormap* (make-whactormap)) (clear-snapshots!) (with-goblins - (call-with-values load-level-1 - (lambda (background level) - (set! *background* background) - (set! *level* level))) + (set! *level* (load-level-1)) (update-grid!))) ;; Update loop (define (move-player dir) (save-snapshot!) (with-goblins - (match ($ *level* 'move-player dir) + (match ($ (level-actor *level*) 'move-player dir) ('bump (media-play audio:bump)) ('push (media-play audio:push)) + ('exit (media-play audio:exit)) (_ #f)) (update-grid!))) @@ -156,7 +154,7 @@ (_ #f))) (define (draw-clock-emitter x y) - (draw-tile context tileset 2 x y)) + (draw-tile context tileset 48 x y)) (define (draw-object x y obj) (and obj @@ -171,7 +169,7 @@ (('clock-emitter) (draw-clock-emitter x y)))))) (define (draw-background) - (let* ((bv *background*) + (let* ((bv (level-background *level*)) (len (bytevector-length bv))) (let lp ((i 0)) (when (< i len) @@ -210,6 +208,7 @@ (define (on-key-down event) (let ((key (keyboard-event-code event))) + (pk 'key-down key) (cond ((string=? key key:left) (move-player 'left)) @@ -225,10 +224,6 @@ ((string=? key key:confirm) (reset-game!))))) -(define (on-key-up event) - (let ((key (keyboard-event-code event))) - (pk 'key-up key))) - ;; Canvas and event loop setup (define canvas (get-element-by-id "canvas")) (define context (get-context canvas "2d")) @@ -256,8 +251,6 @@ (procedure->external (lambda (_) (resize-canvas)))) (add-event-listener! (current-document) "keydown" (procedure->external on-key-down)) -(add-event-listener! (current-document) "keyup" - (procedure->external on-key-up)) (resize-canvas) (request-animation-frame draw-callback) (timeout update-callback dt) diff --git a/modules/game/actors.scm b/modules/game/actors.scm index 1a9b370..835bd83 100644 --- a/modules/game/actors.scm +++ b/modules/game/actors.scm @@ -1,8 +1,12 @@ (define-module (game actors) #:use-module (goblins core) - #:use-module (hoot bytevectors) #:use-module (ice-9 match) #:export (^cell + ^exit + ^wall + ^block + ^clock-emitter + ^player ^level)) (define* (^cell bcom #:optional val) @@ -17,7 +21,7 @@ (('wire-state) #f) (('set-wire-state) #f) (('describe) '(exit)) - (('collide) 'goal))) + (('collide) 'exit))) (define (^wall bcom type) (match-lambda* @@ -68,8 +72,9 @@ (('wire-state) #f) (('describe) '(player)))) -(define (^level bcom width height objects) +(define (^level bcom width height) (define player (spawn ^player)) + ;; TODO: Move this into the player actor. (define player-coords (spawn ^cell)) (define (make-grid) (make-vector (* width height))) @@ -108,7 +113,11 @@ (occupant (match ($ occupant 'collide) ('bump 'bump) - ('goal (pk 'GOAL)) + ('exit + ($ old-cell #f) + ($ cell player) + ($ player-coords (vector x y)) + 'exit) ('push (let ((next-cell (grid-ref grid (wrap-x (+ x dx)) (wrap-y (+ y dy))))) (match ($ next-cell) @@ -174,42 +183,6 @@ (lambda (x y) (grid-set! grid x y (spawn ^cell)))) - ;; TODO: actually write levels - (warp-player 10 8) - - ;; Parsed packed object data and spawn objects. - (let ((len (bytevector-length objects))) - (let lp ((i 0)) - (when (< i len) - (let ((x (bytevector-u8-ref objects i)) - (y (bytevector-u8-ref objects (+ i 1))) - (obj (match (bytevector-u8-ref objects (+ i 2)) - (1 (spawn ^wall 'brick)) - (id (error "invalid level object" id))))) - ($ (grid-ref grid x y) obj)) - (lp (+ i 3))))) - - ($ (grid-ref grid 3 7) (spawn ^exit)) - - ($ (grid-ref grid 4 3) (spawn ^clock-emitter 3)) - ($ (grid-ref grid 5 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 6 5) (spawn ^block 'copper)) - ($ (grid-ref grid 7 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 8 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 9 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 10 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 11 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 12 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 13 2) (spawn ^wall 'copper)) - ($ (grid-ref grid 13 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 13 4) (spawn ^wall 'copper)) - ($ (grid-ref grid 14 2) (spawn ^wall 'copper)) - ($ (grid-ref grid 14 4) (spawn ^wall 'copper)) - ($ (grid-ref grid 15 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 16 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 17 3) (spawn ^wall 'copper)) - ($ (grid-ref grid 18 3) (spawn ^wall 'copper)) - (match-lambda* (('describe) (let ((grid* (make-grid))) @@ -220,6 +193,11 @@ (#f #f) (refr ($ refr 'describe)))))) grid*)) + (('set-object x y obj) + ($ (grid-ref grid x y) obj)) + ;; TODO: Move to player actor + (('warp-player x y) + (warp-player x y)) (('move-player dir) (define result (match dir diff --git a/modules/game/level.scm b/modules/game/level.scm new file mode 100644 index 0000000..f8ef450 --- /dev/null +++ b/modules/game/level.scm @@ -0,0 +1,40 @@ +(define-module (game level) + #:use-module (game actors) + #:use-module (goblins core) + #:use-module (hoot bytevectors) + #:use-module (ice-9 match) + #:use-module (srfi srfi-9) + #:export (make-level + level? + level-background + level-actor)) + +;; Client-side rendering info coupled with level actor that contains +;; game state. +(define-record-type + (%make-level background actor) + level? + (background level-background) + (actor level-actor)) + +(define (make-level width height background objects) + (let ((level* (spawn ^level width height))) + ;; Parsed packed object data and spawn objects. + (let ((len (bytevector-length objects))) + (let lp ((i 0)) + (when (< i len) + (let ((x (bytevector-u8-ref objects i)) + (y (bytevector-u8-ref objects (+ i 1))) + (id (bytevector-u8-ref objects (+ i 2)))) + (if (= id 3) ; player-spawn + ($ level* 'warp-player x y) + (let ((obj (match id + (1 (spawn ^wall 'brick)) + (2 (spawn ^wall 'copper)) + (4 (spawn ^exit)) + (5 (spawn ^block 'copper)) + (6 (spawn ^clock-emitter 4)) + (id (error "invalid level object" id))))) + ($ level* 'set-object x y obj)))) + (lp (+ i 3))))) + (%make-level background level*))) diff --git a/modules/game/levels/level-1.tmx b/modules/game/levels/level-1.tmx index 39c4e24..d3b3bc1 100644 --- a/modules/game/levels/level-1.tmx +++ b/modules/game/levels/level-1.tmx @@ -1,14 +1,14 @@ - + 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, 23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23, -23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23, -23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, -23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, -23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, +23,23,24,24,24,24,24,24,24,28,24,24,24,24,24,24,24,24,23,23, +23,24,24,24,24,24,24,24,24,24,24,24,3,3,24,24,24,24,24,23, +23,49,3,3,3,3,24,3,3,3,3,3,3,24,3,3,3,3,3,23, +23,24,24,24,24,24,24,24,24,24,24,24,3,3,24,24,24,24,24,23, 23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, 23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, 23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, @@ -20,4 +20,12 @@ 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23 + + + + + + + + diff --git a/modules/game/levels/tiles.tsx b/modules/game/levels/tiles.tsx index 2e52cd6..75f1cf3 100644 --- a/modules/game/levels/tiles.tsx +++ b/modules/game/levels/tiles.tsx @@ -1,9 +1,16 @@ - + - + + + + + + + + diff --git a/scripts/compile-map.scm b/scripts/compile-map.scm index 7c83542..4468a0b 100644 --- a/scripts/compile-map.scm +++ b/scripts/compile-map.scm @@ -93,9 +93,10 @@ (loop (+ i 1) (+ t d))))))) (define-record-type - (make-tile id image animation properties) + (make-tile id type image animation properties) tile? (id tile-id) + (type tile-type) (image tile-image) (animation tile-animation) (properties tile-properties)) @@ -141,9 +142,10 @@ ((= i (vector-length tiles))) (let* ((id (+ first-gid i)) (custom (or (assv-ref custom-tiles id) '())) + (type (assq-ref custom 'type)) (animation (assq-ref custom 'animation)) (properties (assq-ref custom 'properties)) - (tile (make-tile id i + (tile (make-tile id type i (and animation (make-animation image first-gid animation)) (or properties '())))) @@ -351,9 +353,11 @@ the default ORIENTATION value of 'orthogonal' is supported." (define (parse-tileset node first-gid) (define (parse-custom-tile node) (let ((id (attr node 'id string->number)) + (type (attr node 'type)) (properties (map parse-property ((sxpath '(properties property)) node)))) - `(,id . ((properties . ,properties))))) + `(,id . (,@(if type `((type . ,type)) '()) + (properties . ,properties))))) (let* ((name (attr node 'name)) (tile-width (attr node 'tilewidth string->number)) (tile-height (attr node 'tileheight string->number)) @@ -541,42 +545,54 @@ the default ORIENTATION value of 'orthogonal' is supported." (iota (tile-layer-width layer)))) (iota (tile-layer-height layer)))))) -(define (compile-walls tile-map layer-name) +(define obj:wall:brick 1) +(define obj:wall:copper 2) +(define obj:player-spawn 3) +(define obj:exit 4) +(define obj:block:copper 5) +(define obj:clock-emitter 6) + +(define (compile-environment-layer tile-map layer-name) (let ((tw (tile-map-tile-width tile-map)) (th (tile-map-tile-height tile-map)) (layer (tile-map-layer-ref tile-map layer-name))) - (u8-list->bytevector - (append-map (lambda (y) - (concatenate - (filter-map (lambda (x) - (match (tile-layer-ref layer x y) - (#f #f) - (tile - (and (assq-ref (tile-properties (map-tile-ref tile)) 'wall) - (list x y 1))))) - (iota (tile-layer-width layer))))) - (iota (tile-layer-height layer)))))) + (append-map (lambda (y) + (concatenate + (filter-map (lambda (x) + (match (tile-layer-ref layer x y) + (#f #f) + ((= map-tile-ref tile) + (match (tile-type tile) + (#f #f) + ("wall" + (match (assq-ref (tile-properties tile) 'kind) + ("brick" (list x y obj:wall:brick)) + ("copper" (list x y obj:wall:copper)) + (kind (error "unsupported wall kind" kind)))) + ("exit" (list x y obj:exit)) + ("clock-emitter" (list x y obj:clock-emitter)) + (type (error "unsupported background object" type)))))) + (iota (tile-layer-width layer))))) + (iota (tile-layer-height layer))))) -(define (compile-object-layer tile-map layer) - (let ((table (make-hash-table)) - (tw (tile-map-tile-width tile-map)) - (th (tile-map-tile-height tile-map))) - (for-each (lambda (obj) - (let* ((type (map-object-type obj)) - (properties (map-object-properties obj)) - (r (map-object-shape obj)) - (x (/ (rect-x r) tw)) - (y (/ (rect-y r) th))) - ;; (format (current-error-port) "obj: ~a ~a ~a ~a\n" (rect-x r) (rect-y r) x y) - (hashv-set! table y - (cons `(make-level-object ,x (quote ,type) - (quote ,properties)) - (hashv-ref table y '()))))) - (object-layer-objects layer)) - `(vector - ,@(map (lambda (y) - `(list ,@(hashv-ref table y '()))) - (iota (tile-map-height tile-map)))))) +(define (compile-object-layer tile-map layer-name) + (let ((tw (tile-map-tile-width tile-map)) + (th (tile-map-tile-height tile-map)) + (layer (tile-map-layer-ref tile-map layer-name))) + (append-map (lambda (obj) + (let* ((type (map-object-type obj)) + (properties (map-object-properties obj)) + (r (map-object-shape obj)) + (x (/ (rect-x r) tw)) + (y (/ (rect-y r) th))) + (match type + ('player-spawn (list x y obj:player-spawn)) + ('block + (match (assq-ref properties 'kind) + ("copper" (list x y obj:block:copper)) + (kind (error "unsupported block kind" kind)))) + (_ (error "unsupported object type" type))))) + (object-layer-objects layer)))) (define (basename-strip-extension file-name) (match (string-split (basename file-name) #\.) @@ -588,16 +604,17 @@ the default ORIENTATION value of 'orthogonal' is supported." (module-name `(game levels ,(string->symbol name))) (proc-name (string->symbol (string-append "load-" name))) (tile-map (load-tile-map file-name))) + (compile-object-layer tile-map "objects") (for-each pretty-print `((define-module ,module-name - #:use-module (game actors) - #:use-module (goblins core) - #:use-module (math vector) + #:use-module (game level) #:export (,proc-name)) (define (,proc-name) - (values ,(compile-tile-layer tile-map "background") - (spawn ^level - ,(tile-map-width tile-map) - ,(tile-map-height tile-map) - ,(compile-walls tile-map "background")))))))) + (make-level ,(tile-map-width tile-map) + ,(tile-map-height tile-map) + ,(compile-tile-layer tile-map "background") + ,(u8-list->bytevector + (append + (compile-environment-layer tile-map "background") + (compile-object-layer tile-map "objects"))))))))) (_ (error "file name expected")))