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

;; definition for symbol *entity-info*, type (array entity-info)
(define *entity-info* (the-as (array entity-info) (new 'static 'boxed-array :type entity-info
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref sage-finalboss :method-count 53)
                                                      :package "l1"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x8000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref robotboss :method-count 21)
                                                      :package "l1"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x8000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref assistant-levitator :method-count 53)
                                                      :package "l1"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x8000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref babak :method-count 76)
                                                      :package "l1"
                                                      :art-group '("babak")
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x2800
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref racer :method-count 24)
                                                      :package "game"
                                                      :art-group '("racer")
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x4000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref springbox :method-count 20)
                                                      :package "game"
                                                      :art-group '("bounceytarp")
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x1400
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref launcher :method-count 20)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x400
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref pickup-spawner :method-count 30)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #xc00
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref bucket :method-count 30)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #xc00
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref barrel :method-count 30)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #xc00
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref crate :method-count 30)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #xc00
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref orb-cache-top :method-count 29)
                                                      :package "game"
                                                      :art-group '("orb-cache-top")
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x1000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref eco :method-count 31)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x1000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref ecovent :method-count 21)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x1000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref fuel-cell :method-count 31)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x1400
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref buzzer :method-count 31)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x1000
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref money :method-count 31)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x800
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref water-vol :method-count 30)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #xc00
                                                      )
                                                    (new 'static 'entity-info
                                                      :ptype (type-ref target-start :method-count 15)
                                                      :package "game"
                                                      :art-group '()
                                                      :pool '*16k-dead-pool*
                                                      :heap-size #x400
                                                      )
                                                    )
                                                  )
        )

;; definition for function entity-info-lookup
;; INFO: Return type mismatch basic vs entity-info.
(defun entity-info-lookup ((arg0 type))
  (the-as entity-info (cond
                        ((nonzero? (-> arg0 method-table 13))
                         (-> arg0 method-table 13)
                         )
                        (else
                          (let ((v1-1 *entity-info*))
                            (dotimes (a1-0 (-> v1-1 length))
                              (when (= arg0 (-> v1-1 a1-0 ptype))
                                (set! (-> arg0 method-table 13) (the-as function (-> v1-1 a1-0)))
                                (return (the-as entity-info (-> v1-1 a1-0)))
                                )
                              )
                            )
                          (set! (-> arg0 method-table 13) #f)
                          #f
                          )
                        )
          )
  )
