X-Git-Url: https://git.jsancho.org/?p=gacela.git;a=blobdiff_plain;f=src%2Fgame.scm;h=c3aab9f58f942ccc5efae3d6528f39a827ec7074;hp=5a8b7d31dfe956998b68c4a121e353b914adf67e;hb=4ccfda6a7ebdf665edbf32452c8f4cbc3d010dfd;hpb=3b22fd3f425de9419f98bacf2d1c4675058389ed diff --git a/src/game.scm b/src/game.scm index 5a8b7d3..c3aab9f 100644 --- a/src/game.scm +++ b/src/game.scm @@ -25,10 +25,11 @@ ;;; Working with entities -(define-record-type entity +(define-record-type entity-type (make-entity-record id components) entity? (id entity-id) + (game entity-game set-entity-game!) (components entity-components set-entity-components!)) (set-record-type-printer! entity @@ -37,19 +38,20 @@ (entity-id record) (entity-components record)))) -(define (make-entity . components) +(define (entity . components) (make-entity-record (gensym) + #f components)) -(export make-entity +(export entity entity? entity-id) ;;; Game Definition -(define-record-type game +(define-record-type game-type (make-game-record name entities) game? (name game-name set-game-name!) @@ -68,14 +70,14 @@ '() (game-entities record)))))) -(define (make-game name . entities) +(define (game name . entities) (make-game-record name (alist->vhash (map (lambda (e) (cons (entity-id e) e)) entities)))) -(export make-game +(export game game?)