;;-*-Lisp-*-
(in-package goal)

;; definition of type projectile
(deftype projectile (process-drawable)
  ((root-override   collide-shape-moving               :offset        112)
   (base-trans      vector                     :inline :offset-assert 176)
   (target          vector                     :inline :offset-assert 192)
   (target-base     vector                     :inline :offset-assert 208)
   (parent-base     vector                     :inline :offset-assert 224)
   (parent-quat     vector                     :inline :offset-assert 240)
   (base-vector     vector                     :inline :offset-assert 256)
   (timeout         time-frame                         :offset-assert 272)
   (options         uint64                             :offset-assert 280)
   (last-target     handle                             :offset-assert 288)
   (notify-handle   handle                             :offset-assert 296)
   (max-speed       float                              :offset-assert 304)
   (max-turn        float                              :offset-assert 308)
   (old-dist        float                      16      :offset-assert 312)
   (old-dist-count  int32                              :offset-assert 376)
   (hits            int32                              :offset-assert 380)
   (max-hits        int32                              :offset-assert 384)
   (tween           float                              :offset-assert 388)
   (attack-mode     symbol                             :offset-assert 392)
   (update-velocity (function projectile none)         :offset-assert 396)
   (counter         int32                              :offset-assert 400)
   (target-count    int32                              :offset-assert 404)
   (sound-id        sound-id                           :offset-assert 408)
   )
  :heap-base #x130
  :method-count-assert 29
  :size-assert         #x19c
  :flag-assert         #x1d0130019c
  (:methods
    (projectile-die () _type_ :state 20)
    (projectile-dissipate () _type_ :state 21)
    (projectile-impact () _type_ :state 22)
    (projectile-moving () _type_ :state 23)
    (dummy-24 (_type_) none 24)
    (dummy-25 (_type_) none 25)
    (dummy-26 (_type_) none 26)
    (dummy-27 (_type_) none 27)
    (dummy-28 (_type_) none 28)
    )
  )

;; definition for method 3 of type projectile
(defmethod inspect projectile ((obj projectile))
  (let ((t9-0 (method-of-type process-drawable inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Tbase-trans: ~`vector`P~%" (-> obj base-trans))
  (format #t "~T~Ttarget: ~`vector`P~%" (-> obj target))
  (format #t "~T~Ttarget-base: ~`vector`P~%" (-> obj target-base))
  (format #t "~T~Tparent-base: ~`vector`P~%" (-> obj parent-base))
  (format #t "~T~Tparent-quat: ~`vector`P~%" (-> obj parent-quat))
  (format #t "~T~Tbase-vector: ~`vector`P~%" (-> obj base-vector))
  (format #t "~T~Ttimeout: ~D~%" (-> obj timeout))
  (format #t "~T~Toptions: ~D~%" (-> obj options))
  (format #t "~T~Tlast-target: ~D~%" (-> obj last-target))
  (format #t "~T~Tnotify-handle: ~D~%" (-> obj notify-handle))
  (format #t "~T~Tmax-speed: ~f~%" (-> obj max-speed))
  (format #t "~T~Tmax-turn: ~f~%" (-> obj max-turn))
  (format #t "~T~Told-dist[16] @ #x~X~%" (-> obj old-dist))
  (format #t "~T~Told-dist-count: ~D~%" (-> obj old-dist-count))
  (format #t "~T~Thits: ~D~%" (-> obj hits))
  (format #t "~T~Tmax-hits: ~D~%" (-> obj max-hits))
  (format #t "~T~Ttween: ~f~%" (-> obj tween))
  (format #t "~T~Tattack-mode: ~A~%" (-> obj attack-mode))
  (format #t "~T~Tupdate-velocity: ~A~%" (-> obj update-velocity))
  (format #t "~T~Tcounter: ~D~%" (-> obj counter))
  (format #t "~T~Ttarget-count: ~D~%" (-> obj target-count))
  (format #t "~T~Tsound-id: ~D~%" (-> obj sound-id))
  obj
  )

;; definition of type projectile-yellow
(deftype projectile-yellow (projectile)
  ((mode  int32  :offset-assert 412)
   (angle float  :offset-assert 416)
   )
  :heap-base #x140
  :method-count-assert 29
  :size-assert         #x1a4
  :flag-assert         #x1d014001a4
  )

;; definition for method 3 of type projectile-yellow
(defmethod inspect projectile-yellow ((obj projectile-yellow))
  (let ((t9-0 (method-of-type projectile inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Tmode: ~D~%" (-> obj mode))
  (format #t "~T~Tangle: ~f~%" (-> obj angle))
  obj
  )

;; definition of type projectile-blue
(deftype projectile-blue (projectile)
  ((mode      int32  :offset-assert 412)
   (joint-num int32  :offset-assert 416)
   )
  :heap-base #x140
  :method-count-assert 29
  :size-assert         #x1a4
  :flag-assert         #x1d014001a4
  )

;; definition for method 3 of type projectile-blue
(defmethod inspect projectile-blue ((obj projectile-blue))
  (let ((t9-0 (method-of-type projectile inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Tmode: ~D~%" (-> obj mode))
  (format #t "~T~Tjoint-num: ~D~%" (-> obj joint-num))
  obj
  )

;; failed to figure out what this is:
0
