summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2011-06-27 13:01:07 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-06-27 13:01:07 (GMT)
commit36ee81fc6b472ef956ad742ea3e626417c5317fe (patch)
tree0aba1a536e67d40e4c9a49775ea37ebd3af72b12 /src
parent43b75ea05855334646fc84f49729ac8d8d8763b2 (diff)
downloadpowder-36ee81fc6b472ef956ad742ea3e626417c5317fe.zip
powder-36ee81fc6b472ef956ad742ea3e626417c5317fe.tar.gz
Better photons for persistent display, ability to toggle gravity view (ctrl+g)
Diffstat (limited to 'src')
-rw-r--r--src/graphics.c31
-rw-r--r--src/interface.c2
-rw-r--r--src/main.c15
-rw-r--r--src/powder.c7
4 files changed, 40 insertions, 15 deletions
diff --git a/src/graphics.c b/src/graphics.c
index a32d250..459706e 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 7049d9f..a0500b7 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 bcb524a..ac72abf 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 e6e9e76..016b54b 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;