1 /* savelev.c Larn is copyrighted 1986 by Noah Morgan. */ 2 /* $FreeBSD: src/games/larn/savelev.c,v 1.3 1999/11/16 02:57:24 billf Exp $ */ 3 /* $DragonFly: src/games/larn/savelev.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $ */ 4 #include "header.h" 5 6 /* 7 * routine to save the present level into storage 8 */ 9 void 10 savelevel(void) 11 { 12 struct cel *pcel; 13 char *pitem, *pknow, *pmitem; 14 short *phitp, *piarg; 15 struct cel *pecel; 16 pcel = &cell[level * MAXX * MAXY]; /* pointer to this level's cells */ 17 pecel = pcel + MAXX * MAXY; /* pointer to past end of this level's cells */ 18 pitem = item[0]; 19 piarg = iarg[0]; 20 pknow = know[0]; 21 pmitem = mitem[0]; 22 phitp = hitp[0]; 23 while (pcel < pecel) { 24 pcel->mitem = *pmitem++; 25 pcel->hitp = *phitp++; 26 pcel->item = *pitem++; 27 pcel->know = *pknow++; 28 pcel++->iarg = *piarg++; 29 } 30 } 31 32 /* 33 * routine to restore a level from storage 34 */ 35 void 36 getlevel(void) 37 { 38 struct cel *pcel; 39 char *pitem, *pknow, *pmitem; 40 short *phitp, *piarg; 41 struct cel *pecel; 42 pcel = &cell[level * MAXX * MAXY]; /* pointer to this level's cells */ 43 pecel = pcel + MAXX * MAXY; /* pointer to past end of this level's cells */ 44 pitem = item[0]; 45 piarg = iarg[0]; 46 pknow = know[0]; 47 pmitem = mitem[0]; 48 phitp = hitp[0]; 49 while (pcel < pecel) { 50 *pmitem++ = pcel->mitem; 51 *phitp++ = pcel->hitp; 52 *pitem++ = pcel->item; 53 *pknow++ = pcel->know; 54 *piarg++ = pcel++->iarg; 55 } 56 } 57