summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--chickadee/cli/play.scm2
-rw-r--r--chickadee/graphics/text.scm (renamed from chickadee/graphics/font.scm)2
-rw-r--r--examples/9-patch.scm2
-rw-r--r--examples/audio.scm2
-rw-r--r--examples/game-controller.scm2
-rw-r--r--examples/grid.scm4
-rw-r--r--examples/model.scm2
-rw-r--r--examples/particles.scm2
-rw-r--r--examples/path.scm2
-rw-r--r--examples/quadtree.scm2
-rw-r--r--examples/sprite-batch.scm2
-rw-r--r--examples/text.scm81
-rw-r--r--examples/tile-map.scm2
14 files changed, 91 insertions, 18 deletions
diff --git a/Makefile.am b/Makefile.am
index 767e76d..04b56a0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -82,7 +82,7 @@ SOURCES = \
chickadee/graphics/framebuffer.scm \
chickadee/graphics/sprite.scm \
chickadee/graphics/9-patch.scm \
- chickadee/graphics/font.scm \
+ chickadee/graphics/text.scm \
chickadee/graphics/tile-map.scm \
chickadee/graphics/particles.scm \
chickadee/graphics/skybox.scm \
diff --git a/chickadee/cli/play.scm b/chickadee/cli/play.scm
index 31fae99..db2c0d6 100644
--- a/chickadee/cli/play.scm
+++ b/chickadee/cli/play.scm
@@ -117,7 +117,7 @@ Play the game defined in FILE.~%")
(chickadee audio)
(chickadee graphics color)
(chickadee graphics engine)
- (chickadee graphics font)
+ (chickadee graphics text)
(chickadee graphics texture)
(chickadee math)
(chickadee math matrix)
diff --git a/chickadee/graphics/font.scm b/chickadee/graphics/text.scm
index 4e21ba0..42c6fa5 100644
--- a/chickadee/graphics/font.scm
+++ b/chickadee/graphics/text.scm
@@ -21,7 +21,7 @@
;;
;;; Code:
-(define-module (chickadee graphics font)
+(define-module (chickadee graphics text)
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
diff --git a/examples/9-patch.scm b/examples/9-patch.scm
index feb02b0..debc69d 100644
--- a/examples/9-patch.scm
+++ b/examples/9-patch.scm
@@ -1,8 +1,8 @@
(use-modules (chickadee)
(chickadee math rect)
(chickadee math vector)
- (chickadee graphics font)
(chickadee graphics 9-patch)
+ (chickadee graphics text)
(chickadee graphics texture))
(define image #f)
diff --git a/examples/audio.scm b/examples/audio.scm
index 4ea697f..72826b9 100644
--- a/examples/audio.scm
+++ b/examples/audio.scm
@@ -1,7 +1,7 @@
(use-modules (chickadee)
(chickadee audio)
(chickadee math vector)
- (chickadee graphics font)
+ (chickadee graphics text)
(ice-9 match))
(define effect #f)
diff --git a/examples/game-controller.scm b/examples/game-controller.scm
index f166939..d8a6002 100644
--- a/examples/game-controller.scm
+++ b/examples/game-controller.scm
@@ -1,8 +1,8 @@
(use-modules (chickadee)
(chickadee math vector)
(chickadee graphics color)
- (chickadee graphics font)
(chickadee graphics sprite)
+ (chickadee graphics text)
(chickadee graphics texture)
(ice-9 match))
diff --git a/examples/grid.scm b/examples/grid.scm
index c83dac7..4a5dbd2 100644
--- a/examples/grid.scm
+++ b/examples/grid.scm
@@ -3,9 +3,9 @@
(chickadee math vector)
(chickadee math rect)
(chickadee graphics color)
- (chickadee graphics font)
(chickadee graphics path)
- (chickadee graphics sprite))
+ (chickadee graphics sprite)
+ (chickadee graphics text))
(define grid (make-grid))
(define item-color (make-color 0.7 0.0 0.0 0.7))
diff --git a/examples/model.scm b/examples/model.scm
index 26067b6..4fa42c7 100644
--- a/examples/model.scm
+++ b/examples/model.scm
@@ -4,7 +4,7 @@
(chickadee math vector)
(chickadee graphics engine)
(chickadee graphics model)
- (chickadee graphics font)
+ (chickadee graphics text)
(ice-9 format))
(define projection (perspective-projection (/ pi 3) (/ 4.0 3.0) 0.1 500.0))
diff --git a/examples/particles.scm b/examples/particles.scm
index f7d096e..cab390b 100644
--- a/examples/particles.scm
+++ b/examples/particles.scm
@@ -2,9 +2,9 @@
(chickadee math rect)
(chickadee math vector)
(chickadee graphics color)
- (chickadee graphics font)
(chickadee graphics particles)
(chickadee graphics sprite)
+ (chickadee graphics text)
(chickadee graphics texture)
(chickadee scripting)
(ice-9 format))
diff --git a/examples/path.scm b/examples/path.scm
index 202a859..44cabdb 100644
--- a/examples/path.scm
+++ b/examples/path.scm
@@ -1,7 +1,7 @@
(use-modules (chickadee)
(chickadee graphics color)
- (chickadee graphics font)
(chickadee graphics path)
+ (chickadee graphics text)
(chickadee math)
(chickadee math vector)
(chickadee scripting))
diff --git a/examples/quadtree.scm b/examples/quadtree.scm
index 31b8138..d95c00f 100644
--- a/examples/quadtree.scm
+++ b/examples/quadtree.scm
@@ -5,10 +5,10 @@
(chickadee math rect)
(chickadee math vector)
(chickadee graphics color)
- (chickadee graphics font)
(chickadee graphics path)
(chickadee graphics sprite)
(chickadee graphics texture)
+ (chickadee graphics text)
(chickadee scripting)
(ice-9 format)
(ice-9 match)
diff --git a/examples/sprite-batch.scm b/examples/sprite-batch.scm
index b63179f..e62d1e4 100644
--- a/examples/sprite-batch.scm
+++ b/examples/sprite-batch.scm
@@ -3,8 +3,8 @@
(chickadee math rect)
(chickadee math vector)
(chickadee graphics color)
- (chickadee graphics font)
(chickadee graphics sprite)
+ (chickadee graphics text)
(chickadee graphics texture)
(chickadee scripting)
(ice-9 format)
diff --git a/examples/text.scm b/examples/text.scm
index 3d2b3b5..d4d6489 100644
--- a/examples/text.scm
+++ b/examples/text.scm
@@ -1,9 +1,82 @@
(use-modules (chickadee)
+ (chickadee graphics text)
(chickadee math vector)
- (chickadee graphics font))
+ (chickadee scripting))
+
+(define start-time 0.0)
+(define avg-frame-time 16.0)
+(define stats-text "")
+(define stats-position (vec2 4.0 704.0))
+(define position (vec2 140.0 0.0))
+(define text
+ "This is the \"Are you tired of *this*?\" part of the infomercial. Read the next few paragraphs
+and picture me, in black and white, struggling to hold a large stack of boxes, all labeled
+\"software.\" I continue struggling to balance the boxes as you read. When you've reached the last
+paragraph of the section, I fall over, the boxes land on top of me and all over the floor, I'm
+covered in spaghetti, and in an exasperated voice I shout \"There's gotta be a better way!\"
+
+When setting up a new computer for software development, I want to go from `git clone` to `make` in
+as little time as possible (adjust that for your VCS and build system of choice.) In the old days,
+this meant manually installing the dependencies through the distro package manager. If things are
+organized, the project README will have a list of what is needed and it's not so bad. If things are
+less organized, it's a cycle of installing packages and running `./configure` or whatever until it
+succeeds. Hopefully none of the dependencies are too new to be found in the distro. And when
+working on multiple projects, hopefully there's no conflicts between the dependencies required for
+each of them, because your development environment is the entire system and there's no way to
+isolate different projects from each other.
+
+Of course, different programming languages provide their own sets of tools for managing multiple
+projects. Python has virtualenv, Ruby has rvm and bundler, Node has nvm and npm, etc. But their
+domain is restricted to only the dependencies for that language and their runtimes. A system
+package manager is needed to bootstrap their use.
+
+Nowadays it's \"just use Docker.\" Docker's take is that all this package management stuff is just
+too complicated. Instead, just create a disk image per project that encapsulates this hodgepodge of
+package managers and bespoke, artisinal, small-batch builds that gets run in isolation via Linux
+namespace magic. It works, of course, but I think Dockerfiles are clunky and the rather extreme
+level of isolation is usually unnecessary and makes things overly complicated for projects that need
+to interact with, say, the windowing system of the host computer. A lot of people are happy with
+Docker, though. Maybe you are, too. That's fine!
+
+What I really want to say is \"Computer, provision a development environment containing Guile 3,
+SDL2, make, and texinfo!\" and have Majel Barrett-Roddenberry tell me that all of those things have
+been made available to me on my host system. No container, no virtual machine. It shouldn't matter
+if I have Guile 2 installed system-wide, Guile 3 should still be what's used in the context of the
+project. This is how Guix works and it's very good and cool and I'm going to tell you all about how
+I use it."
+ ;; "The quick brown fox jumps over the lazy dog.\nFive hexing wizard bots jump quickly."
+ )
+
+(define (stats-message)
+ (format #f "fps: ~1,2f"
+ (/ 1.0 avg-frame-time)))
+
+(define (load)
+ (script
+ (forever
+ (sleep 60)
+ (set! stats-text (stats-message)))))
(define (draw alpha)
- (draw-text "The quick brown fox jumps over the lazy dog.\nFive hexing wizard bots jump quickly."
- (vec2 140.0 240.0)))
+ (draw-text text position)
+ (draw-text stats-text stats-position)
+ (let ((current-time (elapsed-time)))
+ (set! avg-frame-time
+ (+ (* (- current-time start-time) 0.1)
+ (* avg-frame-time 0.9)))
+ (set! start-time current-time)))
+
+(define (update dt)
+ (update-agenda 1))
+
+(define (key-press key modifiers repeat?)
+ (when (eq? key 'q)
+ (abort-game)))
-(run-game #:draw draw)
+(run-game #:draw draw
+ #:key-press key-press
+ #:load load
+ #:update update
+ #:window-title "text rendering"
+ #:window-width 1280
+ #:window-height 720)
diff --git a/examples/tile-map.scm b/examples/tile-map.scm
index ae1342b..7aea4ca 100644
--- a/examples/tile-map.scm
+++ b/examples/tile-map.scm
@@ -2,7 +2,7 @@
(chickadee math vector)
(chickadee math rect)
(chickadee graphics color)
- (chickadee graphics font)
+ (chickadee graphics text)
(chickadee graphics tile-map)
(ice-9 format)
(ice-9 match)