X-Git-Url: https://git.jsancho.org/?p=gacela.git;a=blobdiff_plain;f=src%2Fsystem.scm;h=3d5cb2b9ea482eaaaf65a81946e337d693cd94bb;hp=b70bfee062527580b7560bcc686d45eb32b13ab5;hb=85b34025ccd4e13188f3c2b88cd039a8cc636d93;hpb=3b8bea0edf160748d20a12e3b1e7e3503a33da7b diff --git a/src/system.scm b/src/system.scm index b70bfee..3d5cb2b 100644 --- a/src/system.scm +++ b/src/system.scm @@ -123,14 +123,16 @@ (register-components key (map (lambda (c) (car c)) nc) components) - key)))) + (cons key nc))))) (define (remove-entity key) (lambda (entities components) - (let ((clist (map (lambda (c) (car c)) (assoc-ref entities key)))) + (let ((clist (map (lambda (c) (car c)) (assoc-ref entities key))) + (entity (assoc key entities))) (values (assoc-remove! entities key) - (unregister-components key clist components))))) + (unregister-components key clist components) + entity)))) (define (set-entity key . new-components) (lambda (entities components) @@ -140,7 +142,8 @@ (values (assoc-set! entities key nc) (register-components key (lset-difference eq? nclist clist) - (unregister-components key (lset-difference eq? clist nclist) components)))))) + (unregister-components key (lset-difference eq? clist nclist) components)) + (cons key nc))))) (define (set-entity-components key . new-components) (lambda (entities components) @@ -152,7 +155,8 @@ nc) (values (assoc-set! entities key clist) - (register-components key (map (lambda (c) (car c)) nc) components))))) + (register-components key (map (lambda (c) (car c)) nc) components) + (cons key clist))))) (define (remove-entity-components key . old-components) (lambda (entities components) @@ -163,7 +167,8 @@ old-components) (values (assoc-set! entities key clist) - (unregister-components key old-components components))))) + (unregister-components key old-components components) + (cons key clist))))) (define (modify-entities changes entities components) (cond ((null? changes)