summaryrefslogtreecommitdiff
path: root/2d/game.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2014-01-26 14:37:23 -0500
committerDavid Thompson <dthompson2@worcester.edu>2014-01-26 14:37:23 -0500
commit446750df6a786a8fcce7309e2f9b145e53e24e4f (patch)
tree4672ebcc520554b6245eea10849b0ab7ce5b87dd /2d/game.scm
parent0b957a40ae993bf337830bc30915a13c0be99af3 (diff)
Move SDL event handling to a separate module.
* 2d/event.scm: New module. * 2d/game.scm: Remove event handling code. * 2d/keyboard.scm: Import (2d event) instead of (2d game). * 2d/mouse.scm: Import (2d event) instead of (2d game). * 2d/window.scm: Import (2d event) instead of (2d game).
Diffstat (limited to '2d/game.scm')
-rw-r--r--2d/game.scm28
1 files changed, 3 insertions, 25 deletions
diff --git a/2d/game.scm b/2d/game.scm
index eb297a9..847defa 100644
--- a/2d/game.scm
+++ b/2d/game.scm
@@ -27,6 +27,7 @@
#:use-module (figl gl)
#:use-module (2d agenda)
#:use-module (2d coroutine)
+ #:use-module (2d event)
#:use-module (2d game)
#:use-module (2d signals)
#:use-module (2d vector2)
@@ -39,8 +40,7 @@
pause-game
resume-game
game-running?
- game-paused?
- register-event-handler))
+ game-paused?))
;;;
;;; Game Loop
@@ -80,7 +80,7 @@
many times as `tick-interval` can divide ACCUMULATOR. The return value
is the unused accumulator time."
(while (>= (accumulator) (tick-interval))
- (read-input)
+ (process-events)
(tick-agenda! *global-agenda*)
(accumulator (- (accumulator) (tick-interval)))))
@@ -141,25 +141,3 @@ milliseconds of the last iteration of the loop."
(define (quit-game)
"Finish the current frame and terminate the game loop."
(game-loop-status 'stopped))
-
-;;;
-;;; Event Handling
-;;;
-
-(define read-input
- (let ((e (SDL:make-event)))
- (lambda ()
- "Process all events in the input event queue."
- (while (SDL:poll-event e)
- (handle-event e)))))
-
-(define event-handlers (make-hash-table))
-
-(define (register-event-handler event-type proc)
- (hashq-set! event-handlers event-type proc))
-
-(define (handle-event e)
- "Run the relevant hook for the event E."
- (let ((handle (hashq-get-handle event-handlers (SDL:event:type e))))
- (when handle
- ((cdr handle) e))))