]> git.jsancho.org Git - gacela.git/blobdiff - src/examples/entity-component-functions.scm
Entity sets and engine api through systems
[gacela.git] / src / examples / entity-component-functions.scm
index 43316fc743647947e4cc8fdbd4d08d4987b9bb93..03617cacc647091153378231b0d53392e8b70016 100644 (file)
 (define-component b)
 
 (define (entity-component-functions)
-  (let ((entities '())
-       (components '())
+  (let ((entities (make-entity-set))
        (key #f))
-    (receive (e c k) ((new-entity (make-a 1 2) (make-b)) entities components)
+    (receive (e k) ((new-entity (make-a 1 2) (make-b)) entities)
       (set! entities e)
-      (set! components c)
-      (set! key k)
-      (display k) (newline))
-    (format #t "New entity with a and b:~%~a~%~a~%~%" entities components)
+      (set! key (car k)))
+    (format #t "New entity with a and b:~%~a~%~%" (entity-list entities))
 
-    (receive (e c k) ((new-entity (make-a 10 20)) entities components)
-      (set! entities e)
-      (set! components c)
-      (display k) (newline))
-    (format #t "New entity with a:~%~a~%~a~%~%" entities components)
+    (receive (e k) ((new-entity (make-a 10 20)) entities)
+      (set! entities e))
+    (format #t "New entity with a:~%~a~%~%" (entity-list entities))
 
-    (receive (e c) (modify-entities (list (set-entity-components key (make-a 50 50)) (remove-entity-components key 'b)) entities components)
-      (set! entities e)
-      (set! components c))
-    (format #t "First entity removes b and changes a:~%~a~%~a~%~%" entities components)
+    (set! entities (modify-entities entities (list (set-entity-components key (make-a 50 50)) (remove-entity-components key 'b))))
+    (format #t "First entity removes b and changes a:~%~a~%~%" (entity-list entities))
 
-    (receive (e c) ((remove-entity key) entities components)
-      (set! entities e)
-      (set! components c))
-    (format #t "Removes first entity:~%~a~%~a~%~%" entities components)
+    (set! entities ((remove-entity key) entities))
+    (format #t "Removes first entity:~%~a~%~%" (entity-list entities))
 
-    (receive (e c k) ((new-entity (make-a 1 2) (make-b)) entities components)
+    (receive (e k) ((new-entity (make-a 1 2) (make-b)) entities)
       (set! entities e)
-      (set! components c)
-      (set! key k)
-      (display k) (newline))
-    (format #t "New entity with a and b:~%~a~%~a~%~%" entities components)
+      (set! key (car k)))
+    (format #t "New entity with a and b:~%~a~%~%" (entity-list entities))
 
-    (receive (e c) (modify-entities (list (set-entity-components key (make-a 50 50)) (remove-entity-components key 'b) (new-entity (make-a 1000 1000))) entities components)
-      (set! entities e)
-      (set! components c))
-    (format #t "Last entity removes b and changes a, and new entity with a:~%~a~%~a~%~%" entities components)
+    (set! entities (modify-entities entities (list (set-entity-components key (make-a 50 50)) (remove-entity-components key 'b) (new-entity (make-a 1000 1000)))))
+    (format #t "Last entity removes b and changes a, and new entity with a:~%~a~%~%" (entity-list entities))
 
-    (receive (e c) (modify-entities (list (remove-entity key)) entities components)
-      (set! entities e)
-      (set! components c))
-    (format #t "Remove last entity:~%~a~%~a~%~%" entities components)))
+    (set! entities (modify-entities entities (list (remove-entity key))))
+    (format #t "Remove last entity:~%~a~%~%" (entity-list entities))))
 
 (export entity-component-functions)