1 1.4 christos /* $NetBSD: savelev.c,v 1.4 1997/10/18 20:03:45 christos Exp $ */ 2 1.2 mycroft 3 1.1 cgd /* savelev.c Larn is copyrighted 1986 by Noah Morgan. */ 4 1.4 christos #include <sys/cdefs.h> 5 1.4 christos #ifndef lint 6 1.4 christos __RCSID("$NetBSD: savelev.c,v 1.4 1997/10/18 20:03:45 christos Exp $"); 7 1.4 christos #endif /* not lint */ 8 1.1 cgd #include "header.h" 9 1.4 christos #include "extern.h" 10 1.1 cgd 11 1.1 cgd /* 12 1.1 cgd * routine to save the present level into storage 13 1.1 cgd */ 14 1.4 christos void 15 1.1 cgd savelevel() 16 1.4 christos { 17 1.4 christos struct cel *pcel; 18 1.4 christos char *pitem, *pknow, *pmitem; 19 1.4 christos short *phitp, *piarg; 20 1.4 christos struct cel *pecel; 21 1.4 christos pcel = &cell[level * MAXX * MAXY]; /* pointer to this level's 22 1.4 christos * cells */ 23 1.4 christos pecel = pcel + MAXX * MAXY; /* pointer to past end of this 24 1.4 christos * level's cells */ 25 1.4 christos pitem = item[0]; 26 1.4 christos piarg = iarg[0]; 27 1.4 christos pknow = know[0]; 28 1.4 christos pmitem = mitem[0]; 29 1.4 christos phitp = hitp[0]; 30 1.4 christos while (pcel < pecel) { 31 1.4 christos pcel->mitem = *pmitem++; 32 1.4 christos pcel->hitp = *phitp++; 33 1.4 christos pcel->item = *pitem++; 34 1.4 christos pcel->know = *pknow++; 35 1.1 cgd pcel++->iarg = *piarg++; 36 1.1 cgd } 37 1.4 christos } 38 1.1 cgd 39 1.1 cgd /* 40 1.1 cgd * routine to restore a level from storage 41 1.1 cgd */ 42 1.4 christos void 43 1.1 cgd getlevel() 44 1.4 christos { 45 1.4 christos struct cel *pcel; 46 1.4 christos char *pitem, *pknow, *pmitem; 47 1.4 christos short *phitp, *piarg; 48 1.4 christos struct cel *pecel; 49 1.4 christos pcel = &cell[level * MAXX * MAXY]; /* pointer to this level's 50 1.4 christos * cells */ 51 1.4 christos pecel = pcel + MAXX * MAXY; /* pointer to past end of this 52 1.4 christos * level's cells */ 53 1.4 christos pitem = item[0]; 54 1.4 christos piarg = iarg[0]; 55 1.4 christos pknow = know[0]; 56 1.4 christos pmitem = mitem[0]; 57 1.4 christos phitp = hitp[0]; 58 1.4 christos while (pcel < pecel) { 59 1.1 cgd *pmitem++ = pcel->mitem; 60 1.1 cgd *phitp++ = pcel->hitp; 61 1.1 cgd *pitem++ = pcel->item; 62 1.1 cgd *pknow++ = pcel->know; 63 1.1 cgd *piarg++ = pcel++->iarg; 64 1.1 cgd } 65 1.4 christos } 66