#!/bin/sh
TEMPDIR=`mktemp -d -t mkspawn.XXXXXX`

if [ -z "$TEMPDIR" ]; then
	exit 1
fi

trap cleanup 0

cleanup() {
	rm -rf $TEMPDIR
}


for x in "$@"; do
	echo "Decompressing $x..."
	unzip -qqCd $TEMPDIR $x '*.bsp'
	for y in $TEMPDIR/[Mm][Aa][Pp][Ss]/*.[Bb][Ss][Pp]; do
		if [ "$y" = "$TEMPDIR/[Mm][Aa][Pp][Ss]/*.[Bb][Ss][Pp]" ]; then
			echo "...no maps found"
			continue
		fi
		~/progs/lump -n 0 -o $TEMPDIR/entities.tmp $y > /dev/null 2>&1
		MAPNAME=`basename "$y" | sed 's/\.[Bb][Ss][Pp]$//'`
		echo  "Generating spawn script for $MAPNAME"
		tr '\n}' ' \n' < $TEMPDIR/entities.tmp | grep -i team_WOLF_objective |
			sed -r 's@.*"description" "([^"]+)".*@\1@g' | awk '
BEGIN {
	print "exec autoexec_mapdefault.cfg"
	printf("\n// spawn 0: default/automatic\n");
	printf("set spawn0_e \"echo ^yspawn^z:^w automatic\"\n");
	printf("set spawn0_t say_teamnl ^yspawn^z:^w automatic\"\n");
	printf("set spawn0_c \"setspawnpt 0;vstr spawn0_e;bind DEL vstr spawn1_c;bind END vstr spawn0_t\"\n");
	printf("\n");
	
	spawnnum=1
}
{
	if (spawnnum != 1) {
		printf("set spawn%d_c \"setspawnpt %d;vstr spawn%d_e;bind DEL vstr spawn%d_c;bind END vstr spawn%d_t\"\n", spawnnum - 1, spawnnum - 1, spawnnum - 1, spawnnum, spawnnum - 1);
		printf("\n");
	}

	printf("// spawn %d: %s\n", spawnnum, $0);
	printf("set spawn%d_e \"echo ^yspawn^z:^w %s\"\n", spawnnum, $0);
	printf("set spawn%d_t \"say_teamnl ^yspawning closest to^z:^w %s\n", spawnnum, $0);
	spawnnum++;
}
END {
	printf("set spawn%d_c \"setspawnpt %d;vstr spawn%d_e;bind DEL vstr spawn%d_c;bind END vstr spawn%d_t\"\n", spawnnum - 1, spawnnum - 1, spawnnum - 1, 0, spawnnum - 1);
	printf("\n");

	if (spawnnum == 1) {
		printf("set spawn1_c \"echo ^yspawn^z:^w this map has no spawnpoints!\n");
		printf("\n");
	}
	printf("bind DEL vstr spawn1_c\n");
	printf("bind END vstr spawn0_t\n");
}
' > ~/.etwolf/etpro/autoexec_$MAPNAME.cfg
	done
	rm -rf $TEMPDIR/*
done

rm -rf $TEMPDIR
