From 8fc01b81e0f95c8ea187d179b6f6a6b9afc4e79e Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 25 Apr 2021 14:51:00 -0400 Subject: Break code up into modules. --- test-subject/assets.scm | 52 +++ test-subject/device.scm | 42 ++ test-subject/game.scm | 1126 +++++++++++++++++++++++++++++++++++++++++++++ test-subject/text-box.scm | 37 ++ 4 files changed, 1257 insertions(+) create mode 100644 test-subject/assets.scm create mode 100644 test-subject/device.scm create mode 100644 test-subject/game.scm create mode 100644 test-subject/text-box.scm (limited to 'test-subject') diff --git a/test-subject/assets.scm b/test-subject/assets.scm new file mode 100644 index 0000000..76f0d6d --- /dev/null +++ b/test-subject/assets.scm @@ -0,0 +1,52 @@ +(define-module (test-subject assets) + #:use-module (chickadee audio) + #:use-module (chickadee graphics font) + #:use-module (chickadee graphics texture) + #:use-module (starling asset) + #:export (dialog-box-texture + button-press-texture + darkness + lightness + room-background + door-lock-texture + pin-entry-background + door-texture + terminal-texture + terminal-background + control-panel-texture + fridge-texture + window-texture + notebook-texture + notebook-background + monogram-font + monogram-font-big + old-fax-font + click-sound + key-press-sound + device-sound + gameplay-music + credits-music)) + +(define-asset dialog-box-texture (load-image "assets/images/dialog-box.png")) +(define-asset button-press-texture (load-image "assets/images/button-press.png")) +(define-asset darkness (load-image "assets/images/darkness.png")) +(define-asset lightness (load-image "assets/images/lightness.png")) +(define-asset room-background (load-image "assets/images/room.png")) +(define-asset door-lock-texture (load-image "assets/images/door-lock.png")) +(define-asset pin-entry-background (load-image "assets/images/pin-entry-background.png")) +(define-asset door-texture (load-image "assets/images/door.png")) +(define-asset terminal-texture (load-image "assets/images/terminal.png")) +(define-asset terminal-background (load-image "assets/images/terminal-background.png")) +(define-asset control-panel-texture (load-image "assets/images/control-panel.png")) +(define-asset fridge-texture (load-image "assets/images/fridge.png")) +(define-asset window-texture (load-image "assets/images/window.png")) +(define-asset notebook-texture (load-image "assets/images/notebook.png")) +(define-asset notebook-background (load-image "assets/images/notebook-background.png")) +(define-asset monogram-font (load-font "assets/fonts/monogram_extended.ttf" 12)) +(define-asset monogram-font-big (load-font "assets/fonts/monogram_extended.ttf" 24)) +(define-asset old-fax-font (load-font "assets/fonts/old-fax.ttf" 12)) +(define-asset click-sound (load-audio "assets/sounds/click1.wav")) +(define-asset key-press-sound (load-audio "assets/sounds/switch6.wav")) +(define-asset device-sound (load-audio "assets/sounds/switch38.wav")) +(define-asset gameplay-music (load-audio "assets/sounds/ambientmain_0.ogg" #:mode 'stream)) +(define-asset credits-music (load-audio "assets/sounds/end-theme.mp3" #:mode 'stream)) diff --git a/test-subject/device.scm b/test-subject/device.scm new file mode 100644 index 0000000..b15f270 --- /dev/null +++ b/test-subject/device.scm @@ -0,0 +1,42 @@ +(define-module (test-subject device) + #:use-module (chickadee graphics color) + #:use-module (chickadee graphics texture) + #:use-module (oop goops) + #:use-module (starling gui) + #:use-module (starling node) + #:use-module (starling node-2d) + #:export ()) + +(define %device-hover-tint (rgb #xff7777)) + +;; An object you can interact with by clicking. +(define-class () + (texture #:accessor texture #:init-keyword #:texture + #:init-value null-texture #:watch? #t)) + +(define-method (refresh-hover-state (device )) + ;; A crude way of showing the user something is clickable. + (set! (tint (& device sprite)) + (if (hover? device) + %device-hover-tint + white))) + +(define-method (on-change (device ) slot-name old new) + (case slot-name + ((hover?) + (refresh-hover-state device)) + ((texture) + (let ((sprite (& device sprite))) + (when sprite + (set! (texture sprite) new)))) + (else + (next-method)))) + +(define-method (apply-theme (device )) + (next-method) + (replace device + (make + #:name 'sprite + #:rank 1 + #:texture (texture device))) + (refresh-hover-state device)) diff --git a/test-subject/game.scm b/test-subject/game.scm new file mode 100644 index 0000000..4a03343 --- /dev/null +++ b/test-subject/game.scm @@ -0,0 +1,1126 @@ +(define-module (test-subject game) + #:use-module (chickadee audio) + #:use-module (chickadee graphics color) + #:use-module (chickadee graphics font) + #:use-module (chickadee graphics texture) + #:use-module (chickadee graphics viewport) + #:use-module (chickadee math vector) + #:use-module (chickadee scripting) + #:use-module (ice-9 match) + #:use-module (oop goops) + #:use-module (srfi srfi-1) + #:use-module (starling asset) + #:use-module (starling gui) + #:use-module (starling kernel) + #:use-module (starling node) + #:use-module (starling node-2d) + #:use-module (starling ring-buffer) + #:use-module (starling scene) + #:use-module (test-subject assets) + #:use-module (test-subject device) + #:use-module (test-subject text-box) + #:duplicates (merge-generics replace warn-override-core warn last) + #:export (launch-game)) + +(define window-width 1280) +(define window-height 720) +(define game-width 640) +(define game-height 360) +(define player-display-name "") + +(define-theme gui-theme + ( (font monogram-font)) + (