Move reset code to own function

Also clear persistent view when loading a save or clearing the screen.
This commit is contained in:
jacksonmj 2011-02-19 15:34:04 +00:00
parent 32f8e85d50
commit a2091ede76
4 changed files with 32 additions and 39 deletions

View File

@ -176,6 +176,7 @@ int thumb_cache_find(char *id, void **thumb, int *size);
void *build_thumb(int *size, int bzip2); void *build_thumb(int *size, int bzip2);
void *build_save(int *size, int x0, int y0, int w, int h); void *build_save(int *size, int x0, int y0, int w, int h);
int parse_save(void *save, int size, int replace, int x0, int y0); int parse_save(void *save, int size, int replace, int x0, int y0);
void clear_sim(void);
void del_stamp(int d); void del_stamp(int d);
void sdl_seticon(void); void sdl_seticon(void);
#endif #endif

View File

@ -46,6 +46,7 @@ extern unsigned char fire_b[YRES/CELL][XRES/CELL];
extern unsigned int fire_alpha[CELL*3][CELL*3]; extern unsigned int fire_alpha[CELL*3][CELL*3];
extern pixel *fire_bg; extern pixel *fire_bg;
extern pixel *pers_bg;
pixel *rescale_img(pixel *src, int sw, int sh, int *qw, int *qh, int f); pixel *rescale_img(pixel *src, int sw, int sh, int *qw, int *qh, int f);

View File

@ -31,6 +31,7 @@ unsigned char fire_b[YRES/CELL][XRES/CELL];
unsigned int fire_alpha[CELL*3][CELL*3]; unsigned int fire_alpha[CELL*3][CELL*3];
pixel *fire_bg; pixel *fire_bg;
pixel *pers_bg;
pixel *rescale_img(pixel *src, int sw, int sh, int *qw, int *qh, int f) pixel *rescale_img(pixel *src, int sw, int sh, int *qw, int *qh, int f)
{ {

View File

@ -553,19 +553,7 @@ int parse_save(void *save, int size, int replace, int x0, int y0)
gravityMode = 0; gravityMode = 0;
airMode = 0; airMode = 0;
} }
memset(bmap, 0, sizeof(bmap)); clear_sim();
memset(emap, 0, sizeof(emap));
memset(signs, 0, sizeof(signs));
memset(parts, 0, sizeof(particle)*NPART);
memset(pmap, 0, sizeof(pmap));
memset(vx, 0, sizeof(vx));
memset(vy, 0, sizeof(vy));
memset(pv, 0, sizeof(pv));
memset(photons, 0, sizeof(photons));
memset(wireless, 0, sizeof(wireless));
memset(gol2, 0, sizeof(gol2));
memset(portal, 0, sizeof(portal));
death = death2 = ISSPAWN1 = ISSPAWN2 = 0;
} }
// make a catalog of free parts // make a catalog of free parts
@ -897,13 +885,35 @@ corrupt:
if (replace) if (replace)
{ {
legacy_enable = 0; legacy_enable = 0;
memset(signs, 0, sizeof(signs)); clear_sim();
memset(parts, 0, sizeof(particle)*NPART);
memset(bmap, 0, sizeof(bmap));
} }
return 1; return 1;
} }
void clear_sim(void)
{
memset(bmap, 0, sizeof(bmap));
memset(emap, 0, sizeof(emap));
memset(signs, 0, sizeof(signs));
memset(parts, 0, sizeof(particle)*NPART);
memset(pmap, 0, sizeof(pmap));
memset(pv, 0, sizeof(pv));
memset(vx, 0, sizeof(vx));
memset(vy, 0, sizeof(vy));
memset(fvx, 0, sizeof(fvx));
memset(fvy, 0, sizeof(fvy));
memset(photons, 0, sizeof(photons));
memset(wireless, 0, sizeof(wireless));
memset(gol2, 0, sizeof(gol2));
memset(portal, 0, sizeof(portal));
death = death2 = ISSPAWN1 = ISSPAWN2 = 0;
memset(pers_bg, 0, (XRES+BARSIZE)*YRES*PIXELSIZE);
memset(fire_bg, 0, XRES*YRES*PIXELSIZE);
memset(fire_r, 0, sizeof(fire_r));
memset(fire_g, 0, sizeof(fire_g));
memset(fire_b, 0, sizeof(fire_b));
}
// stamps library // stamps library
stamp stamps[STAMP_MAX];//[STAMP_X*STAMP_Y]; stamp stamps[STAMP_MAX];//[STAMP_X*STAMP_Y];
@ -1188,7 +1198,7 @@ int main(int argc, char *argv[])
int pastFPS = 0; int pastFPS = 0;
int past = 0; int past = 0;
pixel *vid_buf=calloc((XRES+BARSIZE)*(YRES+MENUSIZE), PIXELSIZE); pixel *vid_buf=calloc((XRES+BARSIZE)*(YRES+MENUSIZE), PIXELSIZE);
pixel *pers_bg=calloc((XRES+BARSIZE)*YRES, PIXELSIZE); pers_bg = calloc((XRES+BARSIZE)*YRES, PIXELSIZE);
void *http_ver_check; void *http_ver_check;
void *http_session_check = NULL; void *http_session_check = NULL;
char *ver_data=NULL, *check_data=NULL, *tmp; char *ver_data=NULL, *check_data=NULL, *tmp;
@ -1248,7 +1258,7 @@ int main(int argc, char *argv[])
parts[NPART-1].life = -1; parts[NPART-1].life = -1;
pfree = 0; pfree = 0;
fire_bg=calloc(XRES*YRES, PIXELSIZE); fire_bg=calloc(XRES*YRES, PIXELSIZE);
memset(signs, 0, sizeof(signs)); clear_sim();
//fbi_img = render_packed_rgb(fbi, FBI_W, FBI_H, FBI_CMP); //fbi_img = render_packed_rgb(fbi, FBI_W, FBI_H, FBI_CMP);
@ -2255,19 +2265,7 @@ int main(int argc, char *argv[])
} }
if (x>=(XRES+BARSIZE-(510-367)) && x<=(XRES+BARSIZE-(510-383)) && !bq) if (x>=(XRES+BARSIZE-(510-367)) && x<=(XRES+BARSIZE-(510-383)) && !bq)
{ {
memset(signs, 0, sizeof(signs)); clear_sim();
memset(pv, 0, sizeof(pv));
memset(vx, 0, sizeof(vx));
memset(vy, 0, sizeof(vy));
memset(fvx, 0, sizeof(fvx));
memset(fvy, 0, sizeof(fvy));
memset(bmap, 0, sizeof(bmap));
memset(emap, 0, sizeof(emap));
memset(parts, 0, sizeof(particle)*NPART);
memset(photons, 0, sizeof(photons));
memset(wireless, 0, sizeof(wireless));
memset(gol2, 0, sizeof(gol2));
memset(portal, 0, sizeof(portal));
for (i=0; i<NPART-1; i++) for (i=0; i<NPART-1; i++)
parts[i].life = i+1; parts[i].life = i+1;
parts[NPART-1].life = -1; parts[NPART-1].life = -1;
@ -2284,16 +2282,8 @@ int main(int argc, char *argv[])
svf_description[0] = 0; svf_description[0] = 0;
gravityMode = 0; gravityMode = 0;
airMode = 0; airMode = 0;
death = death2 = 0;
isplayer2 = 0; isplayer2 = 0;
isplayer = 0; isplayer = 0;
ISSPAWN1 = 0;
ISSPAWN2 = 0;
memset(fire_bg, 0, XRES*YRES*PIXELSIZE);
memset(fire_r, 0, sizeof(fire_r));
memset(fire_g, 0, sizeof(fire_g));
memset(fire_b, 0, sizeof(fire_b));
} }
if (x>=(XRES+BARSIZE-(510-385)) && x<=(XRES+BARSIZE-(510-476))) if (x>=(XRES+BARSIZE-(510-385)) && x<=(XRES+BARSIZE-(510-476)))
{ {