summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorCracker64 <cracker642@gmail.com>2010-12-08 17:14:02 (GMT)
committer Cracker64 <cracker642@gmail.com>2010-12-08 17:14:02 (GMT)
commitcbf41389a2ac611c4829e08ede525ee4076d92d7 (patch)
treee7e7487fec95953e46ebde3e8c77931f076e61df /src/main.c
parentfff7ecedf811e487efdb0a65012a3502915d3cb2 (diff)
downloadpowder-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.c90
1 files changed, 72 insertions, 18 deletions
diff --git a/src/main.c b/src/main.c
index 94dc55c..ccc87a2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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)
{