summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 6663e99..68c1140 100644
--- a/src/main.c
+++ b/src/main.c
@@ -404,7 +404,7 @@ 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)
{
unsigned char *d,*c=save;
- int i,j,k,x,y,p=0,*m=calloc(XRES*YRES, sizeof(int)), ver, pty, ty, legacy_beta=0;
+ int q,i,j,k,x,y,p=0,*m=calloc(XRES*YRES, sizeof(int)), ver, pty, ty, legacy_beta=0;
int bx0=x0/CELL, by0=y0/CELL, bw, bh, w, h;
int fp[NPART], nf=0, new_format = 0, ttv = 0;
@@ -479,6 +479,11 @@ int parse_save(void *save, int size, int replace, int x0, int y0)
if (replace)
{
gravityMode = 1;
+ memset(photons, 0, sizeof(photons));
+ memset(wireless, 0, sizeof(wireless));
+ memset(gol2, 0, sizeof(gol2));
+ memset(portal, 0, sizeof(portal));
+
memset(bmap, 0, sizeof(bmap));
memset(emap, 0, sizeof(emap));
memset(signs, 0, sizeof(signs));
@@ -708,6 +713,11 @@ int parse_save(void *save, int size, int replace, int x0, int y0)
ttv = (d[p++])<<8;
ttv |= (d[p++]);
parts[i-1].tmp = ttv;
+ if(ptypes[parts[i-1].type].properties&PROP_LIFE && !parts[i-1].tmp)
+ for(q = 1; q<NGOL ; q++){
+ if(parts[i-1].type==goltype[q-1] && grule[q][9]==2)
+ parts[i-1].tmp = grule[q][9]-1;
+ }
} else {
p+=2;
}
@@ -2026,6 +2036,11 @@ int main(int argc, char *argv[])
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++)
parts[i].life = i+1;
parts[NPART-1].life = -1;