CC=gcc
CFLAGS=-Wall -lraylib -lm -lpthread -ldl -lX11

WIN_CC=x86_64-w64-mingw32-gcc
WIN_LIB=-L../lib -I../include -Wall -lraylib -lopengl32 -lgdi32 -lwinmm -lcomdlg32 -lole32
WIN_CFLAGS=-Wall -lraylib -lm -lpthread

GAME=fatal_text_adventure
DATA_C=data/actions.c data/rooms.c data/room_ins.c data/words.c data/flags.c data/items.c

BUTLER=../butler/butler
ITCH_CHANNEL=01-text-adventure
ITCH_CHANNEL_LINUX=$(ITCH_CHANNEL)-linux-x64
ITCH_CHANNEL_WINDOWS=$(ITCH_CHANNEL)-windows-x64

.PHONY: clean run butler_upload

$(GAME)_linux: $(DATA_C) *.c
	$(CC) *.c $(CFLAGS) -o $(GAME)_linux

$(GAME)_windows.exe: $(DATA_C) *.c
	$(WIN_CC) *.c $(WIN_LIB) $(WIN_CFLAGS) -o $(GAME)_windows.exe

data/%.c: data/%.txt
	echo "char *data_$*_txt = " > data/$*.c
	cat data/$*.txt | \
	perl -pe 's/ *\| */|/g' | \
	perl -pe 's/^/"/' | \
	perl -pe 's/$$/\\n"/' >> data/$*.c
	echo ";" >> data/$*.c

run: $(GAME)_linux
	./$(GAME)_linux

run_win: $(GAME)_windows.exe
	wine $(GAME)_windows.exe

clean:
	rm -f ./$(GAME)_linux
	rm -f ./$(GAME)_windows.exe
	rm -f ./data/*.c

$(GAME)_linux.zip: $(GAME)_linux
	rm -f ./$(GAME)_linux.zip
	zip -r $(GAME)_linux.zip $(GAME)_linux img/*.png

$(GAME)_windows.zip: $(GAME)_windows.exe
	rm -f ./$(GAME)_windows.zip
	zip -r $(GAME)_windows.zip $(GAME)_windows.exe img/*.png

butler_upload: $(GAME)_linux.zip $(GAME)_windows.zip
	$(BUTLER) push ./$(GAME)_linux.zip bassguitarbill/fatal-distractions:$(ITCH_CHANNEL_LINUX)
	$(BUTLER) push ./$(GAME)_windows.zip bassguitarbill/fatal-distractions:$(ITCH_CHANNEL_WINDOWS)