(remove-occupant! (wrap-apply gameobj-remove-occupant!))
(set-loc! (wrap-apply gameobj-set-loc!))
(get-name (wrap-apply gameobj-get-name))
(remove-occupant! (wrap-apply gameobj-remove-occupant!))
(set-loc! (wrap-apply gameobj-set-loc!))
(get-name (wrap-apply gameobj-get-name))
(define (val-or-run val-or-proc)
"Evaluate if a procedure, or just return otherwise"
(if (procedure? val-or-proc)
(define (val-or-run val-or-proc)
"Evaluate if a procedure, or just return otherwise"
(if (procedure? val-or-proc)
(define filtered-commands
(filter-commands (val-or-run (slot-ref actor 'container-commands))
verb))
(<-reply actor message #:commands filtered-commands))
(define-mhandler (gameobj-add-occupant! actor message who)
(define filtered-commands
(filter-commands (val-or-run (slot-ref actor 'container-commands))
verb))
(<-reply actor message #:commands filtered-commands))
(define-mhandler (gameobj-add-occupant! actor message who)
(hash-remove! (slot-ref actor 'occupants) who))
(define-mhandler (gameobj-get-occupants actor message)
(hash-remove! (slot-ref actor 'occupants) who))
(define-mhandler (gameobj-get-occupants actor message)
;; @@: Should it really be #:id ? Maybe #:loc-id or #:loc?
(define-mhandler (gameobj-set-loc! actor message loc)
;; @@: Should it really be #:id ? Maybe #:loc-id or #:loc?
(define-mhandler (gameobj-set-loc! actor message loc)
(define old-loc (gameobj-loc actor))
(format #t "DEBUG: Location set to ~s for ~s\n"
loc (actor-id-actor actor))
(define old-loc (gameobj-loc actor))
(format #t "DEBUG: Location set to ~s for ~s\n"
loc (actor-id-actor actor))
;; Change registation of where we currently are
(if loc
(<-wait actor loc 'add-occupant! #:who (actor-id actor)))
;; Change registation of where we currently are
(if loc
(<-wait actor loc 'add-occupant! #:who (actor-id actor)))