summaryrefslogtreecommitdiff
path: root/lisparuga/utils.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2016-05-15 20:53:25 -0400
committerDavid Thompson <dthompson2@worcester.edu>2016-05-15 20:56:38 -0400
commitfe6c06e9a0ff4400dbb8c30f330eb945454a9299 (patch)
treea2cecfedbfbde281d46cd4ea8b8eb01cf7863643 /lisparuga/utils.scm
parente495b361e0e9ac5f723928c9e626320ae5e26716 (diff)
Factor out sound and rendering procedures.
Diffstat (limited to 'lisparuga/utils.scm')
-rw-r--r--lisparuga/utils.scm15
1 files changed, 14 insertions, 1 deletions
diff --git a/lisparuga/utils.scm b/lisparuga/utils.scm
index 0c67504..db7c1d8 100644
--- a/lisparuga/utils.scm
+++ b/lisparuga/utils.scm
@@ -15,12 +15,25 @@
;;; along with Lisparuga. If not, see <http://www.gnu.org/licenses/>.
(define-module (lisparuga utils)
+ #:use-module (sly input keyboard)
#:use-module (sly math rect)
#:use-module (sly math vector)
+ #:use-module (sly signal)
#:export (resolution
origin2
- bounds))
+ bounds
+ key-toggle))
(define resolution (vector2 120 160))
(define origin2 (vector2 0 0))
(define bounds (make-rect (vector2 0 0) resolution))
+
+(define (key-toggle key)
+ "Create a signal that is initially #f and toggles between #t and #f
+each time KEY is pressed."
+ (signal-fold (lambda (down? previous)
+ (and down? (not previous)))
+ #f
+ (signal-filter identity #f
+ ;; Ignore repeated key down signals.
+ (signal-drop-repeats (key-down? key)))))