From 990b2c4c08a54f56a30bfa4eeec04af410d24006 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 17 Feb 2014 20:54:57 -0500 Subject: Update font example. * examples/common.scm: Change format for displaying FPS in console. * examples/font.scm: Use new signal API generating labels. --- examples/common.scm | 3 +-- examples/font.scm | 46 ++++++++++++++++++++-------------------------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/examples/common.scm b/examples/common.scm index 760ce2f..8468687 100644 --- a/examples/common.scm +++ b/examples/common.scm @@ -15,6 +15,5 @@ (schedule-interval game-agenda (lambda () - (display (fps)) - (newline)) + (format #t "FPS: ~d\n" (signal-ref fps))) 60) diff --git a/examples/font.scm b/examples/font.scm index 2398b36..91acfc0 100644 --- a/examples/font.scm +++ b/examples/font.scm @@ -1,54 +1,48 @@ -(use-modules (srfi srfi-9) - (figl gl) - (2d agenda) +(use-modules (2d agenda) (2d fps) (2d color) (2d font) (2d game) (2d mouse) - (2d signals) + (2d signal) (2d vector2) (2d window)) (load "common.scm") (define font (load-default-font 18)) -(define position (vector2 320 240)) -(define text "The quick brown fox jumped over the lazy dog.") -(define label (make-label font text position #:anchor 'center)) +(define label (make-label font "The quick brown fox jumped over the lazy dog." + (vector2 320 240) #:anchor 'center)) -(define fps-label-position (vector2 0 0)) -(define (make-fps-label) - (make-label font (format #f "FPS: ~d" (fps)) fps-label-position)) -(define fps-label (make-fps-label)) +(define-signal fps-label + (signal-map (lambda (fps) + (let ((text (format #f "FPS: ~d" fps))) + (make-label font text (vector2 0 0)))) + (signal-sample game-agenda 60 fps))) -(define mouse-label-position (vector2 0 20)) -(define mouse-label +(define-signal mouse-label (signal-map (lambda (p) (let ((text (format #f "Mouse: (~d, ~d)" (vx p) (vy p)))) - (make-label font text mouse-label-position))) - mouse-position)) + (make-label font text (vector2 0 20)))) + (signal-throttle game-agenda 5 mouse-position))) -(define gc-label-position (vector2 0 40)) -(define gc-counter (make-root-signal 0)) -(define gc-label +(define-signal gc-counter (make-signal 0)) +(define-signal gc-label (signal-map (lambda (counter) (let ((text (format #f "GCs: ~d" counter))) - (make-label font text gc-label-position))) + (make-label font text (vector2 0 40)))) gc-counter)) (add-hook! after-gc-hook (lambda () - (signal-set! gc-counter (1+ (signal-ref gc-counter))))) - -(schedule-interval game-agenda - (lambda () - (set! fps-label (make-fps-label))) - 60) + (schedule game-agenda + (lambda () + (signal-set! gc-counter + (1+ (signal-ref gc-counter))))))) (add-hook! draw-hook (lambda (dt alpha) (draw-label label) - (draw-label fps-label) + (draw-label (signal-ref fps-label)) (draw-label (signal-ref mouse-label)) (draw-label (signal-ref gc-label)))) -- cgit v1.2.3