;;-*-Lisp-*- (in-package goal) ;; name: projectile-h.gc ;; name in dgo: projectile-h ;; dgos: GAME (defenum projectile-options :bitfield #t :type uint64 ) (declare-type projectile process) (declare-type projectile-init-by-other-params structure) (define-extern projectile-init-by-other (function projectile-init-by-other-params projectile :behavior projectile)) ;; DECOMP BEGINS (deftype projectile (process-drawable) ((starting-pos vector :inline) (starting-dir vector :inline) (target-pos vector :inline) (base-target-pos vector :inline) (pre-move-transv vector :inline) (timeout time-frame) (spawn-time time-frame) (options projectile-options) (last-target handle) (notify-handle handle) (owner-handle handle) (ignore-handle handle) (update-velocity (function projectile none)) (move (function projectile none)) (pick-target (function projectile none)) (max-speed float) (old-dist float 16) (old-dist-count int32) (hits int32) (max-hits int32) (tween float) (attack-mode symbol) (attack-id uint32) (damage float) (vehicle-damage-factor float) (vehicle-impulse-factor float) (charge-level float) (sound-id sound-id) (stop-speed meters) (invinc-time time-frame) (desired-target uint64) (desired-target-pos vector :inline) ) (:methods (projectile-method-20 () none) (projectile-method-21 () none) (projectile-method-22 () none) (projectile-method-23 () none) (projectile-method-24 () none) (projectile-method-25 () none) (projectile-method-26 () none) (projectile-method-27 () none) (projectile-method-28 () none) (projectile-method-29 () none) (projectile-method-30 () none) (projectile-method-31 () none) (projectile-method-32 () none) (projectile-method-33 () none) (projectile-method-34 () none) (projectile-method-35 () none) (projectile-method-36 () none) (projectile-method-37 () none) (projectile-method-38 () none) (projectile-method-39 () none) (projectile-method-40 () none) ) ) (deftype projectile-init-by-other-params (structure) ((pos vector :inline) (vel vector :inline) (target-pos vector :inline) (target-handle uint64) (ent entity) (charge float) (attack-id uint32) (options projectile-options) (notify-handle handle) (owner-handle handle) (ignore-handle handle) (timeout time-frame) (damage float) (vehicle-damage-factor float) (vehicle-impulse-factor float) ) ) (defun spawn-projectile ((proj-type type) (params projectile-init-by-other-params) (parent-proc-tree process-tree) (pool dead-pool)) "Create a new process for a projectile of the given type." (let ((s4-0 (get-process pool proj-type #x4000 1))) (when s4-0 (let ((t9-1 (method-of-type process activate))) (t9-1 s4-0 parent-proc-tree "projectile" (the-as pointer #x70004000)) ) (run-now-in-process s4-0 projectile-init-by-other params) (-> s4-0 ppointer) ) ) ) (deftype projectile-bounce (projectile) ((played-bounce-time time-frame) (tumble-quat quaternion :inline) (gravity float) ) (:methods (projectile-bounce-method-41 () none) (projectile-bounce-method-42 () none) (projectile-bounce-method-43 () none) ) )