modules = \
  modules/dom/canvas.scm \
  modules/dom/document.scm \
  modules/dom/element.scm \
  modules/dom/event.scm \
  modules/dom/image.scm \
  modules/dom/media.scm \
  modules/dom/window.scm \
  modules/game/actors.scm \
  modules/game/effects.scm \
  modules/game/level.scm \
  modules/game/tileset.scm \
  modules/game/time.scm \
  modules/game/animation.scm \
  modules/goblins/abstract-types.scm \
  modules/goblins/core.scm \
  modules/goblins/core-types.scm \
  modules/goblins/ghash.scm \
  modules/guile/list.scm \
  modules/ice-9/control.scm \
  modules/ice-9/q.scm \
  modules/ice-9/vlist.scm \
  modules/local-storage.scm \
  modules/math.scm \
  modules/math/rect.scm \
  modules/math/vector.scm \
  modules/srfi/srfi-9.scm \
  modules/srfi/srfi-11.scm

levels = \
  modules/game/levels/tutorial-1.scm \
  modules/game/levels/tutorial-2.scm \
  modules/game/levels/tutorial-3.scm \
  modules/game/levels/tutorial-4.scm \
  modules/game/levels/tutorial-5.scm \
  modules/game/levels/tutorial-6.scm \
  modules/game/levels/tutorial-7.scm \
  modules/game/levels/tutorial-8.scm \
  modules/game/levels/tutorial-9.scm \
  modules/game/levels/tutorial-10.scm \
  modules/game/levels/rat-1.scm \
  modules/game/levels/rat-2.scm \
  modules/game/levels/rat-3.scm \
  modules/game/levels/level-1.scm \
  modules/game/levels/level-2.scm \
  modules/game/levels/level-3.scm \
  modules/game/levels/level-4.scm \
  modules/game/levels/catboss-1.scm \
  modules/game/levels/catboss-2.scm \
  modules/game/levels/credits.scm

game.wasm: game.scm $(modules) $(levels)
	guild compile-wasm -L modules -o $@ $<

$(levels): %.scm: %.tmx scripts/compile-map.scm
	mkdir -p modules/game/levels
	guile scripts/compile-map.scm $< > $@

serve: game.wasm
	guile -c '((@ (hoot web-server) serve))'

bundle: game.wasm
	rm cirkoban.zip || true
	zip cirkoban.zip -r assets/images/*.png \
                            assets/sounds/*.wav \
                            assets/fonts/*.woff2 \
                            reflect.js \
                            game.js \
                            game.css \
                            reflect.wasm \
                            wtf8.wasm \
                            game.wasm \
                            index.html

clean:
	rm -f game.wasm game.zip $(levels)