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

;; definition of type nav-enemy-info
(deftype nav-enemy-info (basic)
  ((idle-anim                 int32         :offset-assert   4)
   (walk-anim                 int32         :offset-assert   8)
   (turn-anim                 int32         :offset-assert  12)
   (notice-anim               int32         :offset-assert  16)
   (run-anim                  int32         :offset-assert  20)
   (jump-anim                 int32         :offset-assert  24)
   (jump-land-anim            int32         :offset-assert  28)
   (victory-anim              int32         :offset-assert  32)
   (taunt-anim                int32         :offset-assert  36)
   (die-anim                  int32         :offset-assert  40)
   (neck-joint                int32         :offset-assert  44)
   (player-look-at-joint      int32         :offset-assert  48)
   (run-travel-speed          meters        :offset-assert  52)
   (run-rotate-speed          degrees       :offset-assert  56)
   (run-acceleration          meters        :offset-assert  60)
   (run-turn-time             seconds       :offset-assert  64)
   (walk-travel-speed         meters        :offset-assert  72)
   (walk-rotate-speed         degrees       :offset-assert  76)
   (walk-acceleration         meters        :offset-assert  80)
   (walk-turn-time            seconds       :offset-assert  88)
   (attack-shove-back         meters        :offset-assert  96)
   (attack-shove-up           meters        :offset-assert 100)
   (shadow-size               meters        :offset-assert 104)
   (notice-nav-radius         meters        :offset-assert 108)
   (nav-nearest-y-threshold   meters        :offset-assert 112)
   (notice-distance           meters        :offset-assert 116)
   (proximity-notice-distance meters        :offset-assert 120)
   (stop-chase-distance       meters        :offset-assert 124)
   (frustration-distance      meters        :offset-assert 128)
   (frustration-time          time-frame    :offset-assert 136)
   (die-anim-hold-frame       float         :offset-assert 144)
   (jump-anim-start-frame     float         :offset-assert 148)
   (jump-land-anim-end-frame  float         :offset-assert 152)
   (jump-height-min           meters        :offset-assert 156)
   (jump-height-factor        float         :offset-assert 160)
   (jump-start-anim-speed     float         :offset-assert 164)
   (shadow-max-y              meters        :offset-assert 168)
   (shadow-min-y              meters        :offset-assert 172)
   (shadow-locus-dist         meters        :offset-assert 176)
   (use-align                 symbol        :offset-assert 180)
   (draw-shadow               symbol        :offset-assert 184)
   (move-to-ground            symbol        :offset-assert 188)
   (hover-if-no-ground        symbol        :offset-assert 192)
   (use-momentum              symbol        :offset-assert 196)
   (use-flee                  symbol        :offset-assert 200)
   (use-proximity-notice      symbol        :offset-assert 204)
   (use-jump-blocked          symbol        :offset-assert 208)
   (use-jump-patrol           symbol        :offset-assert 212)
   (gnd-collide-with          collide-kind  :offset-assert 216)
   (debug-draw-neck           symbol        :offset-assert 224)
   (debug-draw-jump           symbol        :offset-assert 228)
   )
  :method-count-assert 9
  :size-assert         #xe8
  :flag-assert         #x9000000e8
  )

;; definition for method 3 of type nav-enemy-info
(defmethod inspect nav-enemy-info ((obj nav-enemy-info))
  (format #t "[~8x] ~A~%" obj (-> obj type))
  (format #t "~Tidle-anim: ~D~%" (-> obj idle-anim))
  (format #t "~Twalk-anim: ~D~%" (-> obj walk-anim))
  (format #t "~Tturn-anim: ~D~%" (-> obj turn-anim))
  (format #t "~Tnotice-anim: ~D~%" (-> obj notice-anim))
  (format #t "~Trun-anim: ~D~%" (-> obj run-anim))
  (format #t "~Tjump-anim: ~D~%" (-> obj jump-anim))
  (format #t "~Tjump-land-anim: ~D~%" (-> obj jump-land-anim))
  (format #t "~Tvictory-anim: ~D~%" (-> obj victory-anim))
  (format #t "~Ttaunt-anim: ~D~%" (-> obj taunt-anim))
  (format #t "~Tdie-anim: ~D~%" (-> obj die-anim))
  (format #t "~Tneck-joint: ~D~%" (-> obj neck-joint))
  (format #t "~Tplayer-look-at-joint: ~D~%" (-> obj player-look-at-joint))
  (format #t "~Trun-travel-speed: (meters ~m)~%" (-> obj run-travel-speed))
  (format #t "~Trun-rotate-speed: (deg ~r)~%" (-> obj run-rotate-speed))
  (format #t "~Trun-acceleration: (meters ~m)~%" (-> obj run-acceleration))
  (format #t "~Trun-turn-time: (seconds ~e)~%" (-> obj run-turn-time))
  (format #t "~Twalk-travel-speed: (meters ~m)~%" (-> obj walk-travel-speed))
  (format #t "~Twalk-rotate-speed: (deg ~r)~%" (-> obj walk-rotate-speed))
  (format #t "~Twalk-acceleration: (meters ~m)~%" (-> obj walk-acceleration))
  (format #t "~Twalk-turn-time: (seconds ~e)~%" (-> obj walk-turn-time))
  (format #t "~Tattack-shove-back: (meters ~m)~%" (-> obj attack-shove-back))
  (format #t "~Tattack-shove-up: (meters ~m)~%" (-> obj attack-shove-up))
  (format #t "~Tshadow-size: (meters ~m)~%" (-> obj shadow-size))
  (format #t "~Tnotice-nav-radius: (meters ~m)~%" (-> obj notice-nav-radius))
  (format #t "~Tnav-nearest-y-threshold: (meters ~m)~%" (-> obj nav-nearest-y-threshold))
  (format #t "~Tnotice-distance: (meters ~m)~%" (-> obj notice-distance))
  (format #t "~Tproximity-notice-distance: (meters ~m)~%" (-> obj proximity-notice-distance))
  (format #t "~Tstop-chase-distance: (meters ~m)~%" (-> obj stop-chase-distance))
  (format #t "~Tfrustration-distance: (meters ~m)~%" (-> obj frustration-distance))
  (format #t "~Tfrustration-time: ~D~%" (-> obj frustration-time))
  (format #t "~Tdie-anim-hold-frame: ~f~%" (-> obj die-anim-hold-frame))
  (format #t "~Tjump-anim-start-frame: ~f~%" (-> obj jump-anim-start-frame))
  (format #t "~Tjump-land-anim-end-frame: ~f~%" (-> obj jump-land-anim-end-frame))
  (format #t "~Tjump-height-min: (meters ~m)~%" (-> obj jump-height-min))
  (format #t "~Tjump-height-factor: ~f~%" (-> obj jump-height-factor))
  (format #t "~Tjump-start-anim-speed: ~f~%" (-> obj jump-start-anim-speed))
  (format #t "~Tshadow-max-y: (meters ~m)~%" (-> obj shadow-max-y))
  (format #t "~Tshadow-min-y: (meters ~m)~%" (-> obj shadow-min-y))
  (format #t "~Tshadow-locus-dist: (meters ~m)~%" (-> obj shadow-locus-dist))
  (format #t "~Tuse-align: ~A~%" (-> obj use-align))
  (format #t "~Tdraw-shadow: ~A~%" (-> obj draw-shadow))
  (format #t "~Tmove-to-ground: ~A~%" (-> obj move-to-ground))
  (format #t "~Thover-if-no-ground: ~A~%" (-> obj hover-if-no-ground))
  (format #t "~Tuse-momentum: ~A~%" (-> obj use-momentum))
  (format #t "~Tuse-flee: ~A~%" (-> obj use-flee))
  (format #t "~Tuse-proximity-notice: ~A~%" (-> obj use-proximity-notice))
  (format #t "~Tuse-jump-blocked: ~A~%" (-> obj use-jump-blocked))
  (format #t "~Tuse-jump-patrol: ~A~%" (-> obj use-jump-patrol))
  (format #t "~Tgnd-collide-with: ~D~%" (-> obj gnd-collide-with))
  (format #t "~Tdebug-draw-neck: ~A~%" (-> obj debug-draw-neck))
  (format #t "~Tdebug-draw-jump: ~A~%" (-> obj debug-draw-jump))
  obj
  )

;; definition of type nav-enemy
(deftype nav-enemy (process-drawable)
  ((collide-info        collide-shape-moving         :offset        112)
   (enemy-info          fact-info-enemy              :offset        144)
   (hit-from-dir        vector               :inline :offset-assert 176)
   (event-param-point   vector               :inline :offset-assert 192)
   (frustration-point   vector               :inline :offset-assert 208)
   (jump-dest           vector               :inline :offset-assert 224)
   (jump-trajectory     trajectory           :inline :offset-assert 240)
   (jump-time           time-frame                   :offset-assert 280)
   (nav-info            nav-enemy-info               :offset-assert 288)
   (target-speed        float                        :offset-assert 292)
   (momentum-speed      float                        :offset-assert 296)
   (acceleration        float                        :offset-assert 300)
   (rotate-speed        float                        :offset-assert 304)
   (turn-time           time-frame                   :offset-assert 312)
   (frustration-time    time-frame                   :offset-assert 320)
   (speed-scale         float                        :offset-assert 328)
   (neck                joint-mod                    :offset-assert 332)
   (reaction-time       time-frame                   :offset-assert 336)
   (notice-time         time-frame                   :offset-assert 344)
   (state-timeout       time-frame                   :offset-assert 352)
   (free-time           time-frame                   :offset-assert 360)
   (touch-time          time-frame                   :offset-assert 368)
   (nav-enemy-flags     nav-enemy-flags              :offset-assert 376)
   (incomming-attack-id handle                       :offset-assert 384)
   (jump-return-state   (state process)              :offset-assert 392)
   (rand-gen            random-generator             :offset-assert 396)
   )
  :heap-base #x120
  :method-count-assert 76
  :size-assert         #x190
  :flag-assert         #x4c01200190
  (:methods
    (nav-enemy-attack () _type_ :state 20)
    (nav-enemy-chase () _type_ :state 21)
    (nav-enemy-flee () _type_ :state 22)
    (nav-enemy-die () _type_ :state 23)
    (nav-enemy-fuel-cell () _type_ :state 24)
    (nav-enemy-give-up () _type_ :state 25)
    (nav-enemy-jump () _type_ :state 26)
    (nav-enemy-jump-land () _type_ :state 27)
    (nav-enemy-idle () _type_ :state 28)
    (nav-enemy-notice () _type_ :state 29)
    (nav-enemy-patrol () _type_ :state 30)
    (nav-enemy-stare () _type_ :state 31)
    (nav-enemy-stop-chase () _type_ :state 32)
    (nav-enemy-victory () _type_ :state 33)
    (dummy-34 (_type_) none 34)
    (nav-enemy-wait-for-cue () _type_ :state 35)
    (nav-enemy-jump-to-point () _type_ :state 36)
    (TODO-RENAME-37 (_type_) none 37)
    (TODO-RENAME-38 (_type_) none 38)
    (common-post (_type_) none 39)
    (dummy-40 (_type_) none 40)
    (dummy-41 (_type_) none 41)
    (TODO-RENAME-42 (_type_) int 42)
    (dummy-43 (_type_ process event-message-block) object 43)
    (dummy-44 (_type_ process event-message-block) object 44)
    (TODO-RENAME-45 (_type_ nav-enemy-info) none 45)
    (TODO-RENAME-46 (_type_ float) basic 46)
    (initialize-collision (_type_) none 47)
    (TODO-RENAME-48 (_type_) none 48)
    (TODO-RENAME-49 (_type_ nav-enemy-info) float 49)
    (TODO-RENAME-50 (_type_ vector) symbol 50)
    (dummy-51 (_type_) none 51)
    (dummy-52 (_type_ vector) symbol 52)
    (dummy-53 (_type_) symbol 53)
    (dummy-54 (_type_ vector) symbol 54)
    (dummy-55 (_type_) symbol 55)
    (set-jump-height-factor! (_type_ int) none 56)
    (dummy-57 (_type_) none 57)
    (dummy-58 (_type_) none 58)
    (TODO-RENAME-59 (_type_) none 59)
    (dummy-60 (_type_ symbol) symbol 60)
    (snow-bunny-attack () _type_ :state 61)
    (snow-bunny-chase-hop () _type_ :state 62)
    (snow-bunny-defend () _type_ :state 63)
    (dummy-64 () _type_ :state 64)
    (snow-bunny-lunge () _type_ :state 65)
    (snow-bunny-nav-resume () _type_ :state 66)
    (snow-bunny-patrol-hop () _type_ :state 67)
    (snow-bunny-patrol-idle () _type_ :state 68)
    (dummy-69 () _type_ :state 69)
    (snow-bunny-retreat-hop () _type_ :state 70)
    (snow-bunny-tune-spheres () _type_ :state 71)
    (nav-enemy-touch-handler (_type_ process event-message-block) object 72)
    (nav-enemy-attack-handler (_type_ process event-message-block) object 73)
    (nav-enemy-jump-blocked () _type_ :state 74)
    (dummy-75 () _type_ :state 75)
    )
  )

;; definition for method 3 of type nav-enemy
(defmethod inspect nav-enemy ((obj nav-enemy))
  (let ((t9-0 (method-of-type process-drawable inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Thit-from-dir: ~`vector`P~%" (-> obj hit-from-dir))
  (format #t "~T~Tevent-param-point: ~`vector`P~%" (-> obj event-param-point))
  (format #t "~T~Tfrustration-point: ~`vector`P~%" (-> obj frustration-point))
  (format #t "~T~Tjump-dest: ~`vector`P~%" (-> obj jump-dest))
  (format #t "~T~Tjump-trajectory: #<trajectory @ #x~X>~%" (-> obj jump-trajectory))
  (format #t "~T~Tjump-time: ~D~%" (-> obj jump-time))
  (format #t "~T~Tnav-info: ~A~%" (-> obj nav-info))
  (format #t "~T~Ttarget-speed: ~f~%" (-> obj target-speed))
  (format #t "~T~Tmomentum-speed: ~f~%" (-> obj momentum-speed))
  (format #t "~T~Tacceleration: ~f~%" (-> obj acceleration))
  (format #t "~T~Trotate-speed: ~f~%" (-> obj rotate-speed))
  (format #t "~T~Tturn-time: ~D~%" (-> obj turn-time))
  (format #t "~T~Tfrustration-time: ~D~%" (-> obj frustration-time))
  (format #t "~T~Tspeed-scale: ~f~%" (-> obj speed-scale))
  (format #t "~T~Tneck: ~A~%" (-> obj neck))
  (format #t "~T~Treaction-time: ~D~%" (-> obj reaction-time))
  (format #t "~T~Tnotice-time: ~D~%" (-> obj notice-time))
  (format #t "~T~Tstate-timeout: ~D~%" (-> obj state-timeout))
  (format #t "~T~Tfree-time: ~D~%" (-> obj free-time))
  (format #t "~T~Ttouch-time: ~D~%" (-> obj touch-time))
  (format #t "~T~Tnav-enemy-flags: ~D~%" (-> obj nav-enemy-flags))
  (format #t "~T~Tincomming-attack-id: ~D~%" (-> obj incomming-attack-id))
  (format #t "~T~Tjump-return-state: ~A~%" (-> obj jump-return-state))
  (format #t "~T~Trand-gen: ~A~%" (-> obj rand-gen))
  obj
  )

;; failed to figure out what this is:
0
