+ ;; The extremely squishy concept of "props"... properties!
+ ;; These are flags, etc etc of various types. This is a hashq table.
+ ;; These have upsides and downsides, but the big upside is that you can
+ ;; query a "prop" of a prospective gameobj without knowing what type of
+ ;; gameobj that is, and not fear some kind of breakage.
+ ;;
+ ;; props by default only have a 'get-prop read-only action handler;
+ ;; any coordination of setting a prop between actors must be
+ ;; added to that actor, to keep things from getting out of control.
+ (props #:init-thunk make-hash-table
+ #:init-keyword #:props)
+ ;; gameobjs may inherit an initial list of these via the
+ ;; initial-props slot, which must always have its
+ ;; #:allocation #:each-subclass and use (build-props) for the
+ ;; #:init-thunk.
+ ;; The vanilla gameobj has no props, on purpose.
+ (initial-props #:allocation #:each-subclass
+ #:init-thunk (build-props '()))
+