]> git.jsancho.org Git - gacela.git/blobdiff - src/game.scm
More declarative way of making games
[gacela.git] / src / game.scm
index 5a8b7d31dfe956998b68c4a121e353b914adf67e..c3aab9f58f942ccc5efae3d6528f39a827ec7074 100644 (file)
 
 ;;; 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
            (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!)
              '()
              (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?)