;;-*-Lisp-*- (in-package goal) ;; definition of type focus (deftype focus (structure) ((handle handle) (collide-with collide-spec) ) (:methods (clear-focused (_type_) none) (collide-check? (_type_ process-focusable) object) (reset-to-collide-spec (_type_ collide-spec) none) (try-update-focus (_type_ process-focusable) symbol) ) ) ;; definition for method 3 of type focus (defmethod inspect ((this focus)) (when (not this) (set! this this) (goto cfg-4) ) (format #t "[~8x] ~A~%" this 'focus) (format #t "~1Thandle: ~D~%" (-> this handle)) (format #t "~1Tcollide-with: ~D~%" (-> this collide-with)) (label cfg-4) this ) ;; definition for method 11 of type focus ;; WARN: Return type mismatch int vs none. (defmethod reset-to-collide-spec ((this focus) (arg0 collide-spec)) (set! (-> this collide-with) arg0) (set! (-> this handle) (the-as handle #f)) 0 (none) ) ;; definition for method 10 of type focus (defmethod collide-check? ((this focus) (arg0 process-focusable)) (when (and arg0 (not (logtest? (-> arg0 focus-status) (focus-status disable dead)))) (let* ((s5-0 (-> arg0 root)) (v1-2 (if (type? s5-0 collide-shape) s5-0 ) ) ) (and v1-2 (logtest? (-> this collide-with) (-> v1-2 root-prim prim-core collide-as))) ) ) ) ;; definition for method 12 of type focus (defmethod try-update-focus ((this focus) (arg0 process-focusable)) (when (!= (handle->process (-> this handle)) arg0) (set! (-> this handle) (process->handle arg0)) #t ) ) ;; definition for method 9 of type focus ;; WARN: Return type mismatch int vs none. (defmethod clear-focused ((this focus)) (set! (-> this handle) (the-as handle #f)) 0 (none) )