diff options
| author | Simon <simon@hardwired.org.uk> | 2011-04-12 11:19:21 (GMT) |
|---|---|---|
| committer | Simon <simon@hardwired.org.uk> | 2011-04-12 11:19:21 (GMT) |
| commit | 67531c24349c479cd9e765a02050aa8b15dbb439 (patch) | |
| tree | 1d440eeba68ce1ac3ab38abed8784ca11f3b3087 /src | |
| parent | d3553536772c11158ff69f2d442c1504568fea0d (diff) | |
| download | powder-67531c24349c479cd9e765a02050aa8b15dbb439.zip powder-67531c24349c479cd9e765a02050aa8b15dbb439.tar.gz | |
Game save renderer
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 81 |
1 files changed, 79 insertions, 2 deletions
@@ -153,7 +153,8 @@ static const char *it_msg = "'P' will take a screenshot and save it into the current directory.\n" "\n" "\bgCopyright (c) 2008-11 Stanislaw K Skowronek (\brhttp://powder.unaligned.org\bg, \bbirc.unaligned.org #wtf\bg)\n" - "\bgCopyright (c) 2010-11 Simon Robertshaw, Skresanov Savely, cracker64, Bryan Hoyle, Nathan Cousins, jacksonmj, Lieuwe Mosch\n" + "\bgCopyright (c) 2010-11 Simon Robertshaw, Skresanov Savely, cracker64, Bryan Hoyle, Nathan Cousins, jacksonmj,\n" + " Lieuwe Mosch\n" "\n" "\bgTo use online features such as saving, you need to register at: \brhttp://powdertoy.co.uk/Register.html" ; @@ -178,6 +179,7 @@ int death = 0, framerender = 0; int amd = 1; int FPSB = 0; int MSIGN =-1; +int frameidx = 0; //int CGOL = 0; //int GSPEED = 1;//causes my .exe to crash.. int sound_enable = 0; @@ -2551,6 +2553,72 @@ int process_command_old(pixel *vid_buf,char *console,char *console_error) { return 1; } +#ifdef RENDERER +int main(int argc, char *argv[]) +{ + pixel *vid_buf=calloc((XRES+BARSIZE)*(YRES+MENUSIZE), PIXELSIZE); + int load_size, i=0, j=0; + void *load_data = file_load(argv[1], &load_size); + unsigned char c[3]; + FILE *f; + + cmode = CM_FIRE; + sys_pause = 1; + parts = calloc(sizeof(particle), NPART); + for (i=0; i<NPART-1; i++) + parts[i].life = i+1; + parts[NPART-1].life = -1; + pfree = 0; + fire_bg=calloc(XRES*YRES, PIXELSIZE); + memset(fire_r, 0, sizeof(fire_r)); + memset(fire_g, 0, sizeof(fire_g)); + memset(fire_b, 0, sizeof(fire_b)); + memset(fire_bg, 0, XRES*YRES*PIXELSIZE); + + + prepare_alpha(); + + if(load_data && load_size){ + int parsestate = 0; + //parsestate = parse_save(load_data, load_size, 1, 0, 0); + parsestate = parse_save(load_data, load_size, 1, 0, 0, bmap, fvx, fvy, signs, parts, pmap); + + for(i=0; i<30; i++){ + + update_particles(vid_buf); + draw_parts(vid_buf); + render_fire(vid_buf); + memset(vid_buf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE); + } + + render_signs(vid_buf); + + if(parsestate>0){ + //return 0; + info_box(vid_buf, "Save file invalid or from newer version"); + } + + f=fopen(argv[2],"wb"); + fprintf(f,"P6\n%d %d\n255\n",XRES,YRES); + for (j=0; j<YRES; j++) + { + for (i=0; i<XRES; i++) + { + c[0] = PIXR(vid_buf[i]); + c[1] = PIXG(vid_buf[i]); + c[2] = PIXB(vid_buf[i]); + fwrite(c,3,1,f); + } + vid_buf+=XRES+BARSIZE; + } + fclose(f); + + return 1; + } + + return 0; +} +#else int main(int argc, char *argv[]) { int hud_enable = 1; @@ -2776,6 +2844,8 @@ int main(int argc, char *argv[]) while (!sdl_poll()) //the main loop { + frameidx++; + frameidx %= 30; if (!sys_pause||framerender) //only update air if not paused { update_air(); @@ -2808,6 +2878,12 @@ int main(int argc, char *argv[]) if (bsy<0) bsy = 0; + memcpy(mmapx_o, mmapx, sizeof(mmapx)); + memcpy(mmapy_o, mmapy, sizeof(mmapy)); + + memset(mmapx, 0, sizeof(mmapx)); + memset(mmapy, 0, sizeof(mmapy)); + update_particles(vid_buf); //update everything draw_parts(vid_buf); //draw particles @@ -4356,4 +4432,5 @@ int main(int argc, char *argv[]) Py_Finalize();//cleanup any python stuff. #endif return 0; -}
\ No newline at end of file +} +#endif
\ No newline at end of file |
