diff options
Diffstat (limited to 'lisparuga.scm')
-rw-r--r-- | lisparuga.scm | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/lisparuga.scm b/lisparuga.scm index 06949cc..125fc55 100644 --- a/lisparuga.scm +++ b/lisparuga.scm @@ -105,6 +105,33 @@ (define-method (win-transition (lisparuga <lisparuga>)) (set! (state lisparuga) 'win)) +(define-method (pause-transition (lisparuga <lisparuga>)) + (set! (state lisparuga) 'pause) + (pause (& lisparuga game)) + (let ((container (make <node-2d> + #:name 'pause + #:rank 999))) + (attach-to container + (make <filled-rect> + #:region (make-rect 80.0 0.0 160.0 240.0) + #:color (make-color 0.0 0.0 0.0 0.4)) + (make <label> + #:name 'pause + #:rank 1 + #:text "PAUSE" + #:position (vec2 160.0 120.0) + #:align 'center + #:vertical-align 'center)) + (attach-to lisparuga container))) + +(define-method (resume-transition (lisparuga <lisparuga>)) + (set! (state lisparuga) 'play) + (detach (& lisparuga pause)) + (resume (& lisparuga game)) + (if (key-pressed? 'z) + (start-player-shooting (& lisparuga game)) + (stop-player-shooting (& lisparuga game)))) + (define-method (update (lisparuga <lisparuga>) dt) (match (state lisparuga) ('play @@ -130,6 +157,11 @@ (toggle-player-polarity (& lisparuga game)))) ('c (unless repeat? (fire-player-homing-missiles (& lisparuga game)))) + ('return (pause-transition lisparuga)) + (_ #t))) + ('pause + (match key + ('return (resume-transition lisparuga)) (_ #t))) ((or 'win 'game-over) (match key @@ -148,7 +180,7 @@ (define* (launch-lisparuga #:key (window-width 640) (window-height 480)) (boot-kernel (make <kernel> #:window-config (make <window-config> - #:title "Lisparuga" + #:title "lisparuga" #:width window-width #:height window-height)) (lambda () (make <lisparuga>)))) |