From a20d05376cb2de636abebd64da3eeb6c7e8c7bac Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Oct 2022 21:40:09 -0400 Subject: Day 1 progress. --- apple-town-fair/game.scm | 87 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 10 deletions(-) (limited to 'apple-town-fair/game.scm') diff --git a/apple-town-fair/game.scm b/apple-town-fair/game.scm index 878dbac..13ec3f0 100644 --- a/apple-town-fair/game.scm +++ b/apple-town-fair/game.scm @@ -17,10 +17,13 @@ #:use-module (apple-town-fair assets) #:use-module (apple-town-fair common) #:use-module (apple-town-fair config) + #:use-module (apple-town-fair dialog-box) #:use-module (apple-town-fair light-overlay) + #:use-module (apple-town-fair menu) #:use-module (apple-town-fair place) #:use-module (apple-town-fair save-state) #:use-module (apple-town-fair time-display) + #:use-module (catbird) #:use-module (catbird mode) #:use-module (catbird node) #:use-module (catbird node-2d) @@ -38,8 +41,24 @@ (define %day-end 2) (define %start-money 20.0) +(define-method (make-home) + (make + #:name 'place + #:title "Home" + #:background home-background-image + #:actions (list (make + #:name "Test" + #:condition (const #t) + #:exec (lambda (mode) + (pk 'testing)))))) + +(define-method (make-farm-stand) + (make + #:name 'place + #:title "Farm Stand" + #:background farm-stand-background-image)) + (define-class () - (place #:accessor place #:init-keyword #:place #:init-value 'home) (story-points #:accessor story-points #:init-keyword #:story-points #:init-value 0) (day #:accessor day #:init-keyword #:day #:init-value 0) @@ -51,12 +70,17 @@ (define-method (on-enter (mode )) (let ((scene (parent mode))) (attach-to scene - (make - #:name 'home - #:background home-background-image) (make #:name 'overlay #:rank 8) + (make + #:name 'dialog + #:rank 9 + #:text "Hello, world! +How many characters fit on a line? 50 characters!! +Hello, world! +Hello, world! +Hello, world!") (make #:name 'time #:rank 9)) @@ -65,6 +89,22 @@ (- %game-height (height (& scene time)))) (reset-game mode))) +(define-method (change-place (mode ) (new-place )) + (let* ((scene (parent mode)) + (old-place (& scene place))) + (when old-place + (detach old-place)) + (attach-to scene new-place) + (set! (where (& scene time)) (title new-place)) + (advance-clock mode 1) + (when (& scene menu) + (detach (& scene menu))) + (attach-to scene + (make + #:name 'menu + #:rank 9 + #:items (map name (actions new-place)))))) + (define-method (change-time (mode ) t) (let ((scene (parent mode))) (set! (time mode) (clamp %time-wake %time-sleep t)) @@ -77,11 +117,15 @@ (set! (day (& scene time)) (day mode)))) (define-method (reset-game (mode )) - (change-day mode %day-start) - (change-time mode %time-wake) - (set! (inventory mode) '()) - (set! (flags mode) '()) - (set! (money mode) %start-money)) + (let ((scene (parent mode))) + (change-day mode %day-start) + (change-time mode %time-wake) + (change-place mode (make-home)) + (set! (story-points mode) 0) + (set! (inventory mode) '()) + (set! (flags mode) '()) + (set! (money mode) %start-money) + (hide (& scene dialog)))) (define-method (go-to-bed (mode )) (let ((scene (parent mode))) @@ -99,8 +143,31 @@ (define-method (advance-clock-once (mode )) (advance-clock mode 1)) -(bind-input (key-press 'space) advance-clock-once) +(define-method (quit-game (mode )) + (exit-catbird)) + +(define-method (go-to-farm-stand (mode )) + (change-place mode (make-farm-stand))) + +(define-method (go-home (mode )) + (change-place mode (make-home))) + +(define-method (up-selection (mode )) + (up-selection (& (parent mode) menu) 1)) + +(define-method (down-selection (mode )) + (down-selection (& (parent mode) menu) 1)) + +(define-method (confirm-selection (mode )) + (pk 'chose (selection (& (parent mode) menu)))) + (bind-input (key-press 'r) reset-game) +(bind-input (key-press 'escape) quit-game) +(bind-input (key-press 'f) go-to-farm-stand) +(bind-input (key-press 'h) go-home) +(bind-input (key-press 'up) up-selection) +(bind-input (key-press 'down) down-selection) +(bind-input (key-press 'return) confirm-selection) (define (make-game-scene) (make -- cgit v1.2.3