(define-module (community-garden view) #:use-module (catbird asset) #:use-module (catbird node) #:use-module (catbird node-2d) #:use-module (chickadee config) #:use-module (chickadee graphics color) #:use-module (chickadee graphics path) #:use-module (chickadee graphics text) #:use-module (chickadee graphics texture) #:use-module (chickadee math vector) #:use-module (chickadee scripting) #:use-module (community-garden garden-bed) #:use-module (community-garden plant) #:use-module (goblins) #:use-module (ice-9 atomic) #:use-module (ice-9 match) #:use-module (oop goops) #:use-module (srfi srfi-43) #:export (%window-width %window-height )) ;; Hack to fix broken version of this in catbird upstream. (define-method (on-change (sprite ) slot-name old new) (case slot-name ((texture) (let ((new (artifact (->asset new)))) (set! (width sprite) (texture-width new)) (set! (height sprite) (texture-height new)))))) (define %window-width 1024) (define %window-height 768) (define %tile-width 64.0) (define %tile-height 64.0) (define font-file (scope-datadir "fonts/Inconsolata-Regular.otf")) (define-asset (title-font (f font-file)) (load-font f 24)) (define-asset (plant-tile-font (f font-file)) (load-font f 32)) (define-asset (sunflower-texture (f "assets/images/sunflower.png")) (load-image f)) (define-asset (cabbage-texture (f "assets/images/cabbage.png")) (load-image f)) (define-class () (vat #:getter vat #:init-keyword #:vat) (visitor #:getter visitor #:init-keyword #:visitor) (name-box #:getter name-box #:init-keyword #:name-box) (garden-bed-box #:getter garden-bed-box #:init-keyword #:garden-bed-box) (prev-garden #:accessor prev-garden #:init-value #f) (tiles #:accessor tiles #:init-value #())) (define-method (garden-bed (garden )) (atomic-box-ref (garden-bed-box garden))) (define-method (garden-name (garden )) (atomic-box-ref (name-box garden))) (define-method (on-boot (garden )) (define title (make