diff --git a/includes/defines.h b/includes/defines.h index 4e0304a23..26a2f762c 100644 --- a/includes/defines.h +++ b/includes/defines.h @@ -108,6 +108,7 @@ int NGOL; int CGOL; int GSPEED; int gol[XRES][YRES]; +int gol2[XRES][YRES]; extern sign signs[MAXSIGNS]; extern stamp stamps[STAMP_MAX]; extern int stamp_count; diff --git a/includes/powder.h b/includes/powder.h index 75fa7285f..052916144 100644 --- a/includes/powder.h +++ b/includes/powder.h @@ -285,7 +285,7 @@ static const part_type ptypes[PT_NUM] = {"HSWC", PIXPACK(0x3B1010), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Heat switch. Conducts Heat only when activated", TYPE_SOLID}, {"IRON", PIXPACK(0x707070), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 50, 0, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 251, "Rusts with salt, can be used for electrlosis of WATR", TYPE_SOLID}, {"MORT", PIXPACK(0xE0E0E0), 0.0f, 0.00f * CFDS, 1.00f, 1.00f, -0.99f, 0.0f, 0.01f, 0.002f * CFDS, 0, 0, 0, 0, 0, 0, -1, SC_NUCLEAR, R_TEMP+4.0f +273.15f, 60, "Steam Train.", TYPE_PART}, - {"GOL", PIXPACK(0x0CAC00), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SPECIAL, 9000.0f, 0, "Game Of Life!", TYPE_SOLID}, + {"GOL", PIXPACK(0x0CAC00), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SPECIAL, 9000.0f, 40, "Game Of Life!", TYPE_SOLID}, //Name Colour Advec Airdrag Airloss Loss Collid Grav Diffus Hotair Fal Burn Exp Mel Hrd M Weights Section H Ins(real world, by triclops200) Description }; diff --git a/src/interface.c b/src/interface.c index e56186845..07edca9cc 100644 --- a/src/interface.c +++ b/src/interface.c @@ -3614,7 +3614,7 @@ int execute_vote(pixel *vid_buf, char *id, char *action) } void open_link(char *uri){ #ifdef WIN32 - ShellExecute(0, "OPEN", uri, NULL, NULL, 0) + ShellExecute(0, "OPEN", uri, NULL, NULL, 0); #elif MACOSX //LSOpenCFURLRef(CFURLCreateWithString(NULL, CFStringCreateWithCString(NULL, uri, 0) ,NULL), NULL); //TODO: Get this crap working #elif LIN32 diff --git a/src/main.c b/src/main.c index 36efa8899..75e191222 100644 --- a/src/main.c +++ b/src/main.c @@ -104,7 +104,7 @@ int FPSB = 0; int MSIGN =-1; int NGOL = 0; int CGOL = 0; -int GSPEED = 1; +int GSPEED = 0; sign signs[MAXSIGNS]; @@ -521,6 +521,8 @@ int parse_save(void *save, int size, int replace, int x0, int y0) { k = pmap[y][x]>>8; parts[k].type = j; + if(j ==PT_GOL) + gol[x][y] = 1; if(j == PT_PHOT) parts[k].ctype = 0x3fffffff; parts[k].x = (float)x; diff --git a/src/powder.c b/src/powder.c index b4aeebb5f..1d55a1884 100644 --- a/src/powder.c +++ b/src/powder.c @@ -824,38 +824,57 @@ void update_particles_i(pixel *vid, int start, int inc) int starti = (start*-1); if(sys_pause&&!framerender) return; + gol2[0][0] = 3; + for(nx=0;nx>8)>=NPART || !r) + { + gol[nx][ny] = 0; + continue; + } + if(parts[r>>8].type==PT_GOL) + gol[nx][ny] = 1; + } + for(nx=0;nx=0 && ny+nny>0 && nx+nnx=5&&gol[nx][ny]==1) + parts[r>>8].type = PT_NONE; + else if(gol2[nx][ny]<=2&&gol[nx][ny]==1) + parts[r>>8].type = PT_NONE; + gol2[nx][ny] = 0; + } + /*gol[0][0] = 3; other gol code, still has glitch if(CGOL>=GSPEED) { CGOL = 0; - create_part(-1,0,0,PT_GOL); for(nx=0;nx>8)>=NPART || !r) - continue; + continue; if(parts[r>>8].type==PT_GOL) - for(int nnx=1; nnx>-2; nnx--) - for(int nny=1; nny>-2; nny--) + for(int nnx=-1; nnx<2; nnx++) + for(int nny=-1; nny<2; nny++) if(nx+nnx>=0 && ny+nny>0 && nx+nnx=4){ - gol[nx+nnx][ny+nny] =5; - } - else if(gol[nx+nnx][ny+nny]==3){ - gol[nx+nnx][ny+nny] =4; - } - else if(gol[nx+nnx][ny+nny]==2){ - gol[nx+nnx][ny+nny] =3; - } - else if(gol[nx+nnx][ny+nny]==1){ - gol[nx+nnx][ny+nny] =2; - } - else if(gol[nx+nnx][ny+nny]==0){ - gol[nx+nnx][ny+nny] =1; - } + gol[nx+nnx][ny+nny] ++; } } } @@ -865,7 +884,7 @@ void update_particles_i(pixel *vid, int start, int inc) if(gol[nx][ny]>=5&&(parts[r>>8].type==PT_NONE||parts[r>>8].type==PT_GOL)){ parts[r>>8].type=PT_NONE; } - else if(gol[nx][ny]==3){ + else if(gol[nx][ny]==3&&parts[r>>8].type==PT_NONE){ create_part(-1,nx,ny,PT_GOL); } else if(gol[nx][ny]==2&&parts[r>>8].type==PT_GOL){ @@ -878,7 +897,7 @@ void update_particles_i(pixel *vid, int start, int inc) } } - CGOL++; + CGOL++;*/ for(i=start; i<(NPART-starti); i+=inc) if(parts[i].type) {