#
# Settings
# Use Makefile.local for local settings
#

FS_BASEPATH ?= $(HOME)/tremulous
FS_HOMEBASE ?= .tremulous
TREMULOUS ?= tremulous

Q3MAP        ?= q3map2
Q3MAP_FLAGS  += -fs_basepath $(FS_BASEPATH) -fs_homebase $(FS_HOMEBASE) \
                -fs_game base -threads 4
Q3MAP_BSP    += -leaktest -meta -custinfoparms
Q3MAP_VIS    += -vis
Q3MAP_LIGHT  += -light -bounce 1 -dirty -bouncegrid -dirtscale 0.3 \
                -dirtdepth 32 -fastbounce -patchshadows -samples 3 \
                -samplesize 8 -cpma

FAST ?= 0
ifeq ($(FAST), 1)
	Q3MAP_LIGHT = -light -fast
endif

MAPCAT       ?= mapcat
MAPCAT_FLAGS +=

PARTS := maps/p0_master.map \
         maps/p1_bases.map \
         maps/p2_clockroom.map \
         maps/p3_dretchpwner.map \
         maps/p4_thepress.map \
         maps/p5_euclid.map \
         maps/p6_engineering.map \
         maps/p7_uncommon.map \
         maps/p8_outside.map \
         maps/p9_reactor.map \
         maps/p10_factory.map
WHOLE := maps/analmango

MAP ?= analmango
.DEFAULT_GOAL := maps/$(MAP).bsp

-include Makefile.local

#
# Creating a .pk3 with all the assets
#

PK3 ?= analmango.pk3
$(PK3): $(WHOLE).bsp
	cat pk3.list | (while read ent; do echo $$ent; done) | xargs zip -r9 $(PK3)

#
# Testing a map
#
test: maps/$(MAP).bsp
	$(TREMULOUS) +devmap $(MAP)

#
# Assembling the complete .map from parts
#

$(WHOLE).map: $(PARTS)
	$(MAPCAT) $(MAPCAT_FLAGS) $^ -o $@

#
# Compiling .map files into .bsp files
#

maps/%.bsp: maps/%.map
	$(Q3MAP) $(Q3MAP_FLAGS) $(Q3MAP_BSP) $<
	$(Q3MAP) $(Q3MAP_FLAGS) $(Q3MAP_VIS) $<
	$(Q3MAP) $(Q3MAP_FLAGS) $(Q3MAP_LIGHT) $<

#
# Miscellaneous Make stuff
#

clean:
	rm -f *.pk3
	rm -f maps/*.bsp
	rm -f $(WHOLE).*

.PHONY: clean test