From c00cf991f9eaf8c671e56a2f2b2d30e3f3170a1d Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Tue, 28 May 2024 23:47:54 -0700 Subject: [PATCH] Filled Polygon "nearby" sound effect When red & green endpoint dots are being dragged near each other, play a different sound. Based on CC Attribution 4.0 sound by Eliot Lash (see CHANGES.txt & AUTHORS.txt). --- docs/AUTHORS.txt | 8 +++++++- docs/CHANGES.txt | 13 +++++++++---- magic/sounds/polyfill_nearby.ogg | Bin 0 -> 23891 bytes magic/src/polyfill.c | 26 +++++++++++++++++++++++++- 4 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 magic/sounds/polyfill_nearby.ogg diff --git a/docs/AUTHORS.txt b/docs/AUTHORS.txt index f7c086777..46b618622 100644 --- a/docs/AUTHORS.txt +++ b/docs/AUTHORS.txt @@ -153,13 +153,19 @@ June 17, 2002 - May 28, 2024 Scanline polygon fill routine based on public-domain code by Darel Rex Finley, 2007 - Filled Polygon sound effects (place, move, finish) based on + Filled Polygon "place", "move", and "finish" sound effects based on "success_02.wav" (https://freesound.org/people/Kenneth_Cooney/sounds/463067/), "success.wav" (https://freesound.org/people/Kenneth_Cooney/sounds/457547/), & "Completed.wav" (https://freesound.org/people/Kenneth_Cooney/sounds/609336/) respectively. Creative Commons 0 by Kenneth Cooney + Filled Polygon "nearby" sound effect based on "JacobsLadderSingle2.flac" + . + Creative Commons Attribution 4.0 by Eliot Lash + + + Bloom magic tool by Bill Kendrick Googly Eyes sound effect: "Torch Crackle.wav" diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 4a788e455..4acb67475 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -21,10 +21,15 @@ https://tuxpaint.org/ + Code & icon by Bill Kendrick + Scanline polygon fill routine based on public-domain code by Darel Rex Finley, 2007 - + + Sound effects based on + - "success.wav", "success_02.wav", and "Completed.wav", + Creative Commons 0 by Kenneth Cooney + + + - "JacobsLadderSingle2.flac", + Creative Commons Attribution 4.0 by Eliot Lash + + Closes https://sourceforge.net/p/tuxpaint/feature-requests/251/ * Magic Tool Improvements: diff --git a/magic/sounds/polyfill_nearby.ogg b/magic/sounds/polyfill_nearby.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fd18d7b2b25ab34f619eabef11478c5e35e9c209 GIT binary patch literal 23891 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 F{~sHFWuyQA literal 0 HcmV?d00001 diff --git a/magic/src/polyfill.c b/magic/src/polyfill.c index ad78eb8f3..7413be8cb 100644 --- a/magic/src/polyfill.c +++ b/magic/src/polyfill.c @@ -41,6 +41,7 @@ char *polyfill_icon_filenames[NUM_TOOLS] = { enum { SND_PLACE, SND_MOVE, + SND_NEARBY, SND_FINISH, NUM_SOUNDS }; @@ -48,6 +49,7 @@ enum { char *polyfill_snd_filenames[NUM_SOUNDS] = { "polyfill_place.ogg", "polyfill_move.ogg", + "polyfill_nearby.ogg", "polyfill_finish.ogg", }; @@ -281,7 +283,29 @@ polyfill_drag(magic_api * api, int which ATTRIBUTE_UNUSED, polyfill_pt_y[polyfill_editing] = y; polyfill_draw_preview(api, canvas, 1); - api->playsound(snd_effects[SND_MOVE], (x * 255) / canvas->w, 255); + + if (polyfill_editing == polyfill_num_pts - 1 && + polyfill_num_pts >= 3 && + x >= polyfill_pt_x[0] - SNAP_SIZE && + x <= polyfill_pt_x[0] + SNAP_SIZE && + y >= polyfill_pt_y[0] - SNAP_SIZE && + y <= polyfill_pt_y[0] + SNAP_SIZE) { + /* If placing/moving the final (red) point, and it's + near the initial (green) point, play an electrostatic sound */ + api->playsound(snd_effects[SND_NEARBY], (x * 255) / canvas->w, 255); + } else if (polyfill_editing == 0 && + polyfill_num_pts >= 3 && + x >= polyfill_pt_x[polyfill_num_pts - 1] - SNAP_SIZE && + x <= polyfill_pt_x[polyfill_num_pts - 1] + SNAP_SIZE && + y >= polyfill_pt_y[polyfill_num_pts - 1] - SNAP_SIZE && + y <= polyfill_pt_y[polyfill_num_pts - 1] + SNAP_SIZE) { + /* If moving the initial (green) point, and it's + near the final (red) point, also play an electrostatic sound */ + api->playsound(snd_effects[SND_NEARBY], (x * 255) / canvas->w, 255); + } else { + /* Otherwise, play the normal "moving a point" sound */ + api->playsound(snd_effects[SND_MOVE], (x * 255) / canvas->w, 255); + } update_rect->x = 0; update_rect->y = 0;