summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2014-05-07 18:35:36 -0400
committerDavid Thompson <dthompson2@worcester.edu>2014-05-07 18:35:36 -0400
commit9aaf017b70fb9474d3c5be22a27dfcc86d8b41c1 (patch)
treee0e4d7ea975c483ceab1b748c6ae9264f731a303 /examples
parenta316893a68ae44a100d6dc5be34bf2c7d582e9ca (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.scm22
-rw-r--r--examples/particles.scm3
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)