(library (strigoform assets) (export load-assets! image:cover image:starfield-bg image:starfield-fg image:player image:player-bullets image:enemy-bullets image:map image:turret image:popcorn image:flyer0 image:flyer1 image:boss image:particles sound:explosion sound:player-shoot sound:player-death sound:enemy-shoot sound:bullet-hit music) (import (scheme base) (only (hoot syntax) define-syntax-rule) (strigoform image) (strigoform audio)) (define *assets* '()) (define (load-assets!) (for-each (lambda (thunk) (thunk)) *assets*)) (define-syntax-rule (define-asset name exp) (begin (define name #f) (set! *assets* (cons (lambda () (set! name exp)) *assets*)))) (define-asset image:cover (load-image "images/cover.png")) (define-asset image:starfield-bg (load-image "images/starfield-bg.png")) (define-asset image:starfield-fg (load-image "images/starfield-fg.png")) (define-asset image:player (load-image "images/player.png")) (define-asset image:player-bullets (load-image "images/player-bullets.png")) (define-asset image:enemy-bullets (load-image "images/enemy-bullets.png")) (define-asset image:map (load-image "images/map.png")) (define-asset image:turret (load-image "images/turret.png")) (define-asset image:popcorn (load-image "images/popcorn.png")) (define-asset image:flyer0 (load-image "images/flyer0.png")) (define-asset image:flyer1 (load-image "images/flyer1.png")) (define-asset image:boss (load-image "images/boss.png")) (define-asset image:particles (load-image "images/particles.png")) (define-asset sound:explosion (load-sound-effect "audio/explosion.wav")) (define-asset sound:player-shoot (load-sound-effect "audio/player-shoot.wav")) (define-asset sound:player-death (load-sound-effect "audio/player-death.wav")) (define-asset sound:enemy-shoot (load-sound-effect "audio/enemy-shoot.wav")) (define-asset sound:bullet-hit (load-sound-effect "audio/bullet-hit.wav")) (define-asset music (load-audio "audio/music.ogg")))