all: default
default:

.PHONY: all default download clean clean-dl clean-all

packs = blobfox neofox
zips  = $(addsuffix .zip,$(packs))

.SECONDARY: $(zips)

blobfox_url = https://strapi.volpeon.ink/uploads/blobfox_1703c01b78.zip
 neofox_url = https://strapi.volpeon.ink/uploads/neofox_e17e757433.zip


cols = 16
col_gap = 1
row_gap = 1
standard_w = 24
standard_h = 24


clean:
	@rm -fv *.png *.svg

clean-dl:
	@rm -fv $(zips)

clean-all: clean clean-dl


download_tgts = $(addprefix download-,$(packs))
.PHONY download: $(download_tgts)
$(download_tgts) : download-%: %.zip
%.zip: ; wget -O $@ $($*_url)


unpack_tgts = $(addprefix unpack-,$(packs))
.PHONY unpack: $(unpack_tgts)
$(unpack_tgts) : unpack-%: %.zip
	unzip -u -b $*.zip "$**.png"


concatenated = $(patsubst %,atlas_%.png,$(packs))
all: $(concatenated)
$(concatenated) : atlas_%.png: | unpack-%
	montage -tile $(cols)x -geometry +$(col_gap)+$(row_gap) \
		-background transparent -alpha on -depth 8      \
		$**.png -strip +dither -colors 256 PNG8:$@
	pngcrush -reduce -blacken -brute $@
	du -h $@
	identify $@


maps = $(addsuffix .svg,$(packs))
default: $(maps)
$(maps) : %.svg: makemap.pl atlas_%.png
	perl $+ $(cols) $(col_gap) $(row_gap) $(standard_w) $(standard_h) \
		$**.png > $@

macs = $(addsuffix .m4,$(packs))
default: $(macs)
$(macs) : %.m4: makemap.pl atlas_%.png
	perl $+ M4 $(cols) $(col_gap) $(row_gap) $(standard_w) $(standard_h) \
		$**.png > $@

js = $(addsuffix .js,$(packs))
default: $(js)
$(js) : %.js: makemap.pl atlas_%.png
	perl $+ JS $(cols) $(col_gap) $(row_gap) $(standard_w) $(standard_h) \
		$**.png > $@
