xref: /netbsd/games/hack/hack.track.c (revision bf9ec67e)
1 /*	$NetBSD: hack.track.c,v 1.4 1997/10/19 16:59:11 christos Exp $	*/
2 
3 /*
4  * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
5  */
6 
7 #include <sys/cdefs.h>
8 #ifndef lint
9 __RCSID("$NetBSD: hack.track.c,v 1.4 1997/10/19 16:59:11 christos Exp $");
10 #endif				/* not lint */
11 
12 #include "hack.h"
13 #include "extern.h"
14 
15 #define	UTSZ	50
16 
17 coord           utrack[UTSZ];
18 int             utcnt = 0;
19 int             utpnt = 0;
20 
21 void
22 initrack()
23 {
24 	utcnt = utpnt = 0;
25 }
26 
27 /* add to track */
28 void
29 settrack()
30 {
31 	if (utcnt < UTSZ)
32 		utcnt++;
33 	if (utpnt == UTSZ)
34 		utpnt = 0;
35 	utrack[utpnt].x = u.ux;
36 	utrack[utpnt].y = u.uy;
37 	utpnt++;
38 }
39 
40 coord          *
41 gettrack(x, y)
42 	int x, y;
43 {
44 	int             i, cnt, dist;
45 	coord           tc;
46 	cnt = utcnt;
47 	for (i = utpnt - 1; cnt--; i--) {
48 		if (i == -1)
49 			i = UTSZ - 1;
50 		tc = utrack[i];
51 		dist = (x - tc.x) * (x - tc.x) + (y - tc.y) * (y - tc.y);
52 		if (dist < 3)
53 			return (dist ? &(utrack[i]) : 0);
54 	}
55 	return (0);
56 }
57