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

;; definition of type target
(deftype target (process-drawable)
  ((self-override       target                                   :offset         28)
   (control             control-info                             :offset        112)
   (fact-info-target    fact-info-target                         :offset        144)
   (skel2               basic                                    :offset-assert 176)
   (racer               racer-info                               :offset-assert 180)
   (game                game-info                                :offset-assert 184)
   (neck                joint-mod                                :offset-assert 188)
   (state-hook-time     time-frame                               :offset-assert 192)
   (state-hook          (function none :behavior target)         :offset-assert 200)
   (cam-user-mode       symbol                                   :offset-assert 204)
   (sidekick            (pointer sidekick)                       :offset-assert 208)
   (manipy              (pointer manipy)                         :offset-assert 212)
   (attack-info         attack-info                      :inline :offset-assert 224)
   (attack-info-rec     attack-info                      :inline :offset-assert 336)
   (anim-seed           uint64                                   :offset-assert 440)
   (alt-cam-pos         vector                           :inline :offset-assert 448)
   (snowball            snowball-info                            :offset-assert 464)
   (tube                tube-info                                :offset-assert 468)
   (flut                flut-info                                :offset-assert 472)
   (current-level       level                                    :offset-assert 476)
   (saved-pos           transformq                       :inline :offset-assert 480)
   (saved-owner         uint64                                   :offset-assert 528)
   (alt-neck-pos        vector                           :inline :offset-assert 544)
   (fp-hud              handle                                   :offset-assert 560)
   (no-load-wait        time-frame                               :offset-assert 568)
   (no-look-around-wait time-frame                               :offset-assert 576)
   (burn-proc           handle                                   :offset-assert 584)
   )
  :heap-base #x1e0
  :method-count-assert 21
  :size-assert         #x250
  :flag-assert         #x1501e00250
  (:methods
    (find-edge-grabs! (_type_ collide-cache) object 20)
    )
  (:states
    target-attack
    (target-attack-air symbol)
    (target-attack-uppercut float float)
    (target-attack-uppercut-jump float float)
    target-billy-game
    (target-clone-anim handle)
    (target-continue continue-point)
    (target-death symbol)
    target-demo
    (target-double-jump float float)
    (target-duck-high-jump float float symbol)
    (target-duck-high-jump-jump float float symbol)
    target-duck-stance
    target-duck-walk
    (target-eco-powerup object float)
    target-edge-grab
    (target-edge-grab-jump float float)
    target-edge-grab-off
    (target-falling symbol)
    (target-final-door basic handle)
    (target-fishing handle)
    (target-flop float float float)
    (target-flop-hit-ground symbol)
    (target-flut-air-attack float)
    target-flut-air-attack-hit-ground
    (target-flut-clone-anim handle)
    (target-flut-death symbol)
    (target-flut-double-jump float float)
    (target-flut-falling symbol)
    (target-flut-get-off handle)
    (target-flut-get-off-hit-ground symbol)
    (target-flut-get-off-jump handle)
    (target-flut-get-on handle)
    target-flut-grab
    (target-flut-hit symbol attack-info)
    target-flut-hit-ground
    (target-flut-jump float float)
    target-flut-running-attack
    target-flut-stance
    (target-flut-start handle)
    target-flut-walk
    target-grab
    (target-high-jump float float basic)
    (target-hit symbol attack-info)
    (target-hit-ground symbol)
    (target-hit-ground-hard float)
    target-ice-stance
    target-ice-walk
    (target-jump float float surface)
    (target-jump-forward float float)
    (target-launch float symbol vector int)
    target-load-wait
    target-look-around
    (target-periscope handle)
    (target-play-anim string handle)
    (target-pole-cycle handle)
    (target-pole-flip-forward float float float)
    (target-pole-flip-forward-jump float float)
    (target-pole-flip-up object object float)
    (target-pole-flip-up-jump float float)
    target-racing
    (target-racing-bounce float float symbol)
    (target-racing-clone-anim handle)
    (target-racing-death symbol)
    target-racing-falling
    (target-racing-get-off handle)
    (target-racing-get-off-hit-ground symbol)
    (target-racing-get-off-jump handle)
    (target-racing-get-on handle)
    target-racing-grab
    (target-racing-hit handle attack-info)
    (target-racing-jump float float symbol)
    (target-racing-smack float symbol)
    (target-racing-start handle)
    target-running-attack
    target-slide-down
    target-snowball
    (target-snowball-start handle)
    target-stance
    target-stance-ambient
    target-stance-look-around
    target-startup
    target-swim-down
    (target-swim-jump float float)
    (target-swim-jump-jump float float surface)
    target-swim-stance
    target-swim-up
    target-swim-walk
    target-title
    target-title-play
    target-title-wait
    target-tube
    (target-tube-death symbol)
    (target-tube-hit symbol attack-info)
    (target-tube-jump float float)
    (target-tube-start handle)
    target-turn-around
    target-wade-stance
    target-wade-walk
    target-walk
    (target-warp-in vector vector)
    (target-warp-out vector vector)
    target-wheel
    (target-wheel-flip float float)
    target-yellow-blast
    target-yellow-jump-blast
    )
  )

;; definition for method 3 of type target
(defmethod inspect target ((obj target))
  (let ((t9-0 (method-of-type process-drawable inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Tcontrol: ~A~%" (-> obj control))
  (format #t "~T~Tskel2: ~A~%" (-> obj skel2))
  (format #t "~T~Tracer: ~A~%" (-> obj racer))
  (format #t "~T~Tgame: ~A~%" (-> obj game))
  (format #t "~T~Tneck: ~A~%" (-> obj neck))
  (format #t "~T~Tstate-hook-time: ~D~%" (-> obj state-hook-time))
  (format #t "~T~Tstate-hook: ~A~%" (-> obj state-hook))
  (format #t "~T~Tcam-user-mode: ~A~%" (-> obj cam-user-mode))
  (format #t "~T~Tsidekick: #x~X~%" (-> obj sidekick))
  (format #t "~T~Tmanipy: #x~X~%" (-> obj manipy))
  (format #t "~T~Tattack-info: #<attack-info @ #x~X>~%" (-> obj attack-info))
  (format #t "~T~Tattack-info-rec: #<attack-info @ #x~X>~%" (-> obj attack-info-rec))
  (format #t "~T~Tanim-seed: ~D~%" (-> obj anim-seed))
  (format #t "~T~Talt-cam-pos: ~`vector`P~%" (-> obj alt-cam-pos))
  (format #t "~T~Tsnowball: ~A~%" (-> obj snowball))
  (format #t "~T~Ttube: ~A~%" (-> obj tube))
  (format #t "~T~Tflut: ~A~%" (-> obj flut))
  (format #t "~T~Tcurrent-level: ~A~%" (-> obj current-level))
  (format #t "~T~Tsaved-pos: #<transformq @ #x~X>~%" (-> obj saved-pos))
  (format #t "~T~Tsaved-owner: ~D~%" (-> obj saved-owner))
  (format #t "~T~Talt-neck-pos: ~`vector`P~%" (-> obj alt-neck-pos))
  (format #t "~T~Tfp-hud: ~D~%" (-> obj fp-hud))
  (format #t "~T~Tno-load-wait: ~D~%" (-> obj no-load-wait))
  (format #t "~T~Tno-look-around-wait: ~D~%" (-> obj no-look-around-wait))
  obj
  )

;; definition (perm) for symbol *target*, type target
(define-perm *target* target #f)

;; definition of type sidekick
(deftype sidekick (process-drawable)
  ((parent-override  (pointer target)  :offset         12)
   (control          control-info      :offset        112)
   (anim-seed        uint64            :offset        192)
   (shadow-in-movie? symbol            :offset-assert 200)
   )
  :heap-base #x60
  :method-count-assert 20
  :size-assert         #xcc
  :flag-assert         #x14006000cc
  (:states
    sidekick-clone
    )
  )

;; definition for method 3 of type sidekick
(defmethod inspect sidekick ((obj sidekick))
  (let ((t9-0 (method-of-type process-drawable inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Tcontrol: ~A~%" (-> obj root))
  (format #t "~T~Tstate-time: ~D~%" (-> obj state-time))
  (format #t "~T~Tstate-flags: ~D~%" (-> obj state-flags))
  (format #t "~T~Tanim-seed: ~D~%" (-> obj anim-seed))
  (format #t "~T~Tshadow-in-movie?: ~A~%" (-> obj shadow-in-movie?))
  obj
  )

;; definition (perm) for symbol *sidekick*, type sidekick
(define-perm *sidekick* sidekick #f)

;; failed to figure out what this is:
0
