Home | History | Annotate | Line # | Download | only in hack
hack.track.c revision 1.2
      1  1.2  mycroft /*
      2  1.2  mycroft  * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
      3  1.2  mycroft  */
      4  1.2  mycroft 
      5  1.2  mycroft #ifndef lint
      6  1.2  mycroft static char rcsid[] = "$Id: hack.track.c,v 1.2 1993/08/02 17:19:31 mycroft Exp $";
      7  1.2  mycroft #endif /* not lint */
      8  1.1      cgd 
      9  1.1      cgd #include "hack.h"
     10  1.1      cgd 
     11  1.1      cgd #define	UTSZ	50
     12  1.1      cgd 
     13  1.1      cgd coord utrack[UTSZ];
     14  1.1      cgd int utcnt = 0;
     15  1.1      cgd int utpnt = 0;
     16  1.1      cgd 
     17  1.1      cgd initrack(){
     18  1.1      cgd 	utcnt = utpnt = 0;
     19  1.1      cgd }
     20  1.1      cgd 
     21  1.1      cgd /* add to track */
     22  1.1      cgd settrack(){
     23  1.1      cgd 	if(utcnt < UTSZ) utcnt++;
     24  1.1      cgd 	if(utpnt == UTSZ) utpnt = 0;
     25  1.1      cgd 	utrack[utpnt].x = u.ux;
     26  1.1      cgd 	utrack[utpnt].y = u.uy;
     27  1.1      cgd 	utpnt++;
     28  1.1      cgd }
     29  1.1      cgd 
     30  1.1      cgd coord *
     31  1.1      cgd gettrack(x,y) register x,y; {
     32  1.1      cgd register int i,cnt,dist;
     33  1.1      cgd coord tc;
     34  1.1      cgd 	cnt = utcnt;
     35  1.1      cgd 	for(i = utpnt-1; cnt--; i--){
     36  1.1      cgd 		if(i == -1) i = UTSZ-1;
     37  1.1      cgd 		tc = utrack[i];
     38  1.1      cgd 		dist = (x-tc.x)*(x-tc.x) + (y-tc.y)*(y-tc.y);
     39  1.1      cgd 		if(dist < 3)
     40  1.1      cgd 			return(dist ? &(utrack[i]) : 0);
     41  1.1      cgd 	}
     42  1.1      cgd 	return(0);
     43  1.1      cgd }
     44