diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-05-24 18:53:50 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-05-24 18:53:50 (GMT) |
| commit | 8196d2a645d386b5c97134c446e959e5e50a345b (patch) | |
| tree | 33e729715a6122fa5b8dac6f9abf7b784bfbfbc3 /src/main.c | |
| parent | 5a117c2d27f513942d7621980a79d357af122ba4 (diff) | |
| parent | 1fb778724329782bb5616da032742dce4dbea131 (diff) | |
| download | powder-8196d2a645d386b5c97134c446e959e5e50a345b.zip powder-8196d2a645d386b5c97134c446e959e5e50a345b.tar.gz | |
Merge pull request #66 from jacob1/Modstuff
Code structure improvements for graphics/drawing, improvements to prevent accidental infinite loops in Lua, Fixes for fusion, improvements for VOID types. And other minor improvements
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 118 |
1 files changed, 29 insertions, 89 deletions
@@ -151,7 +151,7 @@ static const char *it_msg = "\n" "Contributors: \bgStanislaw K Skowronek (\brhttp://powder.unaligned.org\bg, \bbirc.unaligned.org #wtf\bg),\n" "\bgSimon Robertshaw, Skresanov Savely, cracker64, Catelite, Bryan Hoyle, Nathan Cousins, jacksonmj,\n" - "\bgLieuwe Mosch, Anthony Boot, Matthew \"me4502\", MaksProg\n" + "\bgLieuwe Mosch, Anthony Boot, Matthew \"me4502\", MaksProg, jacob1\n" "\n" "\bgTo use online features such as saving, you need to register at: \brhttp://powdertoy.co.uk/Register.html\n" "\n" @@ -221,6 +221,7 @@ int frameidx = 0; //int CGOL = 0; //int GSPEED = 1;//causes my .exe to crash.. int sound_enable = 0; +int loop_time = 0; int debug_flags = 0; int debug_perf_istart = 1; @@ -755,7 +756,7 @@ int main(int argc, char *argv[]) void *http_ver_check, *http_session_check = NULL; char *ver_data=NULL, *check_data=NULL, *tmp; //char console_error[255] = ""; - int result, i, j, bq, bc = 0, fire_fc=0, do_check=0, do_s_check=0, old_version=0, http_ret=0,http_s_ret=0, major, minor, buildnum, is_beta = 0, old_ver_len, new_message_len=0; + int result, i, j, bq, bc = 0, do_check=0, do_s_check=0, old_version=0, http_ret=0,http_s_ret=0, major, minor, buildnum, is_beta = 0, old_ver_len, new_message_len=0; #ifdef INTERNAL int vs = 0; #endif @@ -770,6 +771,7 @@ int main(int argc, char *argv[]) unsigned int rgbSave = PIXRGB(127,0,0); SDL_AudioSpec fmt; int username_flash = 0, username_flash_t = 1; + int saveOpenError = 0; #ifdef PTW32_STATIC_LIB pthread_win32_process_attach_np(); pthread_win32_thread_attach_np(); @@ -779,7 +781,6 @@ int main(int argc, char *argv[]) part_vbuf = calloc((XRES+BARSIZE)*(YRES+MENUSIZE), PIXELSIZE); //Extra video buffer part_vbuf_store = part_vbuf; pers_bg = calloc((XRES+BARSIZE)*YRES, PIXELSIZE); - int saveOpenError = 0; gravity_init(); GSPEED = 1; @@ -902,12 +903,12 @@ int main(int argc, char *argv[]) } else if (!strncmp(argv[i], "ptsave", 7) && i+1<argc) { - puts("Got ptsave"); int ci = 0, ns = 0, okay = 0; char * tempString = argv[i+1]; int tempStringLength = strlen(argv[i+1])-7; int tempSaveID = 0; char tempNumberString[32]; + puts("Got ptsave"); i++; tempNumberString[31] = 0; tempNumberString[0] = 0; @@ -1002,54 +1003,12 @@ int main(int argc, char *argv[]) update_airh(); } -#ifdef OGLR - part_vbuf = vid_buf; -#else - if(ngrav_enable && display_mode & DISPLAY_WARP) - { - part_vbuf = part_vbuf_store; - memset(vid_buf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE); - } else { - part_vbuf = vid_buf; - } -#endif - if(gravwl_timeout) { if(gravwl_timeout==1) gravity_mask(); gravwl_timeout--; } -#ifdef OGLR - if (display_mode & DISPLAY_PERS)//save background for persistent, then clear - { - clearScreen(0.01f); - memset(part_vbuf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE); - } - else //clear screen every frame - { - clearScreen(1.0f); - memset(part_vbuf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE); - if (display_mode & DISPLAY_AIR)//air only gets drawn in these modes - { - draw_air(part_vbuf); - } - } -#else - if (display_mode & DISPLAY_AIR)//air only gets drawn in these modes - { - draw_air(part_vbuf); - } - else if (display_mode & DISPLAY_PERS)//save background for persistent, then clear - { - memcpy(part_vbuf, pers_bg, (XRES+BARSIZE)*YRES*PIXELSIZE); - memset(part_vbuf+((XRES+BARSIZE)*YRES), 0, ((XRES+BARSIZE)*YRES*PIXELSIZE)-((XRES+BARSIZE)*YRES*PIXELSIZE)); - } - else //clear screen every frame - { - memset(part_vbuf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE); - } -#endif //Can't be too sure (Limit the cursor size) if (bsx>1180) @@ -1067,10 +1026,19 @@ int main(int argc, char *argv[]) sandcolour_b = sandcolour_r = sandcolour_g = (int)(20.0f*sin((float)sandcolour_frame*(M_PI/180.0f))); sandcolour_frame++; sandcolour_frame%=360; - - if(ngrav_enable && drawgrav_enable) - draw_grav(vid_buf); - draw_walls(part_vbuf); + +#ifdef OGLR + part_vbuf = vid_buf; +#else + if(ngrav_enable && (display_mode & DISPLAY_WARP)) + { + part_vbuf = part_vbuf_store; + memset(vid_buf, 0, (XRES+BARSIZE)*YRES*PIXELSIZE); + } else { + part_vbuf = vid_buf; + } +#endif + render_before(part_vbuf); if(debug_flags & (DEBUG_PERFORMANCE_CALC|DEBUG_PERFORMANCE_FRAME)) { @@ -1099,8 +1067,9 @@ int main(int argc, char *argv[]) #endif } - render_parts(part_vbuf); //draw particles - draw_other(part_vbuf); + render_after(part_vbuf, vid_buf); + if(su == WL_GRAV+100) + draw_grav_zones(part_vbuf); if(debug_flags & (DEBUG_PERFORMANCE_CALC|DEBUG_PERFORMANCE_FRAME)) { @@ -1118,9 +1087,6 @@ int main(int argc, char *argv[]) debug_perf_istart %= DEBUG_PERF_FRAMECOUNT; } - if(sl == WL_GRAV+100 || sr == WL_GRAV+100) - draw_grav_zones(part_vbuf); - gravity_update_async(); //Check for updated velocity maps from gravity thread if (!sys_pause||framerender) //Only update if not paused memset(gravmap, 0, (XRES/CELL)*(YRES/CELL)*sizeof(float)); //Clear the old gravmap @@ -1130,31 +1096,6 @@ int main(int argc, char *argv[]) sys_pause = 1; } - if (display_mode & DISPLAY_PERS) - { - if (!fire_fc)//fire_fc has nothing to do with fire... it is a counter for diminishing persistent view every 3 frames - { - dim_copy_pers(pers_bg, vid_buf); - } - else - { - memcpy(pers_bg, vid_buf, (XRES+BARSIZE)*YRES*PIXELSIZE); - } - fire_fc = (fire_fc+1) % 3; - } - -#ifndef OGLR - if (render_mode & FIREMODE) - render_fire(part_vbuf); -#endif - - render_signs(part_vbuf); - -#ifndef OGLR - if(ngrav_enable && display_mode & DISPLAY_WARP) - render_gravlensing(part_vbuf, vid_buf); -#endif - memset(vid_buf+((XRES+BARSIZE)*YRES), 0, (PIXELSIZE*(XRES+BARSIZE))*MENUSIZE);//clear menu areas clearrect(vid_buf, XRES-1, 0, BARSIZE+1, YRES); @@ -1553,9 +1494,8 @@ int main(int argc, char *argv[]) } else { - rgbSave = decorations_ui(vid_buf,&bsx,&bsy,rgbSave);//decoration_mode = !decoration_mode; decorations_enable = 1; - sys_pause=1; + rgbSave = decorations_ui(vid_buf,&bsx,&bsy,rgbSave);//decoration_mode = !decoration_mode; } } if (sdl_key=='g') @@ -1590,8 +1530,13 @@ int main(int argc, char *argv[]) for (i=0; i<NPART; i++) if (parts[i].type==PT_SPRK) { - parts[i].type = parts[i].ctype; - parts[i].life = 0; + if (parts[i].ctype >= 0 && parts[i].ctype < PT_NUM) + { + parts[i].type = parts[i].ctype; + parts[i].life = 0; + } + else + kill_part(i); } } else @@ -2807,8 +2752,6 @@ int main(int argc, char *argv[]) break; } free(console); - if (!console_mode) - hud_enable = 1; #else char *console; sys_pause = 1; @@ -2821,12 +2764,9 @@ int main(int argc, char *argv[]) break; } free(console); - if (!console_mode) - hud_enable = 1; #endif } - //execute python step hook sdl_blit(0, 0, XRES+BARSIZE, YRES+MENUSIZE, vid_buf, XRES+BARSIZE); //Setting an element for the stick man |
