diff options
| author | Cracker64 <cracker642@gmail.com> | 2010-12-08 17:14:02 (GMT) |
|---|---|---|
| committer | Cracker64 <cracker642@gmail.com> | 2010-12-08 17:14:02 (GMT) |
| commit | cbf41389a2ac611c4829e08ede525ee4076d92d7 (patch) | |
| tree | e7e7487fec95953e46ebde3e8c77931f076e61df /src/main.c | |
| parent | fff7ecedf811e487efdb0a65012a3502915d3cb2 (diff) | |
| download | powder-cbf41389a2ac611c4829e08ede525ee4076d92d7.zip powder-cbf41389a2ac611c4829e08ede525ee4076d92d7.tar.gz | |
Bugfix for wifi, would cause a double spark if timed just right. updated to
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 90 |
1 files changed, 72 insertions, 18 deletions
@@ -233,7 +233,7 @@ void *build_thumb(int *size, int bzip2) void *build_save(int *size, int x0, int y0, int w, int h) { - unsigned char *d=calloc(1,3*(XRES/CELL)*(YRES/CELL)+(XRES*YRES)*8+MAXSIGNS*262), *c; + unsigned char *d=calloc(1,3*(XRES/CELL)*(YRES/CELL)+(XRES*YRES)*11+MAXSIGNS*262), *c; int i,j,x,y,p=0,*m=calloc(XRES*YRES, sizeof(int)); int bx0=x0/CELL, by0=y0/CELL, bw=(w+CELL-1)/CELL, bh=(h+CELL-1)/CELL; @@ -249,7 +249,7 @@ void *build_save(int *size, int x0, int y0, int w, int h) d[p++] = bmap[y][x]; for(y=by0; y<by0+bh; y++) for(x=bx0; x<bx0+bw; x++) - if(bmap[y][x]==WL_FAN) + if(bmap[y][x]==WL_FAN||bmap[y][x]==4) { i = (int)(fvx[y][x]*64.0f+127.5f); if(i<0) i=0; @@ -258,7 +258,7 @@ void *build_save(int *size, int x0, int y0, int w, int h) } for(y=by0; y<by0+bh; y++) for(x=bx0; x<bx0+bw; x++) - if(bmap[y][x]==WL_FAN) + if(bmap[y][x]==WL_FAN||bmap[y][x]==4) { i = (int)(fvy[y][x]*64.0f+127.5f); if(i<0) i=0; @@ -315,6 +315,17 @@ void *build_save(int *size, int x0, int y0, int w, int h) d[p++] = (ttlife&0x00FF); } } + for(j=0; j<w*h; j++) + { + i = m[j]; + if(i){ + //Now saving tmp! + //d[p++] = (parts[i-1].life+3)/4; + int tttmp = (int)parts[i-1].tmp; + d[p++] = ((tttmp&0xFF00)>>8); + d[p++] = (tttmp&0x00FF); + } + } for(j=0; j<w*h; j++) { i = m[j]; @@ -329,7 +340,7 @@ void *build_save(int *size, int x0, int y0, int w, int h) for(j=0; j<w*h; j++) { i = m[j]; - if(i && (parts[i-1].type==PT_CLNE || parts[i-1].type==PT_PCLN || parts[i-1].type ==PT_BCLN || parts[i-1].type==PT_SPRK || parts[i-1].type==PT_LAVA || parts[i-1].type==PT_PIPE)) + if(i && (parts[i-1].type==PT_CLNE || parts[i-1].type==PT_PCLN || parts[i-1].type==PT_BCLN || parts[i-1].type==PT_SPRK || parts[i-1].type==PT_LAVA || parts[i-1].type==PT_PIPE)) d[p++] = parts[i-1].ctype; } @@ -365,7 +376,7 @@ void *build_save(int *size, int x0, int y0, int w, int h) c[0] = 0x50; //0x66; c[1] = 0x53; //0x75; c[2] = 0x76; //0x43; - c[3] = legacy_enable; + c[3] = legacy_enable|((sys_pause<<1)&0x02); c[4] = SAVE_VERSION; c[5] = CELL; c[6] = bw; @@ -416,10 +427,18 @@ int parse_save(void *save, int size, int replace, int x0, int y0) } else { - if(c[3]==1||c[3]==0) - legacy_enable = c[3]; - else - legacy_beta = 1; + if(ver>=44){ + legacy_enable = c[3]&0x01; + if(!sys_pause){ + sys_pause = (c[3]>>1)&0x01; + } + } else { + if(c[3]==1||c[3]==0){ + legacy_enable = c[3]; + } else { + legacy_beta = 1; + } + } } bw = c[6]; @@ -519,7 +538,7 @@ int parse_save(void *save, int size, int replace, int x0, int y0) } for(y=by0; y<by0+bh; y++) for(x=bx0; x<bx0+bw; x++) - if(d[(y-by0)*bw+(x-bx0)]==4) + if(d[(y-by0)*bw+(x-bx0)]==4||d[(y-by0)*bw+(x-bx0)]==WL_FAN) { if(p >= size) goto corrupt; @@ -527,7 +546,7 @@ int parse_save(void *save, int size, int replace, int x0, int y0) } for(y=by0; y<by0+bh; y++) for(x=bx0; x<bx0+bw; x++) - if(d[(y-by0)*bw+(x-bx0)]==4) + if(d[(y-by0)*bw+(x-bx0)]==4||d[(y-by0)*bw+(x-bx0)]==WL_FAN) { if(p >= size) goto corrupt; @@ -648,6 +667,25 @@ int parse_save(void *save, int size, int replace, int x0, int y0) } } } + if(ver>=44){ + for(j=0; j<w*h; j++) + { + i = m[j]; + if(i) + { + if(p >= size) { + goto corrupt; + } + if(i <= NPART) { + ttv = (d[p++])<<8; + ttv |= (d[p++]); + parts[i-1].tmp = ttv; + } else { + p+=2; + } + } + } + } for(j=0; j<w*h; j++) { i = m[j]; @@ -692,7 +730,7 @@ int parse_save(void *save, int size, int replace, int x0, int y0) { i = m[j]; ty = d[pty+j]; - if(i && (ty==PT_CLNE || (ty==PT_PCLN && ver>=43) || (ty==PT_SPRK && ver>=21) || (ty==PT_LAVA && ver>=34) || (ty==PT_PIPE && ver>=43) || (ty==PT_BCLN && ver>=43))) + if(i && (ty==PT_CLNE || (ty==PT_PCLN && ver>=43) || (ty==PT_BCLN && ver>=44) || (ty==PT_SPRK && ver>=21) || (ty==PT_LAVA && ver>=34) || (ty==PT_PIPE && ver>=43))) { if(p >= size) goto corrupt; @@ -1027,8 +1065,8 @@ int main(int argc, char *argv[]) #ifdef BETA int is_beta = 0; #endif - char uitext[48] = ""; - char heattext[64] = ""; + char uitext[255] = ""; + char heattext[128] = ""; int currentTime = 0; int FPS = 0; int pastFPS = 0; @@ -1187,6 +1225,17 @@ int main(int argc, char *argv[]) memset(vid_buf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE); } #endif + + //Can't be too sure... + if(bsx>1180) + bsx = 1180; + if(bsx<0) + bsx = 0; + if(bsy>1180) + bsy = 1180; + if(bsy<0) + bsy = 0; + update_particles(vid_buf); draw_parts(vid_buf); @@ -1412,6 +1461,8 @@ int main(int argc, char *argv[]) bsy = 0; } } + if((sdl_mod & (KMOD_RCTRL) )&&( sdl_mod & (KMOD_RALT))) + active_menu = 11; if(sdl_key==SDLK_INSERT) REPLACE_MODE = !REPLACE_MODE; if(sdl_key=='g') @@ -1901,8 +1952,11 @@ int main(int argc, char *argv[]) memset(fire_g, 0, sizeof(fire_g)); memset(fire_b, 0, sizeof(fire_b)); } - if(x>=19 && x<=35 && svf_last && svf_open && !bq) - parse_save(svf_last, svf_lsize, 1, 0, 0); + if(x>=19 && x<=35 && svf_last && svf_open && !bq){ + //int tpval = sys_pause; + parse_save(svf_last, svf_lsize, 1, 0, 0); + //sys_pause = tpval; + } if(x>=(XRES+BARSIZE-(510-476)) && x<=(XRES+BARSIZE-(510-491)) && !bq) { if(b & SDL_BUTTON_LMASK) @@ -2195,12 +2249,12 @@ int main(int argc, char *argv[]) #else sprintf(uitext, "Version %d.%d FPS:%d", SAVE_VERSION, MINOR_VERSION, FPSB); #endif - if(GRID_MODE) - sprintf(uitext, "%s [GRID: %d]", uitext, GRID_MODE); if(REPLACE_MODE) strappend(uitext, " [REPLACE MODE]"); if(sdl_mod&(KMOD_CAPS)) strappend(uitext, " [CAP LOCKS]"); + if(GRID_MODE) + sprintf(uitext, "%s [GRID: %d]", uitext, GRID_MODE); if(sdl_zoom_trig||zoom_en) { |
