From 2bdb665cffff93721bbd38b3809a7c420dff2f1c Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 12 Apr 2020 21:59:35 -0400 Subject: Day 3 progress. --- lisparuga.scm | 88 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 39 deletions(-) (limited to 'lisparuga.scm') diff --git a/lisparuga.scm b/lisparuga.scm index b552a7a..dc611cd 100644 --- a/lisparuga.scm +++ b/lisparuga.scm @@ -44,10 +44,13 @@ (define-asset background (load-image (scope-asset "images/background.png"))) (define-class () - (state #:accessor state #:init-value 'play)) + (state #:accessor state #:init-value 'init)) -(define (game-over? lisparuga) - (zero? (lives (& lisparuga actor-canvas game player)))) +(define-method (game-over? (lisparuga )) + (game-over? (& lisparuga game))) + +(define-method (complete? (lisparuga )) + (complete? (& lisparuga game))) (define-method (on-boot (lisparuga )) ;; Scale a small framebuffer up to the window size. @@ -58,34 +61,27 @@ #:height %framebuffer-height) #:area (let ((wc (window-config (current-kernel)))) (make-rect 0 0 (window-width wc) (window-height wc)))))) - ;; This 160x240 canvas is where the actual game actors will get - ;; rendered. - (let ((actor-canvas (make - #:name 'actor-canvas - #:rank 1 - #:views (list (make - #:camera (make - #:width 160 - #:height 240) - #:area (make-rect 80 0 160 240) - #:clear-color (make-color 0.0 0.0 0.0 1.0)))))) - (attach-to lisparuga - (make - #:name 'background - #:rank 0 - #:texture background) - actor-canvas) - (new-game-transition lisparuga))) + (attach-to lisparuga + (make + #:name 'background + #:rank 0 + #:texture background)) + (new-game-transition lisparuga)) (define (new-game-transition lisparuga) (set! (state lisparuga) 'play) (let ((game-over (& lisparuga game-over))) (and game-over (detach game-over))) - (let ((old-game (& lisparuga actor-canvas game))) + (let ((old-game (& lisparuga game))) (and old-game (detach old-game))) - (attach-to (& lisparuga actor-canvas) (make #:name 'game))) + (attach-to lisparuga + (make + #:name 'game + #:rank 1 + #:position (vec2 80.0 0.0))) + (set! (state lisparuga) 'play)) -(define (game-over-transition lisparuga) +(define-method (game-over-transition (lisparuga )) (set! (state lisparuga) 'game-over) (let ((game-over (make #:name 'game-over @@ -94,21 +90,33 @@ (make