diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-05-07 18:35:36 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-05-07 18:35:36 -0400 |
commit | 9aaf017b70fb9474d3c5be22a27dfcc86d8b41c1 (patch) | |
tree | e0e4d7ea975c483ceab1b748c6ae9264f731a303 /examples | |
parent | a316893a68ae44a100d6dc5be34bf2c7d582e9ca (diff) |
Make sprites immutable.
* 2d/sprite.scm (<sprite>): Make immutable.
(set-sprite-drawable!, set-sprite-position!, set-sprite-scale!)
(set-sprite-rotation!, set-sprite-color!, set-sprite-anchor!): Delete.
(set-sprite-drawable, set-sprite-position, set-sprite-scale)
(set-sprite-rotation, set-sprite-color, set-sprite-anchor): New
procedures.
* examples/coroutine.scm:
* examples/particles.scm: Use immutable sprite setters.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/coroutine.scm | 22 | ||||
-rw-r--r-- | examples/particles.scm | 3 |
2 files changed, 15 insertions, 10 deletions
diff --git a/examples/coroutine.scm b/examples/coroutine.scm index 7b4a1e6..741b357 100644 --- a/examples/coroutine.scm +++ b/examples/coroutine.scm @@ -15,10 +15,12 @@ ;;; along with this program. If not, see ;;; <http://www.gnu.org/licenses/>. -(use-modules (2d agenda) +(use-modules (srfi srfi-26) + (2d agenda) (2d coroutine) (2d game) (2d sprite) + (2d texture) (2d vector2) (2d window)) @@ -27,19 +29,23 @@ (define window-width 640) (define window-height 480) -(define sprite (load-sprite "images/p1_front.png" - #:position (vector2 320 240))) +(define texture (load-texture "images/p1_front.png")) + +(define sprite + (make-sprite texture + #:position (vector 320 240))) + +(define (random-vector2) + (vector2 (random window-width) + (random window-height))) ;; Simple script that moves the sprite to a random location every ;; second. (coroutine (while #t - (set-sprite-position! - sprite - (vector2 (random window-width) - (random window-height))) + (set! sprite (set-sprite-position sprite (random-vector2))) (wait 15) - (set-sprite-rotation! sprite (random 360)) + (set! sprite (set-sprite-rotation sprite (random 360))) (wait 15))) (add-hook! draw-hook (lambda (dt alpha) (draw-sprite sprite))) diff --git a/examples/particles.scm b/examples/particles.scm index 4269b99..b60a537 100644 --- a/examples/particles.scm +++ b/examples/particles.scm @@ -65,8 +65,7 @@ (for-each (lambda (p) (let* ((sprite (particle-sprite p))) - (set-sprite-position! sprite (particle-position p)) - (draw-sprite sprite))) + (draw-sprite (set-sprite-position sprite (particle-position p))))) particles)) (define (draw dt alpha) |