34 lines
905 B
Scheme
34 lines
905 B
Scheme
|
(define-module (game render hero)
|
||
|
#:use-module (game model hero)
|
||
|
#:use-module (chickadee)
|
||
|
#:use-module (chickadee math vector)
|
||
|
#:use-module (chickadee graphics sprite)
|
||
|
#:use-module (chickadee graphics texture)
|
||
|
#:export (render-hero
|
||
|
render-hero-load)
|
||
|
)
|
||
|
|
||
|
|
||
|
(define hero-texture #f)
|
||
|
(define hero-atlas #f)
|
||
|
|
||
|
(define (render-hero-load)
|
||
|
(set! hero-texture (load-image "assets/images/lr_penguin2.png"))
|
||
|
(set! hero-atlas (split-texture hero-texture 32 32)))
|
||
|
|
||
|
;; start index of the walk animation
|
||
|
(define hero-walk-offset 56)
|
||
|
|
||
|
(define (hero-sprite hero)
|
||
|
(let* ((x (inexact->exact (floor (vec2-x (hero-position hero)))))
|
||
|
(x-offset (remainder x 8))
|
||
|
(hero-index (+ hero-walk-offset x-offset)))
|
||
|
(texture-atlas-ref hero-atlas hero-index)))
|
||
|
|
||
|
(define (render-hero hero)
|
||
|
(draw-sprite
|
||
|
(hero-sprite hero)
|
||
|
(vec2+
|
||
|
(hero-position hero)
|
||
|
(vec2 16.0 0.0))))
|