diff options
author | Ian C <ianc@noddybox.co.uk> | 2018-11-16 07:49:34 +0000 |
---|---|---|
committer | Ian C <ianc@noddybox.co.uk> | 2018-11-16 07:49:34 +0000 |
commit | 0a4eb088da60cb677b5e7ed767dd9c243ed30434 (patch) | |
tree | 351beaf54819a2af3f5ba5ad60aa2aa4ab926982 | |
parent | dc4f657b4a897ef58e49231a99c78c877ae203a2 (diff) |
Added wind to rain demo.
-rw-r--r-- | xd.c | 36 |
1 files changed, 31 insertions, 5 deletions
@@ -299,7 +299,7 @@ static DemoInfo demotbl[NO_DEMOS]= UsesPixmap }, { - "Rain Demo", + "Rain Demo (LMB to change wind)", RainDemo, UsesPixmap }, @@ -5114,6 +5114,8 @@ static void RainDemo(void) static Dribble dribble[MAX_DRIBBLES]; + static int wind; + int f, r; if (!init) @@ -5136,6 +5138,28 @@ static void RainDemo(void) Cls(); + if (mouse_b&Button1Mask) + { + static time_t bounce=0; + + if (bounce!=time(NULL)) + { + switch(wind) + { + case 0: + wind = 1; + break; + case 1: + wind = -1; + break; + case -1: + wind = 0; + break; + } + bounce=time(NULL); + } + } + if (RND(100) > 95) { for(f = 0; f < MAX_DROPS && drop[f].alive; f++) @@ -5148,7 +5172,7 @@ static void RainDemo(void) drop[f].life = RND2(height-20, height/2); drop[f].y = 0; drop[f].r = 0; - drop[f].x = RND(width); + drop[f].x = RND(width) - (wind * width / 2); } } @@ -5163,7 +5187,7 @@ static void RainDemo(void) dribble[f].alive = TRUE; dribble[f].life = height + DRIBBLE_LEN; dribble[f].y = 0; - dribble[f].x = RND(width); + dribble[f].x = RND(width) - (wind * width / 2); for(r = 0; r < DRIBBLE_LEN; r++) { @@ -5193,7 +5217,7 @@ static void RainDemo(void) if (dribble[f].life > 0) { dribble[f].y++; - dribble[f].x += RND(3) - 1; + dribble[f].x += RND(3) - 1 + wind; dribble[f].life--; for(r = 0; r < DRIBBLE_LEN; r++) @@ -5223,10 +5247,12 @@ static void RainDemo(void) if (drop[f].life > 0) { drop[f].y++; + drop[f].x += wind; drop[f].life--; FCircle(drop[f].x, drop[f].y, 3, blue); - Line(drop[f].x, drop[f].y, drop[f].x, drop[f].y - 5, blue); + Line(drop[f].x, drop[f].y, + drop[f].x - wind * 5, drop[f].y - 5, blue); } else { |