From ee47b2dd6817e44a3cd388403a574a4b9bf61482 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Sun, 9 Oct 2011 13:55:16 +0100 Subject: [PATCH] Pretty effect when drawing powders, activate with 'n' --- includes/defines.h | 1 + includes/graphics.h | 5 +++++ src/graphics.c | 5 +++++ src/main.c | 10 ++++++++++ src/powder.c | 14 ++++++++++++++ 5 files changed, 35 insertions(+) diff --git a/includes/defines.h b/includes/defines.h index 1efa916f9..667ad69d1 100644 --- a/includes/defines.h +++ b/includes/defines.h @@ -162,6 +162,7 @@ extern int aheat_enable; extern int decorations_enable; extern int hud_enable; extern int debug_flags; +extern int pretty_powder; int limitFPS; int water_equal_test; diff --git a/includes/graphics.h b/includes/graphics.h index 24d1ffe2f..90dd4a7c5 100644 --- a/includes/graphics.h +++ b/includes/graphics.h @@ -40,6 +40,11 @@ extern unsigned cmode; extern SDL_Surface *sdl_scrn; extern int sdl_scale; +extern int sandcolour_r; +extern int sandcolour_g; +extern int sandcolour_b; +extern int sandcolour_frame; + extern unsigned char fire_r[YRES/CELL][XRES/CELL]; extern unsigned char fire_g[YRES/CELL][XRES/CELL]; extern unsigned char fire_b[YRES/CELL][XRES/CELL]; diff --git a/src/graphics.c b/src/graphics.c index eec594652..c038f10db 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -25,6 +25,11 @@ unsigned cmode = CM_FIRE; SDL_Surface *sdl_scrn; int sdl_scale = 1; +int sandcolour_r = 0; +int sandcolour_g = 0; +int sandcolour_b = 0; +int sandcolour_frame = 0; + unsigned char fire_r[YRES/CELL][XRES/CELL]; unsigned char fire_g[YRES/CELL][XRES/CELL]; unsigned char fire_b[YRES/CELL][XRES/CELL]; diff --git a/src/main.c b/src/main.c index ac3512ba6..f3d655f10 100644 --- a/src/main.c +++ b/src/main.c @@ -179,6 +179,7 @@ int decorations_enable = 1; int hud_enable = 1; int active_menu = 0; int framerender = 0; +int pretty_powder = 0; int amd = 1; int FPSB = 0; int MSIGN =-1; @@ -1801,6 +1802,13 @@ int main(int argc, char *argv[]) bsy = 1180; if (bsy<0) bsy = 0; + + //Pretty powders, colour cycle + //sandcolour_r = 0; + //sandcolour_g = 0; + 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); @@ -2362,6 +2370,8 @@ int main(int argc, char *argv[]) aheat_enable = !aheat_enable; if (sdl_key=='h') hud_enable = !hud_enable; + if (sdl_key=='n') + pretty_powder = !pretty_powder; if (sdl_key=='p') dump_frame(vid_buf, XRES, YRES, XRES+BARSIZE); if (sdl_key=='v'&&(sdl_mod & (KMOD_LCTRL|KMOD_RCTRL))) diff --git a/src/powder.c b/src/powder.c index e8b875bdc..077a2429d 100644 --- a/src/powder.c +++ b/src/powder.c @@ -987,6 +987,20 @@ inline int create_part(int p, int x, int y, int tv)//the function for creating a photons[y][x] = t|(i<<8); if (t!=PT_STKM&&t!=PT_STKM2 && t!=PT_PHOT && t!=PT_NEUT) pmap[y][x] = t|(i<<8); + + //Fancy dust effects for powder types + if((ptypes[t].properties & TYPE_PART) && pretty_powder) + { + int colr, colg, colb, randa; + randa = (rand()%30)-15; + colr = (PIXR(ptypes[t].pcolors)+sandcolour_r+(rand()%20)-10+randa); + colg = (PIXG(ptypes[t].pcolors)+sandcolour_g+(rand()%20)-10+randa); + colb = (PIXB(ptypes[t].pcolors)+sandcolour_b+(rand()%20)-10+randa); + colr = colr>255 ? 255 : (colr<0 ? 0 : colr); + colg = colg>255 ? 255 : (colg<0 ? 0 : colg); + colb = colb>255 ? 255 : (colb<0 ? 0 : colb); + parts[i].dcolour = 0xFF000000 | (colr<<16) | (colg<<8) | colb; + } return i; }