Files
jak-project/goal_src/jak1/levels/demo/static-screen.gc
T
water111 637990314b wip: better stack var support (#4222)
Closes #736

---------

Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
2026-04-19 00:14:44 +02:00

121 lines
4.1 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
(bundles "DEM.DGO" "TIT.DGO")
(require "engine/gfx/sprite/sparticle/sparticle-launcher.gc")
(require "engine/ui/hud-h.gc")
(require "engine/game/settings.gc")
;; DECOMP BEGINS
(deftype static-screen (process)
((part sparticle-launch-control 1)
(state-time time-frame))
(:state-methods (idle int time-frame symbol)))
(defmethod relocate ((this static-screen) (offset int))
(let ((v1-0 *kernel-context*))
(set! (-> v1-0 relocating-process) this)
(set! (-> v1-0 relocating-min) (the-as int (&-> this type)))
(set! (-> v1-0 relocating-max) (the-as int (+ (+ (-> this allocated-length) -4 (-> process size)) (the-as int this))))
(set! (-> v1-0 relocating-offset) offset))
(dotimes (v1-2 1)
(if (nonzero? (-> this part v1-2)) (&+! (-> this part v1-2) offset)))
(the-as static-screen ((method-of-type process relocate) this offset)))
(defmethod deactivate ((this static-screen))
(dotimes (s5-0 1)
(if (nonzero? (-> this part s5-0)) (kill-and-free-particles (-> this part s5-0))))
((method-of-type process deactivate) this)
(none))
(defpart 2966
:init-specs
((:texture (new 'static 'texture-id :page #x5c6))
(:num 1.0)
(:y (meters 1.18))
(:scale-x (meters 15))
(:scale-y (meters 6.5))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:timer (seconds -0.005))
(:flags (bit2 bit9 bit13))))
(defpart 2967
:init-specs
((:texture (new 'static 'texture-id :index #x1 :page #x5c6))
(:num 1.0)
(:y (meters -1.264))
(:scale-x (meters 15))
(:scale-y (meters 3.25))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:timer (seconds -0.005))
(:flags (bit2 bit9 bit13))))
(defpart 2968
:init-specs
((:texture (new 'static 'texture-id :index #x2 :page #x5c6))
(:num 1.0)
(:y (meters -2.482))
(:scale-x (meters 15))
(:scale-y (meters 1.625))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:timer (seconds -0.005))
(:flags (bit2 bit9 bit13))))
(defpartgroup group-part-screen1
:id 707
:flags (screen-space)
:bounds (static-bspherem 0 0 0 1)
:parts ((sp-item 2966 :flags (launch-asap)) (sp-item 2967 :flags (launch-asap)) (sp-item 2968 :flags (launch-asap))))
(defstate idle (static-screen)
:virtual #t
:enter
(behavior ((arg0 int) (arg1 time-frame) (arg2 symbol))
(set! (-> *setting-control* current bg-a) 1.0)
(set! (-> *setting-control* default bg-a) 0.0)
(add-setting! 'common-page 'set 0.0 (ash 1 (+ arg0 1))))
:trans
(behavior ()
(hide-hud-quick)
(spawn (-> self part 0) *zero-vector*)
0)
:code
(behavior ((arg0 int) (arg1 time-frame) (arg2 symbol))
(local-vars (v1-6 symbol))
(set-time! (-> self state-time))
(until v1-6
(suspend)
(set! v1-6
(or (and (> arg1 0) (time-elapsed? (-> self state-time) arg1))
(and arg2 (time-elapsed? (-> self state-time) (seconds 1)) (cpad-pressed? 0 select start triangle circle x square)))))
(set! (-> *setting-control* default bg-a) 1.0)
(while (!= (-> *setting-control* current bg-a) (-> *setting-control* default bg-a))
(suspend))
(remove-setting! 'common-page)
(suspend)
0))
(defbehavior static-screen-init-by-other static-screen ((arg0 int) (arg1 texture-id) (arg2 texture-id) (arg3 texture-id) (arg4 time-frame) (arg5 symbol))
(let ((s3-0 (lookup-part-group-by-name "group-part-screen1")))
(when (and s3-0 (nonzero? s3-0) (type-type? (-> s3-0 type) sparticle-launch-group))
(set! (-> *part-id-table* 2966 init-specs 0 initial-valuef) (the-as float arg1))
(set! (-> *part-id-table* 2967 init-specs 0 initial-valuef) (the-as float arg2))
(set! (-> *part-id-table* 2968 init-specs 0 initial-valuef) (the-as float arg3))
(set! (-> self part 0) (create-launch-control (the-as sparticle-launch-group s3-0) self))
(go-virtual idle arg0 arg4 arg5)))
0
(none))
(defun static-screen-spawn ((arg0 int) (arg1 texture-id) (arg2 texture-id) (arg3 texture-id) (arg4 time-frame) (arg5 symbol) (arg6 process-tree))
(process-spawn static-screen arg0 arg1 arg2 arg3 arg4 arg5 :to arg6))