# the_great_game/objects/game_object.clj

001 (ns 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] "TODO: doesn't work yet"))