001  (ns cc.journeyman.the-great-game.objects.game-object
002    "Anything at all in the game world")
003  
004  (defprotocol ProtoObject
005    "An object in the world"
006    (id [object] "Returns the unique id of this object.")
007    (reify-object
008      [object]
009      "Adds this `object` to the global object list. If the `object` has a
010      non-nil value for its `id` method, keys it to that id - **but** if the
011      id value is already in use, throws a hard exception. Returns the id to
012      which the object is keyed in the global object list."))
013  
014  (defrecord GameObject
015             [id]
016    ;; "An object in the world"
017    ProtoObject
018    (id [_] id)
019    (reify-object [object]
020      "TODO: doesn't work yet"
021      object))