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

;; name: anim-tester.gc
;; name in dgo: anim-tester
;; dgos: ENGINE, GAME

;; NOTE - for default-menu
(define-extern anim-tester-start (function symbol))

;; DECOMP BEGINS

(defenum anim-tester-flags
  :bitfield #t
  :type int32
  (fanimt0)
  (fanimt1)
  (fanimt2)
  (fanimt3)
  (fanimt4)
  (fanimt5)
  )

(defenum anim-tester-debug-flags
  :bitfield #t
  :type int32
  (unk0)
  (unk1)
  (unk2)
  (unk3)
  (at-show-joint-info)
  (at-apply-align)
  (unk6)
  )

(deftype list-control (structure)
  ((listfunc             (function int list-control symbol)  :offset-assert 0)
   (list-owner           uint32     :offset-assert 4)
   (top                  int32      :offset-assert 8)
   (left                 int32      :offset-assert 12)
   (list                 glst-list  :offset-assert 16)
   (the-node             glst-node  :offset-assert 20)
   (top-index            int32      :offset-assert 24)
   (the-index            int32      :offset-assert 28)
   (the-disp-line        int32      :offset-assert 32)
   (highlight-index      int32      :offset-assert 36)
   (current-index        int32      :offset-assert 40)
   (numlines             int32      :offset-assert 44)
   (lines-to-disp        int32      :offset-assert 48)
   (charswide            int32      :offset-assert 52)
   (highlight-disp-line  int32      :offset-assert 56)
   (field-id             int32      :offset-assert 60)
   (xpos                 int32      :offset-assert 64)
   (ypos                 int32      :offset-assert 68)
   (user-info            int32      :offset-assert 72)
   (user-info-u          uint32     :offset 72) ;; custom
   (return-int           int32      :offset-assert 76)
   )
  :allow-misaligned
  :method-count-assert 9
  :size-assert         #x50
  :flag-assert         #x900000050
  )

(deftype anim-tester (process-drawable)
  ((flags        anim-tester-flags     :offset-assert 200)
   (debug-flags  anim-tester-debug-flags :offset-assert 204)
   (obj-list     glst-list     :inline :offset-assert 208)
   (current-obj  string                :offset-assert 224)
   (speed        int32                 :offset-assert 228)
   (list-con     list-control  :inline :offset-assert 232)
   (pick-con     list-control  :inline :offset-assert 312)
   (item-field   int64                 :offset-assert 392)
   (inc-delay    int32                 :offset-assert 400)
   (inc-timer    int32                 :offset-assert 404)
   (edit-mode    int32                 :offset-assert 408)
   (old-mode     int32                 :offset-assert 412)
   (anim-speed   float                 :offset-assert 416)
   (anim-gspeed  float                 :offset-assert 420)
   (anim-first   float                 :offset-assert 424)
   (anim-last    float                 :offset-assert 428)
   )
  :method-count-assert 20
  :size-assert         #x1b0
  :heap-base           #x130
  :flag-assert         #x14013001b0
  (:states
    anim-tester-process
    )
  )

(define-extern *anim-tester* (pointer anim-tester))
(set! *anim-tester* #f) ;; temp