# See readme.txt for more information.
# See below for alternate maze definitions.

## program name

# final version (without suffix)
game = myman
# bootstrap version (without suffix)
bootstrap = myman-s

## file types/suffices

# For UNIX and descendants
x =
bak = ~

# For DOS and descendants
#x = .exe
#bak = .bak

## tools

# ANSI-style C compiler.
#CC = c89
CC = gcc -Wall

# optimization option for $(CC)
#OPT = -O
OPT = -O3

# file removal
RM = rm -f

# curses library
# ncurses under Linux, improperly installed in /usr
#LIBS = -L/usr/lib -I/usr/include/ncurses -lncurses
# same, in /usr/local
#LIBS = -L/usr/local/lib -I/usr/local/include/ncurses -lncurses
# SysV curses in the SysV optional installation dirs, on a SunOS 4 system
#LIBS = -L/usr/5lib -I/usr/5include -lcurses
# ncurses or SysV curses in the usual place
LIBS = -lcurses

## for builtin data

BUILTIN_OBJS = data.o
BUILTIN_DEFS = -DBUILTIN_MAZE -DBUILTIN_TILE -DBUILTIN_STILE

# 

## curses options

# Enable use of beep() by default.
#CURSOPTS = -DSOUND=1
# For a VT-100/Latin 1 font (as opposed to a PC-console/CP-437 font)
#CURSOPTS = -DUSE_RAW=0 -DUSE_ACS=1
# For untranslated graphics characters: (PC-console/CP-437 font, ncurses, mono)
#CURSOPTS = -DUSE_RAW=1 -DUSE_ACS=0 -DUSE_COLOR=0 -DUSE_ATTR=0
# To disable most character attributes:
#CURSOPTS = -DUSE_ATTR=0
# To disable color support:
#CURSOPTS = -DUSE_COLOR=0
# To compile in color support, but leave it disabled by default:
#CURSOPTS = -DUSE_COLOR=1 -DCOLORIZE=0

## Tiles & Sprites

# Uncomment for small tiles
TILE = '-DTILEFILE="tile2x1.txt"' -DTILE_W=2 -DTILE_H=1

# Uncomment for small sprites
STILE = '-DSTILEFILE="stile2x1.txt"' -DSTILE_W=2 -DSTILE_H=1 -DVISIBLE_EYES=0

## Mazes

# A maze inspired by Yahoo Software's 'Catchum'
MAZE_CATCHUM = \
	-DMAZEFILE='"catchum.txt"' -DMAZE_W=25 -DMAZE_H=23 \
	-DDOTS=203 -DDOTS_FRUIT1=45 -DDOTS_FRUIT2=90 \
	-DMSGLEN=9 -DRMSG=13 -DCMSG=8 -DRMSG2=9 -DCMSG2=8\
	-DREADY='"  READY! "' -DGAMEOVER='"GAME OVER"' \
	-DPLAYER1='"PLAYER  1"' -DPLAYER2='"PLAYER  2"' \
	-DRMYMAN=17.5 -DRFRUIT=13.5 -DRGHOST=11.5 -DRTOP=10.5

# A maze from 'Chomp'
MAZE_CHOMP = \
	-DMAZEFILE='"chomp.txt"' -DMAZE_W=21 -DMAZE_H=16 \
	-DDOTS=152 -DDOTS_FRUIT1=45 -DDOTS_FRUIT2=90 \
	-DMSGLEN=9 -DRMSG=5 -DCMSG=6 -DRMSG2=5 -DCMSG2=6 \
	-DREADY='"  READY! "' -DGAMEOVER='"GAME OVER"' \
	-DPLAYER1='"PLAYER  1"' -DPLAYER2='"PLAYER  2"' \
	-DRMYMAN=10.5 -DRFRUIT=RMYMAN -DRGHOST=8.5 -DRTOP=5.5

# A maze from 'Gobble Man'
MAZE_GOBBLE = \
	-DMAZEFILE='"gobble.txt"' -DMAZE_W=41 -DMAZE_H=24 \
	-DDOTS=241 -DDOTS_FRUIT1=70 -DDOTS_FRUIT2=141 \
	-DMSGLEN=11 -DRMSG=7 -DCMSG=15 -DRMSG2=7 -DCMSG2=15 \
	-DREADY='"   READY!  "' -DGAMEOVER='" GAME OVER "' \
	-DPLAYER1='"PLAYER  ONE"' -DPLAYER2='"PLAYER  TWO"' \
	-DRMYMAN=15.5 -DRFRUIT=10.5 -DRGHOST=RFRUIT -DRTOP=RGHOST \
        -DCFRUIT=15.5

# A maze from 'Munchkin'
MAZE_MUNCHKIN = \
	-DMAZEFILE='"munchkin.txt"' -DMAZE_W=27 -DMAZE_H=15 \
	-DDOTS=91 -DDOTS_FRUIT1=31 -DDOTS_FRUIT2=61 \
	-DMSGLEN=7 -DRMSG=5 -DCMSG=10 -DRMSG2=5 -DCMSG2=10 \
	-DREADY='" READY!"' -DGAMEOVER='" GONE  "' \
	-DPLAYER1='" P ONE "' -DPLAYER2='" P TWO "' \
	-DRMYMAN=9.5 -DRFRUIT=7.5 -DRGHOST=RFRUIT -DRTOP=5.5

# A maze from 'Pac-Gal'
MAZE_PACGAL = \
	-DMAZEFILE='"pac-gal.txt"' -DMAZE_W=40 -DMAZE_H=24 \
	-DDOTS=468 -DDOTS_FRUIT1=100 -DDOTS_FRUIT2=200 \
	-DRMSG=16 -DCMSG=15 -DRMSG2=16 -DCMSG2=15 \
	-DRMYMAN=18.5 -DRFRUIT=16.5 -DRGHOST=13.5 -DRTOP=10.5

# A maze from 'Pac-Manic'
MAZE_PACMANIC = \
	-DMAZEFILE='"pacmanic.txt"' -DMAZE_W=29 -DMAZE_H=29 \
	-DDOTS=248 -DDOTS_FRUIT1=72 -DDOTS_FRUIT2=144 \
	-DMSGLEN=11 -DRMSG=15 -DCMSG=9 -DRMSG2=15 -DCMSG2=9 \
	-DRMYMAN=21.5 -DRFRUIT=15.5 -DRGHOST=13.5 -DRTOP=11.5 \
	-DROGHOST=1

# A maze from 'Coleco Portable Pac-Man'
MAZE_PORTABLE = \
	-DMAZEFILE='"portable.txt"' -DMAZE_W=17 -DMAZE_H=19 \
	-DDOTS=68 -DDOTS_FRUIT1=0 -DDOTS_FRUIT2=0 \
	-DMSGLEN=7 -DRMSG=11 -DCMSG=5 -DRMSG2=11 -DCMSG2=5 \
	-DREADY='" READY!"' -DGAMEOVER='" GONE  "' \
	-DPLAYER1='" P ONE "' -DPLAYER2='" P TWO "' \
	-DRMYMAN=13.5 -DRFRUIT=11.5 -DRGHOST=9.5 -DRTOP=7.5 \
	-DROGHOST=2 -DCOGHOST=1

# A maze from 'Spear-man'
MAZE_SPEAR = \
	-DMAZEFILE='"spear.txt"' -DMAZE_W=21 -DMAZE_H=21 \
	-DDOTS=164 -DDOTS_FRUIT1=35 -DDOTS_FRUIT2=70 \
	-DMSGLEN=7 -DRMSG=11 -DCMSG=7 -DRMSG2=11 -DCMSG2=7 \
	-DREADY='" READY!"' -DGAMEOVER='" GONE  "' \
	-DPLAYER1='" P ONE "' -DPLAYER2='" P TWO "' \
	-DRMYMAN=15.5 -DRFRUIT=11.5 -DRGHOST=9.5 -DRTOP=7.5 \
	-DROGHOST=2 -DCOGHOST=1

# A maze from 'Pacman-89'
MAZE_PACMAN89 = \
	-DMAZEFILE='"pacman89.txt"' -DMAZE_W=20 -DMAZE_H=23 \
	-DDOTS=190 -DDOTS_FRUIT1=40 -DDOTS_FRUIT2=80 \
	-DMSGLEN=8 -DRMSG=13 -DCMSG=6 -DRMSG2=13 -DCMSG2=6 \
	-DREADY='" READY! "' -DGAMEOVER='"ALL GONE"' \
	-DPLAYER1='"PLAYER 1"' -DPLAYER2='"PLAYER 2"' \
	-DRMYMAN=17.5 -DRFRUIT=13.5 -DRGHOST=10.5 -DRTOP=7.5

# Uncomment to use a custom maze
#MAZE = $(MAZE_SPEAR)

## Dependencies

DEFS = $(TILE) $(STILE) $(MAZE)

all: $(game)$(x)

clean:
	$(RM) *$(bak) *.o $(game)$(x) $(bootstrap)$(x) data.o data.c

$(game)$(x): myman.c makefile $(BUILTIN_OBJS)
	$(CC) $(OPT) $(CURSOPTS) -o $@ myman.c $(BUILTIN_OBJS) $(LIBS) $(DEFS) $(BUILTIN_DEFS)

$(bootstrap)$(x): myman.c makefile
	$(CC) $(CURSOPTS) -o $@ myman.c $(LIBS) $(DEFS)

data.c: $(bootstrap)$(x)
	./$(bootstrap)$(x) -STM > data.c

data.o: data.c
	$(CC) -o $@ -c data.c
