diff --git a/includes/interface.h b/includes/interface.h index 57a643236..fdd21e4cc 100644 --- a/includes/interface.h +++ b/includes/interface.h @@ -176,6 +176,8 @@ extern int zoom_en; extern int zoom_x, zoom_y; extern int zoom_wx, zoom_wy; +extern int drawgrav_enable; + void menu_count(void); void get_sign_pos(int i, int *x0, int *y0, int *w, int *h); diff --git a/src/graphics.c b/src/graphics.c index a32d25086..459706ef5 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -2553,7 +2553,7 @@ void draw_parts(pixel *vid) cr *= x; cg *= x; cb *= x; - vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr>255?255:cr,cg>255?255:cg,cb>255?255:cb); + vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr>255?255:cr,cg>255?255:cg,cb>255?255:cb); cr >>= 4; cg >>= 4; cb >>= 4; @@ -2587,15 +2587,26 @@ void draw_parts(pixel *vid) cr = cr>255?255:cr; cg = cg>255?255:cg; cb = cb>255?255:cb; - blendpixel(vid, nx, ny, cr, cg, cb, 192); - blendpixel(vid, nx+1, ny, cr, cg, cb, 96); - blendpixel(vid, nx-1, ny, cr, cg, cb, 96); - blendpixel(vid, nx, ny+1, cr, cg, cb, 96); - blendpixel(vid, nx, ny-1, cr, cg, cb, 96); - blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32); - blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32); - blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32); - blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32); + if(cmode == CM_PERS){ + if(parts[i].pavg[0] && parts[i].pavg[1]) + { + draw_line(vid, nx, ny, parts[i].pavg[0], parts[i].pavg[1], cr, cg, cb, XRES+BARSIZE); + } + else + { + vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr, cg, cb); + } + } else { + blendpixel(vid, nx, ny, cr, cg, cb, 192); + blendpixel(vid, nx+1, ny, cr, cg, cb, 96); + blendpixel(vid, nx-1, ny, cr, cg, cb, 96); + blendpixel(vid, nx, ny+1, cr, cg, cb, 96); + blendpixel(vid, nx, ny-1, cr, cg, cb, 96); + blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32); + blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32); + blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32); + blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32); + } } } //Life can be 11 too, so don't just check for 10 diff --git a/src/interface.c b/src/interface.c index 7049d9fcb..a0500b7be 100644 --- a/src/interface.c +++ b/src/interface.c @@ -78,6 +78,8 @@ int zoom_wx=0, zoom_wy=0; unsigned char ZFACTOR = 256/ZSIZE_D; unsigned char ZSIZE = ZSIZE_D; +int drawgrav_enable = 0; + void menu_count(void)//puts the number of elements in each section into .itemcount { int i=0; diff --git a/src/main.c b/src/main.c index bcb524a81..ac72abf34 100644 --- a/src/main.c +++ b/src/main.c @@ -1804,7 +1804,7 @@ int main(int argc, char *argv[]) if (bsy<0) bsy = 0; - if(ngrav_enable) + if(ngrav_enable && drawgrav_enable) draw_grav(vid_buf); draw_walls(vid_buf); update_particles(vid_buf); //update everything @@ -2224,10 +2224,17 @@ int main(int argc, char *argv[]) } if (sdl_key=='g') { - if (sdl_mod & (KMOD_SHIFT)) - GRID_MODE = (GRID_MODE+9)%10; + if(sdl_mod & (KMOD_CTRL)) + { + drawgrav_enable =! drawgrav_enable; + } else - GRID_MODE = (GRID_MODE+1)%10; + { + if (sdl_mod & (KMOD_SHIFT)) + GRID_MODE = (GRID_MODE+9)%10; + else + GRID_MODE = (GRID_MODE+1)%10; + } } if (sdl_key=='m') { diff --git a/src/powder.c b/src/powder.c index e6e9e7652..016b54ba2 100644 --- a/src/powder.c +++ b/src/powder.c @@ -769,10 +769,15 @@ inline int create_part(int p, int x, int y, int t)//the function for creating a { parts[i].pavg[1] = pv[y/CELL][x/CELL]; } - if (t==PT_QRTZ) + else if (t==PT_QRTZ) { parts[i].pavg[1] = pv[y/CELL][x/CELL]; } + else + { + parts[i].pavg[0] = 0.0f; + parts[i].pavg[1] = 0.0f; + } if (t!=PT_STKM&&t!=PT_STKM2)//set everything to default values first, except for stickman. { parts[i].x = (float)x;