summaryrefslogtreecommitdiff
path: root/lisparuga.scm
diff options
context:
space:
mode:
Diffstat (limited to 'lisparuga.scm')
-rw-r--r--lisparuga.scm34
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>))))