[jak2] minor decomp cleanup + add force actors and sprite pc hacks (#2291)

I didn't actually visually notice much of a difference with these hacks
unlike in Jak 1, but I also avoided checking the missions thoroughly
since the game crashes very often right now.
This commit is contained in:
ManDude
2023-02-28 00:35:57 +00:00
committed by GitHub
parent c3310e1833
commit 1d0a5ade8d
52 changed files with 640 additions and 518 deletions
+49 -23
View File
@@ -9087,8 +9087,8 @@
))
(define-extern *traffic-manager* process)
(define-extern *ctywide-entity* object)
(define-extern *lwide-entity* object)
(define-extern *ctywide-entity* entity)
(define-extern *lwide-entity* entity)
(define-extern *race-vehicle-entity* entity-actor)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -30035,7 +30035,7 @@
(define-extern entity-count (function int))
(define-extern entity-remap-names (function pair none))
(define-extern process-status-bits (function process symbol none))
(define-extern process-entity-set! (function process entity-actor entity-actor))
(define-extern process-entity-set! (function process entity entity))
(define-extern process-task-mask (function process task-mask))
(define-extern update-actor-vis-box (function process-drawable vector vector none))
(define-extern expand-bounding-box (function vector vector vector vector none))
@@ -48417,6 +48417,19 @@
(phase-4a 7)
)
(defenum nav-branch-flags
:bitfield #t
:type uint8
(nabflags-0)
(nabflags-1)
(nabflags-2)
(nabflags-3)
(nabflags-4)
(nabflags-5)
(nabflags-6)
(nabflags-7)
)
(declare-type nav-node structure)
(deftype nav-branch (structure)
((node nav-node 2 :offset-assert 0)
@@ -48430,7 +48443,7 @@
(max-user-count uint8 :offset-assert 12)
(user-count uint8 :offset-assert 13)
(width uint8 :offset-assert 14)
(flags uint8 :offset-assert 15)
(flags nav-branch-flags :offset-assert 15)
)
:method-count-assert 21
:size-assert #x10
@@ -48727,7 +48740,7 @@
(city-level-info-method-12 (_type_ vector nav-branch vector) vector 12)
(lookup-cell-by-position (_type_ vector) vis-cell 13)
(get-first-cell-in-box (_type_ vis-grid-box) vis-cell 14)
(sphere-in-grid? (_type_ int int) symbol 15)
(sphere-in-grid? (_type_ vector int) symbol 15)
(callback-on-nav-segments-in-sphere (_type_ vector int traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 16)
(update-suppressions-from-traffic-engine (_type_ traffic-engine) none 17)
(city-level-info-method-18 (_type_) none 18)
@@ -48886,8 +48899,21 @@
)
)
(defenum traffic-type-flags
:bitfield #t
:type uint8
(trtflags-0)
(trtflags-1)
(trtflags-2)
(trtflags-3)
(trtflags-4)
(trtflags-5)
(trtflags-6)
(trtflags-7)
)
(deftype traffic-object-type-info (structure)
((flags uint8 :offset-assert 0)
((flags traffic-type-flags :offset-assert 0)
(target-count int8 :offset-assert 1)
(active-count int8 :offset-assert 2)
(inactive-count int8 :offset-assert 3)
@@ -48898,7 +48924,7 @@
(parking-spot-prob uint8 :offset-assert 10)
(guard-type uint8 :offset-assert 11)
(array (pointer handle) :offset-assert 12) ;; this is a total guess TODO
(level level :offset-assert 16)
(level symbol :offset-assert 16)
)
:method-count-assert 9
:size-assert #x14
@@ -49008,7 +49034,7 @@
(stop-alarm-sound (_type_) none 11)
(debug-unused (_type_) none 12)
(add-object (_type_ traffic-type process) none 13)
(sphere-in-loaded-city-infos? (_type_ int vector) symbol 14)
(sphere-in-loaded-city-infos? (_type_ vector int) symbol 14)
(activate-one-citizen (_type_ nav-segment float) none 15)
(activate-one-vehicle (_type_ nav-segment float) none 16)
(can-dest-be-used? (_type_ nav-branch) symbol 17)
@@ -49028,7 +49054,7 @@
(decrease-alert-level (_type_ int) none 31)
(set-alert-level (_type_ int) none 32)
(set-max-alert-level (_type_ int) none 33)
(set-alert-duration (_type_ int) none 34)
(set-alert-duration (_type_ time-frame) none 34)
(get-alert-level (_type_) int 35)
(get-target "@returns [[*target*]]" (_type_) target 36)
(set-object-target-level (_type_ int float) none 37)
@@ -49055,18 +49081,18 @@
(set-object-auto-activate (_type_ int object) none 58)
(debug-check-proc-in-tracker (_type_ process int) none 59)
(kill-traffic-sphere "Kill everything in the sphere with a traffic-off-force." (_type_ sphere) none 60)
(level-loaded "Call after loading a level to patch the data in the bsp" (_type_ level) none 61)
(level-killed "Call after removing a level. Kills processes and unlinks nav" (_type_ level) none 62)
(level-link "Call after loading a level to patch the data in the bsp" (_type_ level) none 61)
(level-unlink "Call after removing a level. Kills processes and unlinks nav" (_type_ level) none 62)
(traffic-engine-method-63 (_type_) none 63)
(traffic-engine-method-64 (_type_) none 64)
(handle-new-vis-cell (_type_ vis-cell) none 65)
(update-sync-from-frame-counter (_type_) none 66)
(per-frame-guard-update (_type_) none 67)
(per-frame-activate-deactivate "per-frame activate and deactivate processes." (_type_) none 68)
(per-frame-danger-update "see what's dangerous and make people avoid it." (_type_) none 69)
(update-guards (_type_) none 67)
(update-traffic-amount "kills inactive traffic and spawns more if needed." (_type_) none 68)
(update-danger "see what's dangerous and make people avoid it." (_type_) none 69)
(update-danger-from-target "make people run away from jak when he is dangerous." (_type_) none 70)
(per-frame-alert-update (_type_) none 71)
(per-frame-suppressor-update (_type_) none 72)
(update-alert-state (_type_) none 71)
(update-suppressor (_type_) none 72)
(recompute-supressions (_type_) none 73)
)
)
@@ -51568,8 +51594,8 @@
:flag-assert #x900000020)
(deftype traffic-manager (process)
((traffic-engine traffic-engine :offset-assert 128)
(fast-spawn basic :offset-assert 132)
((traffic-engine traffic-engine :offset-assert 128)
(fast-spawn symbol :offset-assert 132)
(dark-guard-ratio int32 :offset-assert 136)
(spawn-params traffic-object-spawn-params :inline :offset-assert 144)
)
@@ -51579,12 +51605,12 @@
(:methods
(idle () _type_ :state 14)
(active () _type_ :state 15)
(traffic-manager-method-16 (_type_) none 16)
(update (_type_) none 16)
(spawn-all (_type_) none 17)
(traffic-manager-method-18 (_type_) none 18)
(kill-all (_type_) none 19)
(traffic-manager-method-20 (_type_) none 20)
(traffic-manager-method-21 (_type_) none 21)
(kill-excess-once (_type_) none 18)
(kill-all-inactive (_type_) none 19)
(reset-and-init (_type_) none 20)
(init-params (_type_) none 21)
)
)
+21
View File
@@ -4137,5 +4137,26 @@
"vars": {
"s4-0": "race-hash"
}
},
"(method 18 traffic-manager)": {
"vars": {
"s5-0": "type-i",
"v1-2": "traffic",
"a0-5": "total-count"
}
},
"(method 21 traffic-manager)": {
"vars": {
"s5-0": "traffic-want-counts",
"s5-1": "params"
}
},
"(method 70 traffic-engine)": {
"vars": {
"f0-0": "notify-radius",
"f2-0": "danger-level",
"f1-0": "danger-radius",
"f3-0": "decay-rate"
}
}
}
@@ -66,7 +66,7 @@ class Merc2 : public BucketRenderer {
GLuint vao, vertex;
};
static constexpr int kMaxEffect = 32;
static constexpr int kMaxEffect = 64;
bool m_effect_debug_mask[kMaxEffect];
struct MercMat {
@@ -76,7 +76,8 @@ class GlowRenderer {
// max sprites should be 128 in simple sprite, plus 256 from aux = 384
// 20 width = 20 * 20 = 400 sprites > 384.
static constexpr int kDownsampleBatchWidth = 20;
// we multiply by 4 to get 16x as many max sprites (in-game the max is only 12x)
static constexpr int kDownsampleBatchWidth = 20 * 4;
static constexpr int kMaxSprites = kDownsampleBatchWidth * kDownsampleBatchWidth;
static constexpr int kMaxVertices = kMaxSprites * 32; // check.
static constexpr int kMaxIndices = kMaxSprites * 32; // check.
+1 -3
View File
@@ -6,9 +6,7 @@
;; dgos: GAME, ENGINE
(#if PC_BIG_MEMORY
(defconstant SPRITE_MAX_AMOUNT_MULT 12)
(none))
(#when PC_BIG_MEMORY (defconstant SPRITE_MAX_AMOUNT_MULT 12))
(deftype sprite-vec-data-2d (structure)
+3 -2
View File
@@ -87,9 +87,10 @@
(defmethod new sprite-aux-list ((allocation symbol) (type-to-make type) (size int))
"Allocate a sprite-aux-list with room for size 4-byte entries"
(#when PC_BIG_MEMORY
(*! size SPRITE_MAX_AMOUNT_MULT)
)
(*! size SPRITE_MAX_AMOUNT_MULT))
(let ((v0-0 (object-new allocation type-to-make
(the-as int (+ (-> type-to-make size) (the-as uint (* (+ size -1) 4))))
)
+1 -1
View File
@@ -1183,7 +1183,7 @@
(defbehavior enemy-init-by-other enemy ((arg0 process-drawable) (arg1 transformq))
(let ((a1-1 (-> arg1 scale x)))
(if a1-1
(process-entity-set! self (the-as entity-actor a1-1))
(process-entity-set! self (the-as entity a1-1))
)
)
(if (-> arg1 scale y)
+2 -2
View File
@@ -71,9 +71,9 @@
(define *traffic-manager* (the-as process #f))
(define *ctywide-entity* (the-as object #f))
(define *ctywide-entity* (the-as entity #f))
(define *lwide-entity* (the-as object #f))
(define *lwide-entity* (the-as entity #f))
(define *race-vehicle-entity* (the-as entity-actor #f))
@@ -293,9 +293,9 @@
(kmemopen global "collide-lists")
(define *collide-hit-by-player-list* (new 'global 'engine 'collide-hit-by-player-list 640 connection))
(define *collide-hit-by-player-list* (new 'global 'engine 'collide-hit-by-player-list (* 640 PROCESS_HEAP_MULT) connection))
(define *collide-hit-by-others-list* (new 'global 'engine 'collide-hit-by-others-list 768 connection))
(define *collide-hit-by-others-list* (new 'global 'engine 'collide-hit-by-others-list PROCESS_HEAP_MAX connection))
(define *collide-player-list* (new 'global 'engine 'collide-player-list 32 connection))
@@ -2273,7 +2273,7 @@ This commonly includes things such as:
(logclear! (-> obj flags) (collectable-flag fadeout))
)
(((pickup-type board))
(process-entity-set! obj (the-as entity-actor #f))
(process-entity-set! obj (the-as entity #f))
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-board" (the-as (pointer uint32) #f)))
@@ -456,7 +456,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
(defbehavior projectile-init-by-other projectile ((arg0 projectile-init-by-other-params))
(stack-size-set! (-> self main-thread) 512)
(logclear! (-> self mask) (process-mask actor-pause))
(process-entity-set! self (the-as entity-actor (-> arg0 ent)))
(process-entity-set! self (-> arg0 ent))
(set! (-> self charge-level) (-> arg0 charge))
(set! (-> self options) (-> arg0 options))
(set! (-> self notify-handle) (-> arg0 notify-handle))
+1 -1
View File
@@ -572,7 +572,7 @@ This commonly includes things such as:
;; WARN: Return type mismatch object vs none.
(defbehavior judge-init-by-other judge ((arg0 vector) (arg1 uint))
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(set! (-> self score) arg1)
(setup-collision self)
(init self)
+1 -1
View File
@@ -9,7 +9,7 @@
(kmemopen global "engines")
(defconstant MATRIX_ENGINE_AMOUNT (* 1024 1))
(defconstant MATRIX_ENGINE_AMOUNT (* 1024 PROCESS_HEAP_MULT))
(define *background-draw-engine* (new 'global 'engine 'draw 10 connection))
+1 -4
View File
@@ -56,13 +56,10 @@
(define-extern reset-actors (function symbol none))
;; NOTE - for projectile
(define-extern process-entity-set! (function process entity-actor entity-actor))
(define-extern process-entity-set! (function process entity entity))
(define-extern process-by-ename (function string process))
(define-extern entity-birth-no-kill (function entity process))
;; NOTE - for voicebox
(define-extern process-entity-set! (function process entity-actor entity-actor))
;; DECOMP BEGINS
(define *generate-actor-vis* #f)
+4 -3
View File
@@ -485,8 +485,8 @@
(none)
)
(defun process-entity-set! ((arg0 process) (arg1 entity-actor))
(set! (-> arg0 entity) arg1)
(defun process-entity-set! ((arg0 process) (arg1 entity))
(set! (-> arg0 entity) (the-as entity-actor arg1))
(if arg1
(set! (-> arg0 level) (-> arg1 extra level))
(set! (-> arg0 level) (-> *level* default-level))
@@ -2236,7 +2236,8 @@
(dotimes (s1-1 s2-3)
(set! sv-48 (-> s3-4 data s1-1))
(cond
((and (is-object-visible? s4-1 (-> sv-48 vis-id))
((and (#if PC_PORT (or (with-pc (-> *pc-settings* force-actors?)) (is-object-visible? s4-1 (-> sv-48 vis-id)))
(is-object-visible? s4-1 (-> sv-48 vis-id)))
(not (logtest? (-> sv-48 perm status) (entity-perm-status bit-9 bit-10)))
(not (logtest? (-> sv-48 kill-mask) sv-32))
(or (-> s4-1 vis-info 0) (< (vector-vector-distance (-> sv-48 trans) sv-16) (-> sv-48 vis-dist)))
@@ -1843,7 +1843,7 @@
)
)
(if a1-6
(process-entity-set! self (the-as entity-actor a1-6))
(process-entity-set! self a1-6)
)
)
)
@@ -1280,5 +1280,5 @@
;; todo foreground-draw-hud
;; changed to perm.
(define-perm *foreground-draw-engine* engine (new 'global 'engine 'draw 768 connection))
;; changed to perm and added multiplier.
(define-perm *foreground-draw-engine* engine (new 'global 'engine 'draw PROCESS_HEAP_MAX connection))
@@ -853,7 +853,15 @@
)
(add-debug-matrix *display-sprite-marks* (bucket-id debug2) (-> obj origin) (meters 2))
)
(sphere-in-view-frustum? (the-as sphere s5-1))
;; can we see it?
(#if (not PC_PORT)
(sphere-in-view-frustum? (the-as sphere s5-1))
(if (-> *pc-settings* ps2-parts?)
;; pc port : launchers have larger bsphere if you have ps2 parts off
(sphere-in-view-frustum? (the-as sphere s5-1))
(sphere-in-view-frustum? (the-as sphere (begin (*! (-> s5-1 w) 4.0) s5-1)))
)
)
)
)
)
@@ -986,6 +994,12 @@
(if (nonzero? (-> obj matrix))
(set! f30-0 0.0)
)
;; if we have ps2 particles off, say we're at the camera
(with-pc
(if (not (-> *pc-settings* ps2-parts?))
(set! f30-0 0.0)))
(let ((s2-1 (-> obj length)))
(b! #t cfg-95 :delay (nop!))
(label cfg-19)
@@ -54,6 +54,10 @@
(arg3 pointer)
(arg4 (inline-array adgif-shader))
)
(#when PC_BIG_MEMORY
(*! arg0 SPRITE_MAX_AMOUNT_MULT)
; (*! arg1 SPRITE_MAX_AMOUNT_MULT)
)
(let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
(let* ((v1-3 (/ (+ arg0 63) 64))
(a0-2 (/ (+ arg1 63) 64))
@@ -10,6 +10,8 @@
(define-extern sprite-glow-init-engine (function dma-buffer none))
(define-extern sprite-glow-draw (function dma-buffer none))
(#when PC_BIG_MEMORY (defconstant SPRITE_MAX_AMOUNT_MULT 12))
;; DECOMP BEGINS
(deftype sprite-vec-data-2d (structure)
+16
View File
@@ -145,6 +145,10 @@ the sprite renderer draw 2D or 3D sprites
)
(defmethod new sprite-aux-list ((allocation symbol) (type-to-make type) (size int))
(#when PC_BIG_MEMORY
(*! size SPRITE_MAX_AMOUNT_MULT))
(let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* size 16))))))
(set! (-> v0-0 num-entries) size)
(set! (-> v0-0 entry) 0)
@@ -434,6 +438,12 @@ the sprite renderer draw 2D or 3D sprites
(defmethod new sprite-array-2d ((allocation symbol) (type-to-make type) (group-0-size int) (group-1-size int))
"Allocate a sprite-array for 2d sprites. There are two groups, each can contain the given number."
(#when PC_BIG_MEMORY
(*! group-0-size SPRITE_MAX_AMOUNT_MULT)
; (*! group-1-size SPRITE_MAX_AMOUNT_MULT)
)
(let* ((sprite-count (+ group-0-size group-1-size))
(vec-data-size (* 3 sprite-count)) ;; 3 quadwords of vec-data per sprite
(adgif-data-size (* 5 sprite-count)) ;; 5 quadwords of adgif data per sprite
@@ -458,6 +468,12 @@ the sprite renderer draw 2D or 3D sprites
(defmethod new sprite-array-3d ((allocation symbol) (type-to-make type) (group-0-size int) (group-1-size int))
"Allocate a sprite-array for 3d sprites. There are two groups, each can contain the given number of sprites.
Group 1 size is zero in practice for 3d."
(#when PC_BIG_MEMORY
(*! group-0-size SPRITE_MAX_AMOUNT_MULT)
; (*! group-1-size SPRITE_MAX_AMOUNT_MULT)
)
(let* ((sprite-count (+ group-0-size group-1-size))
(vec-data-size (* 3 sprite-count))
(adgif-data-size (* 5 sprite-count))
+3
View File
@@ -1763,6 +1763,9 @@ into 7 sections, which might explain the weird sizes in the center.
(defmethod is-object-visible? level ((obj level) (arg0 int))
"Is drawable arg0 visible? Note that this will return #f if the visibility data is not loaded."
;; note : pc port added option to show every actor regardless
(with-pc (if (-> *pc-settings* force-actors?) (return #t)))
;; check the vis bits!
(let* (;; lwu v1, 388(a0)
(vis-data (-> obj vis-bits))
+7 -23
View File
@@ -792,17 +792,9 @@
(when (and (>= f30-0 (-> v1-16 start-frame)) (< f30-0 (-> v1-16 end-frame)))
(let ((s3-0 (-> v1-16 message s5-0)))
(when (and s3-0 (nonzero? s3-0))
(let ((s2-0 (new
'stack
'font-context
*font-default-matrix*
20
290
0.0
(font-color default)
(font-flags shadow kerning)
)
)
(let ((s2-0
(new 'stack 'font-context *font-default-matrix* 20 290 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-20 s2-0))
(set! (-> v1-20 width) (the float 465))
@@ -1445,17 +1437,9 @@
(when (and (< (- (-> self clock frame-counter) (-> self subtitle-change-time)) (seconds 2))
(< (mod (- (-> self clock frame-counter) (-> self subtitle-change-time)) 300) 210)
)
(let ((gp-6 (new
'stack
'font-context
*font-default-matrix*
36
60
0.0
(font-color default)
(font-flags shadow kerning)
)
)
(let ((gp-6
(new 'stack 'font-context *font-default-matrix* 36 60 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-121 gp-6))
(set! (-> v1-121 width) (the float 440))
@@ -1610,7 +1594,7 @@
;; WARN: Using new Jak 2 rtype-of
(defbehavior scene-player-init scene-player ((arg0 object) (arg1 symbol) (arg2 string))
"`object` arg can be an `(array scene)`, `pair of scene` or a `scene`"
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(stack-size-set! (-> self main-thread) 1024)
(set! (-> self root) (new 'process 'trsqv))
(case (rtype-of arg0)
@@ -1169,7 +1169,7 @@
(let ((s4-1 (-> self entity))
(s3-0 (-> self level))
)
(process-entity-set! self (the-as entity-actor (-> self mech entity)))
(process-entity-set! self (the-as entity (-> self mech entity)))
(let ((s2-0 (get-process *16k-dead-pool* manipy #x4000)))
(set! (-> self manipy)
(the-as
+8
View File
@@ -13,6 +13,14 @@
(defconstant DPROCESS_STACK_SIZE (#if PC_PORT #x8000 #x3800))
(defconstant PROCESS_STACK_SIZE (#if PC_PORT #x6000 #x1c00))
;; the size of the shared heap used by dynamically sized processes
(#if PC_BIG_MEMORY
(defconstant PROCESS_HEAP_MULT 4) ;; 4x actors
(defconstant PROCESS_HEAP_MULT 1)
)
(defconstant PROCESS_HEAP_SIZE (* PROCESS_HEAP_MULT 1540 1024))
(defconstant PROCESS_HEAP_MAX (* PROCESS_HEAP_MULT 768))
(defconstant *tab-size* (the binteger 8))
(defconstant *gtype-basic-offset* 4)
+1 -1
View File
@@ -2449,7 +2449,7 @@
(when *debug-segment*
(define *debug-dead-pool* (new 'debug 'dead-pool-heap "*debug-dead-pool*" 768 #x100000))
)
(define *nk-dead-pool* (new 'global 'dead-pool-heap "*nk-dead-pool*" 768 #x181000))
(define *nk-dead-pool* (new 'global 'dead-pool-heap "*nk-dead-pool*" PROCESS_HEAP_MAX PROCESS_HEAP_SIZE))
;; more special dead pools
(define *default-dead-pool* (the-as dead-pool *nk-dead-pool*))
(define *pickup-dead-pool* (the-as dead-pool *nk-dead-pool*))
@@ -40,6 +40,21 @@
(hidden 4))
;; ---nav-node-flag-byte
;; +++nav-branch-flags
(defenum nav-branch-flags
:bitfield #t
:type uint8
(nabflags-0)
(nabflags-1)
(nabflags-2)
(nabflags-3)
(nabflags-4)
(nabflags-5)
(nabflags-6)
(nabflags-7)
)
;; ---nav-branch-flags
;; DECOMP BEGINS
(deftype nav-branch (structure)
@@ -54,7 +69,7 @@
(max-user-count uint8 :offset-assert 12)
(user-count uint8 :offset-assert 13)
(width uint8 :offset-assert 14)
(flags uint8 :offset-assert 15)
(flags nav-branch-flags :offset-assert 15)
)
:method-count-assert 21
:size-assert #x10
@@ -68,6 +68,19 @@
(tfs7 7)
)
(defenum traffic-type-flags
:bitfield #t
:type uint8
(trtflags-0)
(trtflags-1)
(trtflags-2)
(trtflags-3)
(trtflags-4)
(trtflags-5)
(trtflags-6)
(trtflags-7)
)
(declare-type traffic-find-segment-struct structure)
@@ -191,7 +204,7 @@
(city-level-info-method-12 (_type_ vector nav-branch vector) vector 12)
(lookup-cell-by-position (_type_ vector) vis-cell 13)
(get-first-cell-in-box (_type_ vis-grid-box) vis-cell 14)
(sphere-in-grid? (_type_ int int) symbol 15)
(sphere-in-grid? (_type_ vector int) symbol 15)
(callback-on-nav-segments-in-sphere (_type_ vector int traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 16)
(update-suppressions-from-traffic-engine (_type_ traffic-engine) none 17)
(city-level-info-method-18 (_type_) none 18)
@@ -318,18 +331,18 @@
(deftype traffic-object-type-info (structure)
((flags uint8 :offset-assert 0)
(target-count int8 :offset-assert 1)
(active-count int8 :offset-assert 2)
(inactive-count int8 :offset-assert 3)
(reserve-count uint16 :offset-assert 4)
(killed-count uint16 :offset-assert 6)
(want-count int8 :offset-assert 8)
(tracker-index uint8 :offset-assert 9)
(parking-spot-prob uint8 :offset-assert 10)
(guard-type uint8 :offset-assert 11)
(array (pointer handle) :offset-assert 12)
(level level :offset-assert 16)
((flags traffic-type-flags :offset-assert 0)
(target-count int8 :offset-assert 1)
(active-count int8 :offset-assert 2)
(inactive-count int8 :offset-assert 3)
(reserve-count uint16 :offset-assert 4)
(killed-count uint16 :offset-assert 6)
(want-count int8 :offset-assert 8)
(tracker-index uint8 :offset-assert 9)
(parking-spot-prob uint8 :offset-assert 10)
(guard-type uint8 :offset-assert 11)
(array (pointer handle) :offset-assert 12)
(level symbol :offset-assert 16)
)
:method-count-assert 9
:size-assert #x14
@@ -423,7 +436,7 @@
(stop-alarm-sound (_type_) none 11)
(debug-unused (_type_) none 12)
(add-object (_type_ traffic-type process) none 13)
(sphere-in-loaded-city-infos? (_type_ int vector) symbol 14)
(sphere-in-loaded-city-infos? (_type_ vector int) symbol 14)
(activate-one-citizen (_type_ nav-segment float) none 15)
(activate-one-vehicle (_type_ nav-segment float) none 16)
(can-dest-be-used? (_type_ nav-branch) symbol 17)
@@ -443,7 +456,7 @@
(decrease-alert-level (_type_ int) none 31)
(set-alert-level (_type_ int) none 32)
(set-max-alert-level (_type_ int) none 33)
(set-alert-duration (_type_ int) none 34)
(set-alert-duration (_type_ time-frame) none 34)
(get-alert-level (_type_) int 35)
(get-target (_type_) target 36)
(set-object-target-level (_type_ int float) none 37)
@@ -470,18 +483,18 @@
(set-object-auto-activate (_type_ int object) none 58)
(debug-check-proc-in-tracker (_type_ process int) none 59)
(kill-traffic-sphere (_type_ sphere) none 60)
(level-loaded (_type_ level) none 61)
(level-killed (_type_ level) none 62)
(level-link (_type_ level) none 61)
(level-unlink (_type_ level) none 62)
(traffic-engine-method-63 (_type_) none 63)
(traffic-engine-method-64 (_type_) none 64)
(handle-new-vis-cell (_type_ vis-cell) none 65)
(update-sync-from-frame-counter (_type_) none 66)
(per-frame-guard-update (_type_) none 67)
(per-frame-activate-deactivate (_type_) none 68)
(per-frame-danger-update (_type_) none 69)
(update-guards (_type_) none 67)
(update-traffic-amount (_type_) none 68)
(update-danger (_type_) none 69)
(update-danger-from-target (_type_) none 70)
(per-frame-alert-update (_type_) none 71)
(per-frame-suppressor-update (_type_) none 72)
(update-alert-state (_type_) none 71)
(update-suppressor (_type_) none 72)
(recompute-supressions (_type_) none 73)
)
)
@@ -584,9 +584,9 @@ Process is recycled and moved to reserved, if it deactivates."
(when (and (> (-> v1-2 inactive-count) 0)
(> (-> v1-2 reserve-count) 0)
(< (-> v1-2 active-count) (-> v1-2 target-count))
(logtest? (-> v1-2 flags) 4)
(logtest? (-> v1-2 flags) 8)
(or (not (logtest? (-> v1-2 flags) 1))
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-2))
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-3))
(or (not (logtest? (-> v1-2 flags) (traffic-type-flags trtflags-0)))
(zero? (logand (-> obj traffic alert-state flags) (traffic-alert-flag alert-ending)))
)
)
@@ -726,7 +726,7 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((v1-4 (-> obj inactive-object-array)))
(dotimes (a0-5 21)
(let ((a1-3 (-> obj object-type-info-array a0-5)))
(set! (-> a1-3 flags) (the-as uint 6))
(set! (-> a1-3 flags) (traffic-type-flags trtflags-1 trtflags-2))
(set! (-> a1-3 inactive-count) 0)
(set! (-> a1-3 active-count) 0)
(set! (-> a1-3 target-count) 20)
@@ -739,7 +739,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(set! (-> obj object-type-info-array 6 guard-type) (the-as uint 0))
(set! (-> obj object-type-info-array 20 level) (the-as level 'ctywide))
(set! (-> obj object-type-info-array 20 level) 'ctywide)
(let ((v1-8 11))
(dotimes (a0-6 10)
(set! (-> obj object-type-info-array v1-8 tracker-index) (the-as uint 0))
@@ -782,7 +782,7 @@ Process is recycled and moved to reserved, if it deactivates."
(dotimes (s5-2 (-> *level* length))
(let ((a1-12 (-> *level* level s5-2)))
(if (= (-> a1-12 status) 'active)
(level-loaded obj a1-12)
(level-link obj a1-12)
)
)
)
@@ -797,7 +797,7 @@ Process is recycled and moved to reserved, if it deactivates."
(none)
)
(defmethod level-loaded traffic-engine ((obj traffic-engine) (arg0 level))
(defmethod level-link traffic-engine ((obj traffic-engine) (arg0 level))
"Call after loading a level to patch the data in the bsp"
(format #t "traffic-engine: level birth ~S~%" (-> arg0 nickname))
(cond
@@ -929,7 +929,7 @@ Process is recycled and moved to reserved, if it deactivates."
(none)
)
(defmethod level-killed traffic-engine ((obj traffic-engine) (arg0 level))
(defmethod level-unlink traffic-engine ((obj traffic-engine) (arg0 level))
"Call after removing a level. Kills processes and unlinks nav"
(let ((s4-0 (-> arg0 bsp city-level-info nav-graph)))
(dotimes (v1-2 2)
@@ -1170,11 +1170,11 @@ Process is recycled and moved to reserved, if it deactivates."
(none)
)
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 int) (arg1 vector))
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 vector) (arg1 int))
(dotimes (s3-0 2)
(let ((v1-3 (-> obj level-data-array s3-0)))
(when (nonzero? (-> v1-3 city-info))
(if (sphere-in-grid? (-> v1-3 city-info) arg0 (the-as int arg1))
(if (sphere-in-grid? (-> v1-3 city-info) arg0 arg1)
(return #t)
)
)
@@ -1185,7 +1185,7 @@ Process is recycled and moved to reserved, if it deactivates."
(defmethod can-dest-be-used? traffic-engine ((obj traffic-engine) (arg0 nav-branch))
(let ((v1-0 (-> arg0 src-node)))
(or (logtest? (-> arg0 flags) 1)
(or (logtest? (-> arg0 flags) (nav-branch-flags nabflags-0))
(logtest? (-> v1-0 flags) (nav-node-flag-byte blocked))
(not (-> arg0 dest-node))
(>= (-> arg0 user-count) (-> arg0 max-user-count))
@@ -1294,44 +1294,44 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((v1-1 (-> obj danger-sphere-array)))
(set! (-> v1-1 0 handle) (process->handle s5-0))
(let ((a0-4 (-> s5-0 focus-status))
(f0-0 0.0)
(f1-0 0.0)
(f3-0 1.0)
(f2-0 0.0)
(notify-radius 0.0)
(danger-radius 0.0)
(decay-rate 1.0)
(danger-level 0.0)
)
(cond
((logtest? (focus-status mech dark shooting) a0-4)
(set! f0-0 245760.0)
(set! f1-0 163840.0)
(set! f2-0 1.0)
(set! f3-0 0.0)
(set! notify-radius 245760.0)
(set! danger-radius 163840.0)
(set! danger-level 1.0)
(set! decay-rate 0.0)
)
((logtest? (focus-status gun) a0-4)
(set! f0-0 102400.0)
(set! f1-0 61440.0)
(set! f2-0 0.5)
(set! f3-0 0.5)
(set! notify-radius 102400.0)
(set! danger-radius 61440.0)
(set! danger-level 0.5)
(set! decay-rate 0.5)
)
((logtest? (focus-status board pilot) a0-4)
(set! f0-0 40960.0)
(set! f1-0 24576.0)
(set! f2-0 0.5)
(set! notify-radius 40960.0)
(set! danger-radius 24576.0)
(set! danger-level 0.5)
)
((logtest? a0-4 (focus-status dangerous))
(set! f0-0 61440.0)
(set! f1-0 40960.0)
(set! f3-0 0.0)
(set! f2-0 0.5)
(set! notify-radius 61440.0)
(set! danger-radius 40960.0)
(set! decay-rate 0.0)
(set! danger-level 0.5)
)
(else
(set! f3-0 1.5)
(set! decay-rate 1.5)
)
)
(set! (-> v1-1 0 decay-rate) (* 0.1 f3-0))
(when (< (-> v1-1 0 danger-level) f2-0)
(set! (-> v1-1 0 danger-level) f2-0)
(set! (-> v1-1 0 sphere r) f1-0)
(set! (-> v1-1 0 notify-radius) f0-0)
(set! (-> v1-1 0 decay-rate) (* 0.1 decay-rate))
(when (< (-> v1-1 0 danger-level) danger-level)
(set! (-> v1-1 0 danger-level) danger-level)
(set! (-> v1-1 0 sphere r) danger-radius)
(set! (-> v1-1 0 notify-radius) notify-radius)
)
)
(let ((f0-1 (-> v1-1 0 sphere r)))
@@ -1456,7 +1456,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(defmethod per-frame-danger-update traffic-engine ((obj traffic-engine))
(defmethod update-danger traffic-engine ((obj traffic-engine))
"see what's dangerous and make people avoid it."
(update-danger-from-target obj)
(dotimes (s5-0 (-> obj danger-sphere-count))
@@ -1564,8 +1564,8 @@ Process is recycled and moved to reserved, if it deactivates."
(none)
)
(defmethod per-frame-activate-deactivate traffic-engine ((obj traffic-engine))
"per-frame activate and deactivate processes."
(defmethod update-traffic-amount traffic-engine ((obj traffic-engine))
"kills inactive traffic and spawns more if needed."
(local-vars (sv-48 int) (sv-64 nav-segment))
(set! (-> obj object-hash object-count) 0)
(let* ((v1-1 (-> obj object-hash))
@@ -1622,7 +1622,7 @@ Process is recycled and moved to reserved, if it deactivates."
(set! (-> s5-0 quad) (-> v1-33 trans quad))
(set! (-> s5-0 w) (-> v1-33 root-prim prim-core world-sphere w))
)
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 0))
(sphere-in-loaded-city-infos? obj s5-0 0)
)
(set! (-> (the-as vehicle s3-0) traffic-hash-id)
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-0))
@@ -1652,7 +1652,7 @@ Process is recycled and moved to reserved, if it deactivates."
(set! (-> s5-0 quad) (-> v1-54 trans quad))
(set! (-> s5-0 w) (-> v1-54 root-prim prim-core world-sphere w))
)
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 1))
(sphere-in-loaded-city-infos? obj s5-0 1)
)
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-1))
)
@@ -1730,7 +1730,7 @@ Process is recycled and moved to reserved, if it deactivates."
(defmethod update-traffic traffic-engine ((obj traffic-engine))
(update-sync-from-frame-counter obj)
(per-frame-suppressor-update obj)
(update-suppressor obj)
(let ((s5-0 (new 'stack-no-clear 'bounding-box)))
(set-vector!
(-> s5-0 min)
@@ -1757,11 +1757,11 @@ Process is recycled and moved to reserved, if it deactivates."
)
(update-grid-for-objects-in-box (-> obj object-hash) 253 (-> s5-0 min) (-> s5-0 max))
)
(per-frame-activate-deactivate obj)
(update-traffic-amount obj)
(set! (-> obj alert-state guard-aim-count) 0)
(per-frame-alert-update obj)
(per-frame-guard-update obj)
(per-frame-danger-update obj)
(update-alert-state obj)
(update-guards obj)
(update-danger obj)
0
(none)
)
@@ -2142,7 +2142,7 @@ Process is recycled and moved to reserved, if it deactivates."
(defmethod traffic-engine-method-49 traffic-engine ((obj traffic-engine) (los vector) (arg2 int) (target-status traffic-target-status))
(local-vars
(guards (pointer crimson-guard))
(guard-dists (pointer float))
(guard-target-dists (pointer float))
(guard-idx int)
(sv-208 int)
(sv-216 float)
@@ -2191,7 +2191,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
(when (update-guard-status-spots target-pos)
(set! guards (new 'stack-no-clear 'array 'crimson-guard 16))
(set! guard-dists (new 'stack-no-clear 'array 'float 16))
(set! guard-target-dists (new 'stack-no-clear 'array 'float 16))
(set! guard-idx 0)
(dotimes (guard-count (the-as int (-> obj vehicle-tracker-array active-object-count)))
(case (-> obj vehicle-tracker-array active-object-type-list guard-count)
@@ -2202,7 +2202,7 @@ Process is recycled and moved to reserved, if it deactivates."
(= (-> (the-as crimson-guard guard) traffic-target-status handle) (-> target-status handle))
)
(set! (-> guards guard-idx) (the-as crimson-guard guard))
(set! (-> guard-dists guard-idx)
(set! (-> guard-target-dists guard-idx)
(vector-vector-distance (-> (the-as crimson-guard guard) root-override2 trans) target-pos)
)
(set! guard-idx (+ guard-idx 1))
@@ -2216,14 +2216,14 @@ Process is recycled and moved to reserved, if it deactivates."
(while a0-35
(set! a0-35 #f)
(dotimes (v1-77 (+ guard-idx -1))
(when (< (-> guard-dists (+ v1-77 1)) (-> guard-dists v1-77))
(when (< (-> guard-target-dists (+ v1-77 1)) (-> guard-target-dists v1-77))
(let ((a0-38 (-> guards v1-77))
(f0-2 (-> guard-dists v1-77))
(f0-2 (-> guard-target-dists v1-77))
)
(set! (-> guards v1-77) (-> guards (+ v1-77 1)))
(set! (-> guards (+ v1-77 1)) a0-38)
(set! (-> guard-dists v1-77) (-> guard-dists (+ v1-77 1)))
(set! (-> guard-dists (+ v1-77 1)) f0-2)
(set! (-> guard-target-dists v1-77) (-> guard-target-dists (+ v1-77 1)))
(set! (-> guard-target-dists (+ v1-77 1)) f0-2)
)
(set! a0-35 #t)
)
@@ -2285,7 +2285,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 int))
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 time-frame))
(set! (-> obj alert-state duration) (the-as uint arg0))
0
(none)
@@ -2599,7 +2599,7 @@ Process is recycled and moved to reserved, if it deactivates."
(-> obj alert-state guard-type-info-array arg0 change-to-type)
)
(defmethod per-frame-guard-update traffic-engine ((obj traffic-engine))
(defmethod update-guards traffic-engine ((obj traffic-engine))
(dotimes (v1-0 6)
(set! (-> obj alert-state guard-type-info-array v1-0 count) 0)
)
@@ -2730,7 +2730,7 @@ Process is recycled and moved to reserved, if it deactivates."
(none)
)
(defmethod per-frame-alert-update traffic-engine ((obj traffic-engine))
(defmethod update-alert-state traffic-engine ((obj traffic-engine))
(with-pp
(if (and (logtest? (-> obj alert-state flags) (traffic-alert-flag target-jak)) *target*)
(set! (-> obj alert-state target-status-array 0 handle) (process->handle *target*))
@@ -2893,7 +2893,7 @@ Process is recycled and moved to reserved, if it deactivates."
*target*
)
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
(if (logtest? (-> arg1 flags) 1)
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
(send-event arg0 'alert-begin *target*)
)
(none)
@@ -2903,7 +2903,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
(else
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
(if (logtest? (-> arg1 flags) 1)
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
(send-event arg0 'alert-end)
)
(none)
@@ -2930,54 +2930,56 @@ Process is recycled and moved to reserved, if it deactivates."
(logclear! (-> v1-6 0 flags) (traffic-target-flag force-visible))
)
(set-target-level obj 1.0)
(set-alert-duration obj 9000)
(set-alert-duration obj (seconds 30))
(set-max-alert-level obj 4)
(let ((v1-13 42))
(dotimes (a0-7 21)
(let ((a1-6 (-> obj object-type-info-array a0-7)))
(set! (-> a1-6 flags) (the-as uint 6))
(set! (-> a1-6 flags) (traffic-type-flags trtflags-1 trtflags-2))
(set! (-> a1-6 reserve-count) (the-as uint (max 1000 (min #xfde8 (* 1000 (-> a1-6 want-count))))))
(set! (-> a1-6 killed-count) (the-as uint 0))
(set! (-> a1-6 parking-spot-prob)
(the-as uint (if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) 1)))
v1-13
0
)
)
(the-as
uint
(if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) (traffic-type-flags trtflags-0))))
v1-13
0
)
)
)
)
)
)
(let ((v1-16 (-> obj object-type-info-array 6)))
(logior! (-> v1-16 flags) 1)
(logior! (-> v1-16 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-17 (-> obj object-type-info-array 7)))
(logior! (-> v1-17 flags) 1)
(logior! (-> v1-17 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-18 (-> obj object-type-info-array 18)))
(logior! (-> v1-18 flags) 1)
(logior! (-> v1-18 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-19 (-> obj object-type-info-array 19)))
(logior! (-> v1-19 flags) 1)
(logior! (-> v1-19 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-20 (-> obj object-type-info-array 20)))
(logior! (-> v1-20 flags) 1)
(logior! (-> v1-20 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-21 (-> obj object-type-info-array 5)))
(set! (-> v1-21 target-count) 0)
(set! (-> v1-21 flags) (logand -7 (-> v1-21 flags)))
(logclear! (-> v1-21 flags) (traffic-type-flags trtflags-1 trtflags-2))
)
(let ((v1-22 (-> obj object-type-info-array 3)))
(set! (-> v1-22 target-count) 0)
(set! (-> v1-22 flags) (logand -5 (-> v1-22 flags)))
(logclear! (-> v1-22 flags) (traffic-type-flags trtflags-2))
)
(let ((v1-23 (-> obj object-type-info-array 4)))
(set! (-> v1-23 target-count) 0)
(set! (-> v1-23 flags) (logand -5 (-> v1-23 flags)))
(logclear! (-> v1-23 flags) (traffic-type-flags trtflags-2))
)
(let ((v1-24 (-> obj object-type-info-array 17)))
(set! (-> v1-24 target-count) 0)
(set! (-> v1-24 flags) (logand -7 (-> v1-24 flags)))
(logclear! (-> v1-24 flags) (traffic-type-flags trtflags-1 trtflags-2))
)
(dotimes (v1-25 6)
(let ((a0-28 (-> obj alert-state guard-type-info-array v1-25)))
@@ -3041,8 +3043,8 @@ Process is recycled and moved to reserved, if it deactivates."
(defmethod set-object-auto-activate traffic-engine ((obj traffic-engine) (arg0 int) (arg1 object))
(let ((v1-2 (-> obj object-type-info-array arg0)))
(if arg1
(logior! (-> v1-2 flags) 4)
(set! (-> v1-2 flags) (logand -5 (-> v1-2 flags)))
(logior! (-> v1-2 flags) (traffic-type-flags trtflags-2))
(logclear! (-> v1-2 flags) (traffic-type-flags trtflags-2))
)
)
0
@@ -3105,7 +3107,9 @@ Process is recycled and moved to reserved, if it deactivates."
)
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((s2-0 (-> obj object-type-info-array s5-0)))
(when (and (logtest? (-> s2-0 flags) 8) (= (level-status *level* (the-as symbol (-> s2-0 level))) 'active))
(when (and (logtest? (-> s2-0 flags) (traffic-type-flags trtflags-3))
(= (level-status *level* (-> s2-0 level)) 'active)
)
(+! s3-0 (-> s2-0 parking-spot-prob))
(b! (>= (the-as uint s3-0) (the-as uint s4-0)) cfg-10)
)
@@ -3150,7 +3154,7 @@ Process is recycled and moved to reserved, if it deactivates."
(none)
)
(defmethod per-frame-suppressor-update traffic-engine ((obj traffic-engine))
(defmethod update-suppressor traffic-engine ((obj traffic-engine))
(let ((v1-3 (- (-> *display* game-clock frame-counter) (-> *display* game-clock old-frame-counter))))
(dotimes (a1-3 16)
(let ((a2-2 (-> obj suppressor array a1-3)))
@@ -3207,12 +3211,12 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 int) (arg1 int))
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 vector) (arg1 int))
(let ((gp-0 #f))
(let ((s3-0 (new 'stack-no-clear 'vis-grid-box))
(s2-0 (new 'stack-no-clear 'vis-grid-box))
)
(lookup-box-for-sphere (-> obj grid-info) s2-0 (the-as vector arg0))
(lookup-box-for-sphere (-> obj grid-info) s2-0 arg0)
(set! (-> s3-0 min y) (-> s2-0 min y))
(let ((v1-6 (+ (- 1 (-> s2-0 min y)) (-> s2-0 max y))))
(b! #t cfg-13 :delay (nop!))
@@ -13,7 +13,7 @@
(deftype traffic-manager (process)
((traffic-engine traffic-engine :offset-assert 128)
(fast-spawn basic :offset-assert 132)
(fast-spawn symbol :offset-assert 132)
(dark-guard-ratio int32 :offset-assert 136)
(spawn-params traffic-object-spawn-params :inline :offset-assert 144)
)
@@ -24,12 +24,12 @@
(:methods
(idle () _type_ :state 14)
(active () _type_ :state 15)
(traffic-manager-method-16 (_type_) none 16)
(update (_type_) none 16)
(spawn-all (_type_) none 17)
(traffic-manager-method-18 (_type_) none 18)
(kill-all (_type_) none 19)
(traffic-manager-method-20 (_type_) none 20)
(traffic-manager-method-21 (_type_) none 21)
(kill-excess-once (_type_) none 18)
(kill-all-inactive (_type_) none 19)
(reset-and-init (_type_) none 20)
(init-params (_type_) none 21)
)
)
@@ -54,9 +54,9 @@
(none)
)
(defmethod traffic-manager-method-16 traffic-manager ((obj traffic-manager))
(defmethod update traffic-manager ((obj traffic-manager))
(update-traffic (-> obj traffic-engine))
(traffic-manager-method-18 obj)
(kill-excess-once obj)
(spawn-all obj)
(if *debug-segment*
(debug-unused (-> obj traffic-engine))
@@ -75,16 +75,16 @@
(none)
)
(defmethod traffic-manager-method-18 traffic-manager ((obj traffic-manager))
(let ((s5-0 0))
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((v1-2 (-> obj traffic-engine object-type-info-array s5-0)))
(when (logtest? (-> v1-2 flags) 2)
(let ((a0-5 (+ (-> v1-2 active-count) (-> v1-2 inactive-count))))
(when (< (-> v1-2 want-count) a0-5)
(defmethod kill-excess-once traffic-manager ((obj traffic-manager))
(let ((type-i 0))
(while (< (the-as uint type-i) (the-as uint 21))
(let ((traffic (-> obj traffic-engine object-type-info-array type-i)))
(when (logtest? (-> traffic flags) (traffic-type-flags trtflags-1))
(let ((total-count (+ (-> traffic active-count) (-> traffic inactive-count))))
(when (< (-> traffic want-count) total-count)
(let ((a0-10 (handle->process (get-from-inactive-by-type
(-> obj traffic-engine tracker-array (-> v1-2 tracker-index))
(the-as traffic-type s5-0)
(-> obj traffic-engine tracker-array (-> traffic tracker-index))
(the-as traffic-type type-i)
)
)
)
@@ -97,14 +97,14 @@
)
)
)
(+! s5-0 1)
(+! type-i 1)
)
)
0
(none)
)
(defmethod kill-all traffic-manager ((obj traffic-manager))
(defmethod kill-all-inactive traffic-manager ((obj traffic-manager))
(let ((s5-0 0))
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
@@ -134,9 +134,9 @@
(b! #t cfg-4 :delay (nop!))
(label cfg-1)
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
(set! (-> s4-0 flags) (logand -9 (-> s4-0 flags)))
(if (= (level-status *level* (the-as symbol (-> s4-0 level))) 'active)
(logior! (-> s4-0 flags) 8)
(logclear! (-> s4-0 flags) (traffic-type-flags trtflags-3))
(if (= (level-status *level* (-> s4-0 level)) 'active)
(logior! (-> s4-0 flags) (traffic-type-flags trtflags-3))
)
)
(+! s5-0 1)
@@ -159,7 +159,11 @@
(let ((s0-0 (-> obj traffic-engine object-type-info-array s1-0)))
(let ((v1-21 (+ (-> s0-0 active-count) (-> s0-0 inactive-count))))
(b!
(not (and (logtest? (-> s0-0 flags) 2) (logtest? (-> s0-0 flags) 8) (< v1-21 (-> s0-0 want-count))))
(not (and (logtest? (-> s0-0 flags) (traffic-type-flags trtflags-1))
(logtest? (-> s0-0 flags) (traffic-type-flags trtflags-3))
(< v1-21 (-> s0-0 want-count))
)
)
cfg-29
:delay (nop!)
)
@@ -356,7 +360,7 @@
)
)
(defmethod traffic-manager-method-20 traffic-manager ((obj traffic-manager))
(defmethod reset-and-init traffic-manager ((obj traffic-manager))
(set! (-> obj traffic-engine) *traffic-engine*)
(reset-and-init-from-manager (-> obj traffic-engine) obj)
(restore-city-speeches)
@@ -383,54 +387,54 @@
(none)
)
(defmethod traffic-manager-method-21 traffic-manager ((obj traffic-manager))
(let ((s5-0 (new 'stack-no-clear 'array 'int8 21)))
(set! (-> s5-0 11) 8)
(set! (-> s5-0 12) 8)
(set! (-> s5-0 13) 8)
(set! (-> s5-0 14) 7)
(set! (-> s5-0 15) 7)
(set! (-> s5-0 16) 7)
(set! (-> s5-0 18) 4)
(set! (-> s5-0 19) 3)
(set! (-> s5-0 20) 0)
(set! (-> s5-0 0) 15)
(set! (-> s5-0 1) 15)
(set! (-> s5-0 2) 14)
(set! (-> s5-0 3) 1)
(set! (-> s5-0 4) 1)
(set! (-> s5-0 6) 9)
(set! (-> s5-0 7) 0)
(set! (-> s5-0 8) 14)
(set! (-> s5-0 9) 14)
(set! (-> s5-0 10) 14)
(set! (-> obj fast-spawn) (the-as basic *traffic-fast-spawn*))
(traffic-manager-method-20 obj)
(defmethod init-params traffic-manager ((obj traffic-manager))
(let ((traffic-want-counts (new 'stack-no-clear 'array 'int8 21)))
(set! (-> traffic-want-counts 11) 8)
(set! (-> traffic-want-counts 12) 8)
(set! (-> traffic-want-counts 13) 8)
(set! (-> traffic-want-counts 14) 7)
(set! (-> traffic-want-counts 15) 7)
(set! (-> traffic-want-counts 16) 7)
(set! (-> traffic-want-counts 18) 4)
(set! (-> traffic-want-counts 19) 3)
(set! (-> traffic-want-counts 20) 0)
(set! (-> traffic-want-counts 0) 15)
(set! (-> traffic-want-counts 1) 15)
(set! (-> traffic-want-counts 2) 14)
(set! (-> traffic-want-counts 3) 1)
(set! (-> traffic-want-counts 4) 1)
(set! (-> traffic-want-counts 6) 9)
(set! (-> traffic-want-counts 7) 0)
(set! (-> traffic-want-counts 8) 14)
(set! (-> traffic-want-counts 9) 14)
(set! (-> traffic-want-counts 10) 14)
(set! (-> obj fast-spawn) *traffic-fast-spawn*)
(reset-and-init obj)
(let ((v1-20 (-> obj traffic-engine)))
(dotimes (a0-2 21)
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> s5-0 a0-2))
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> traffic-want-counts a0-2))
)
)
)
(let ((s5-1 (-> obj spawn-params)))
(set! (-> s5-1 object-type) (traffic-type crimson-guard-1))
(set! (-> s5-1 behavior) (the-as uint 1))
(set! (-> s5-1 id) (the-as uint 0))
(set! (-> s5-1 nav-mesh) #f)
(set! (-> s5-1 nav-branch) #f)
(set! (-> s5-1 proc) #f)
(set! (-> s5-1 handle) (the-as handle #f))
(set! (-> s5-1 user-data) (the-as uint 0))
(set! (-> s5-1 flags) (the-as uint 2))
(set! (-> s5-1 guard-type) (the-as uint 7))
(vector-reset! (-> s5-1 velocity))
(vector-reset! (-> s5-1 position))
(let ((params (-> obj spawn-params)))
(set! (-> params object-type) (traffic-type crimson-guard-1))
(set! (-> params behavior) (the-as uint 1))
(set! (-> params id) (the-as uint 0))
(set! (-> params nav-mesh) #f)
(set! (-> params nav-branch) #f)
(set! (-> params proc) #f)
(set! (-> params handle) (the-as handle #f))
(set! (-> params user-data) (the-as uint 0))
(set! (-> params flags) (the-as uint 2))
(set! (-> params guard-type) (the-as uint 7))
(vector-reset! (-> params velocity))
(vector-reset! (-> params position))
(forward-up-nopitch->quaternion
(-> s5-1 rotation)
(-> params rotation)
(new 'static 'vector :z 1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(set! (-> s5-1 id) (the-as uint 1))
(set! (-> params id) (the-as uint 1))
)
(set! (-> obj dark-guard-ratio) (if (task-node-closed? (game-task-node tomb-boss-resolution))
5
@@ -476,7 +480,7 @@
)
(('set-alert-duration)
(let ((a1-8 (-> arg3 param 0)))
(set-alert-duration (-> self traffic-engine) (the-as int a1-8))
(set-alert-duration (-> self traffic-engine) (the-as time-frame a1-8))
)
)
(('deactivate-all)
@@ -613,12 +617,12 @@
)
(('level-loaded)
(let ((a1-29 (-> arg3 param 0)))
(level-loaded (-> self traffic-engine) (the-as level a1-29))
(level-link (-> self traffic-engine) (the-as level a1-29))
)
)
(('level-killed)
(let ((s5-1 (the-as object (-> arg3 param 0))))
(level-killed (-> self traffic-engine) (the-as level s5-1))
(level-unlink (-> self traffic-engine) (the-as level s5-1))
(format #t "traffic-manager : level killed ~S~%" (-> (the-as level s5-1) nickname))
)
)
@@ -632,11 +636,11 @@
(('kill-all)
(format #t "traffic-manager::kill-all~%")
(deactivate-all (-> self traffic-engine))
(kill-all self)
(kill-all-inactive self)
)
(('spawn-all)
(format #t "traffic-manager::spawn-all~%")
(set! (-> self fast-spawn) (the-as basic #t))
(set! (-> self fast-spawn) #t)
(spawn-all self)
)
(('set-density-factor)
@@ -672,7 +676,7 @@
(defbehavior traffic-manager-init-by-other traffic-manager ()
(stack-size-set! (-> self main-thread) 128)
(ctywide-entity-hack)
(traffic-manager-method-21 self)
(init-params self)
(add-setting! 'task-mask 'clear 0 #x4000)
(set! (-> self event-hook) traffic-manager-event-handler)
(rigid-body-queue-manager-spawn *traffic-rigid-body-queue* self)
@@ -713,7 +717,7 @@
:event traffic-manager-event-handler
:code (the-as (function none :behavior traffic-manager) sleep-code)
:post (behavior ()
(traffic-manager-method-16 self)
(update self)
(none)
)
)
@@ -763,54 +767,54 @@
(when gp-0
(case (-> arg0 name)
(('lwidea)
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 1 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 2 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 0 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 1 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 2 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 3 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 4 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 5 level) #f)
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 6 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 7 level) #f)
(set! (-> gp-0 object-type-info-array 8 level) #f)
(set! (-> gp-0 object-type-info-array 9 level) #f)
(set! (-> gp-0 object-type-info-array 10 level) #f)
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 12 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 13 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 15 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 16 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 11 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 12 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 13 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 14 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 15 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 16 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 17 level) #f)
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 19 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 18 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 19 level) 'lwidea)
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
(set! *traffic-alert-level-force* #f)
)
(('lwideb)
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 0 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 1 level) #f)
(set! (-> gp-0 object-type-info-array 2 level) #f)
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 3 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 4 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 5 level) #f)
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 6 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 7 level) #f)
(set! (-> gp-0 object-type-info-array 8 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 9 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 10 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 8 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 9 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 10 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 11 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 12 level) #f)
(set! (-> gp-0 object-type-info-array 13 level) #f)
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 14 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 15 level) #f)
(set! (-> gp-0 object-type-info-array 16 level) #f)
(set! (-> gp-0 object-type-info-array 17 level) #f)
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 18 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 19 level) #f)
(logclear! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
(set-alert-level gp-0 3)
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag guard-multi-focus))
(set-alert-duration gp-0 #x6c258c00)
(set-alert-duration gp-0 (seconds 6048000))
(set! *traffic-alert-level-force* #t)
)
)
@@ -821,14 +825,14 @@
)
(defun lwide-deactivate ()
(set! *lwide-entity* (the-as object #f))
(set! *lwide-entity* #f)
(send-event *traffic-manager* 'kill-all)
0
(none)
)
(defun ctywide-deactivate ()
(set! *ctywide-entity* (the-as object #f))
(set! *ctywide-entity* #f)
(set! *traffic-engine* #f)
(set! *trail-graph* #f)
(init *city-dead-pool* 'loading-level 0)
@@ -847,7 +851,7 @@
)
)
(else
(process-entity-set! pp (the-as entity-actor *ctywide-entity*))
(process-entity-set! pp *ctywide-entity*)
)
)
0
@@ -857,7 +861,7 @@
(defun lwide-entity-hack ()
(with-pp
(process-entity-set! pp (the-as entity-actor *lwide-entity*))
(process-entity-set! pp *lwide-entity*)
0
(none)
)
+3 -11
View File
@@ -523,16 +523,8 @@
(return (the-as object (-> self selected)))
)
)
(set! sv-112 (new
'stack
'font-context
*font-default-matrix*
64
312
0.0
(font-color default)
(font-flags shadow kerning)
)
(set! sv-112
(new 'stack 'font-context *font-default-matrix* 64 312 0.0 (font-color default) (font-flags shadow kerning))
)
(let ((v1-25 sv-112))
(set! (-> v1-25 width) (the float 384))
@@ -1036,7 +1028,7 @@
)
)
)
(process-entity-set! self (the-as entity-actor a1-2))
(process-entity-set! self a1-2)
)
(set-setting! 'allow-pause #f 0 0)
(set-setting! 'allow-progress #f 0 0)
+1 -1
View File
@@ -183,7 +183,7 @@
;; WARN: Return type mismatch object vs none.
(defbehavior canyon-lightning-thingy-init-by-other canyon-lightning-thingy ((arg0 vector) (arg1 vector))
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg0 quad))
(let ((a2-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)))
+4 -11
View File
@@ -498,6 +498,7 @@
)
)
;; WARN: Return type mismatch int vs object.
;; WARN: new jak 2 until loop case, check carefully
(defbehavior title-menu title-control ()
(local-vars (sv-112 font-context))
@@ -528,16 +529,8 @@
)
)
(when (< (mod (-> self clock frame-counter) 300) 210)
(set! sv-112 (new
'stack
'font-context
*font-default-matrix*
64
312
0.0
(font-color default)
(font-flags shadow kerning)
)
(set! sv-112
(new 'stack 'font-context *font-default-matrix* 64 312 0.0 (font-color default) (font-flags shadow kerning))
)
(let ((v1-35 sv-112))
(set! (-> v1-35 width) (the float 384))
@@ -922,7 +915,7 @@
)
)
)
(process-entity-set! self (the-as entity-actor a1-2))
(process-entity-set! self a1-2)
)
(set-setting! 'allow-pause #f 0 0)
(set-setting! 'allow-progress #f 0 0)
+18 -7
View File
@@ -27,6 +27,13 @@
,inc #t ,min ,max 1)
)
(defun dm-int-var-func ((var symbol) (msg debug-menu-msg) (val int) (undo-val int))
(when (= msg (debug-menu-msg press))
(set! (-> var value) val)
)
(-> var value)
)
;; (defun dm-want-level-toggle-pick-func ((arg0 pair) (arg1 debug-menu-msg))
;; (let* ((levname (the-as symbol (car arg0)))
;; (info (the-as level-load-info (-> levname value)))
@@ -755,13 +762,13 @@
(flag "Discord RPC" #t ,(dm-lambda-boolean-flag (-> *pc-settings* discord-rpc?)))
(flag "Jetboard Trick String" #t ,(dm-lambda-boolean-flag (-> *pc-settings* jetboard-trick-text?)))
;; (flag "Speedrunner Mode" #t ,(dm-lambda-boolean-flag (-> *pc-settings* speedrunner-mode?)))
;; (menu "PS2 settings"
;; ;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?)))
;; (flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?)))
;; ;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?)))
;; ;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?)))
;; ;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?)))
;; )
(menu "PS2 settings"
;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?)))
(flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?)))
;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?)))
;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?)))
;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?)))
)
(menu "Level of detail"
(flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?)))
;(flag "Force Envmap" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-envmap?)))
@@ -827,6 +834,10 @@
;; (flag "Text boxes" #f ,(dm-lambda-boolean-flag (-> *pc-settings* display-text-box)))
(float-var "Actor birth dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1)
(float-var "Actor pause dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1)
(flag "Display city info" *display-city-info* dm-boolean-toggle-pick-func)
(int-var "City info x" *city-info-x* dm-int-var-func 10 1 #t 0 255 1)
(int-var "City info y" *city-info-y* dm-int-var-func 10 1 #t 0 255 1)
(int-var "City info z" *city-info-z* dm-int-var-func 10 1 #t 0 255 1)
;; (menu "Mood override"
;; (function "-- SIMPLE OVERRIDE" #f nothing)
;; (flag "Palette 0" 0 dm-mood-override-palette-pick-func)
@@ -56,4 +56,9 @@
(define *region-debug-inspect* (the drawable-region-prim #f))
(define *display-region-inside* #f)
(define *display-city-info* #f)
(define *city-info-x* 0)
(define *city-info-y* 0)
(define *city-info-z* 0)
+1
View File
@@ -22,6 +22,7 @@
;; The Jak 2 version of the pc-settings object.
(deftype pc-settings-jak2 (pc-settings)
(
;; debug
(jetboard-trick-text? symbol) ;; enable rendering jetboard trick combo during minigame
)
)
+1 -1
View File
@@ -1257,7 +1257,7 @@
(defbehavior enemy-init-by-other enemy ((arg0 process-drawable) (arg1 transformq))
(let ((a1-1 (-> arg1 scale x)))
(if a1-1
(process-entity-set! self (the-as entity-actor a1-1))
(process-entity-set! self (the-as entity a1-1))
)
)
(if (-> arg1 scale y)
+4 -4
View File
@@ -4,11 +4,11 @@
;; definition for symbol *traffic-manager*, type process
(define *traffic-manager* (the-as process #f))
;; definition for symbol *ctywide-entity*, type object
(define *ctywide-entity* (the-as object #f))
;; definition for symbol *ctywide-entity*, type entity
(define *ctywide-entity* (the-as entity #f))
;; definition for symbol *lwide-entity*, type object
(define *lwide-entity* (the-as object #f))
;; definition for symbol *lwide-entity*, type entity
(define *lwide-entity* (the-as entity #f))
;; definition for symbol *race-vehicle-entity*, type entity-actor
(define *race-vehicle-entity* (the-as entity-actor #f))
+1 -1
View File
@@ -2699,7 +2699,7 @@ This commonly includes things such as:
(logclear! (-> obj flags) (collectable-flag fadeout))
)
(((pickup-type board))
(process-entity-set! obj (the-as entity-actor #f))
(process-entity-set! obj (the-as entity #f))
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-board" (the-as (pointer uint32) #f)))
+1 -1
View File
@@ -496,7 +496,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
(defbehavior projectile-init-by-other projectile ((arg0 projectile-init-by-other-params))
(stack-size-set! (-> self main-thread) 512)
(logclear! (-> self mask) (process-mask actor-pause))
(process-entity-set! self (the-as entity-actor (-> arg0 ent)))
(process-entity-set! self (-> arg0 ent))
(set! (-> self charge-level) (-> arg0 charge))
(set! (-> self options) (-> arg0 options))
(set! (-> self notify-handle) (-> arg0 notify-handle))
+1 -1
View File
@@ -657,7 +657,7 @@ This commonly includes things such as:
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defbehavior judge-init-by-other judge ((arg0 vector) (arg1 uint))
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(set! (-> self score) arg1)
(setup-collision self)
(init self)
+2 -2
View File
@@ -516,8 +516,8 @@
)
;; definition for function process-entity-set!
(defun process-entity-set! ((arg0 process) (arg1 entity-actor))
(set! (-> arg0 entity) arg1)
(defun process-entity-set! ((arg0 process) (arg1 entity))
(set! (-> arg0 entity) (the-as entity-actor arg1))
(if arg1
(set! (-> arg0 level) (-> arg1 extra level))
(set! (-> arg0 level) (-> *level* default-level))
+1 -1
View File
@@ -1906,7 +1906,7 @@
)
)
(if a1-6
(process-entity-set! self (the-as entity-actor a1-6))
(process-entity-set! self a1-6)
)
)
)
+1 -1
View File
@@ -1761,7 +1761,7 @@
;; WARN: Using new Jak 2 rtype-of
(defbehavior scene-player-init scene-player ((arg0 object) (arg1 symbol) (arg2 string))
"`object` arg can be an `(array scene)`, `pair of scene` or a `scene`"
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(stack-size-set! (-> self main-thread) 512)
(set! (-> self root) (new 'process 'trsqv))
(case (rtype-of arg0)
+1 -1
View File
@@ -1171,7 +1171,7 @@
(let ((s4-1 (-> self entity))
(s3-0 (-> self level))
)
(process-entity-set! self (the-as entity-actor (-> self mech entity)))
(process-entity-set! self (the-as entity (-> self mech entity)))
(let ((s2-0 (get-process *16k-dead-pool* manipy #x4000)))
(set! (-> self manipy)
(the-as
+1 -1
View File
@@ -14,7 +14,7 @@
(max-user-count uint8 :offset-assert 12)
(user-count uint8 :offset-assert 13)
(width uint8 :offset-assert 14)
(flags uint8 :offset-assert 15)
(flags nav-branch-flags :offset-assert 15)
)
:method-count-assert 21
:size-assert #x10
+22 -22
View File
@@ -248,7 +248,7 @@
(city-level-info-method-12 (_type_ vector nav-branch vector) vector 12)
(lookup-cell-by-position (_type_ vector) vis-cell 13)
(get-first-cell-in-box (_type_ vis-grid-box) vis-cell 14)
(sphere-in-grid? (_type_ int int) symbol 15)
(sphere-in-grid? (_type_ vector int) symbol 15)
(callback-on-nav-segments-in-sphere (_type_ vector int traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 16)
(update-suppressions-from-traffic-engine (_type_ traffic-engine) none 17)
(city-level-info-method-18 (_type_) none 18)
@@ -561,18 +561,18 @@
;; definition of type traffic-object-type-info
(deftype traffic-object-type-info (structure)
((flags uint8 :offset-assert 0)
(target-count int8 :offset-assert 1)
(active-count int8 :offset-assert 2)
(inactive-count int8 :offset-assert 3)
(reserve-count uint16 :offset-assert 4)
(killed-count uint16 :offset-assert 6)
(want-count int8 :offset-assert 8)
(tracker-index uint8 :offset-assert 9)
(parking-spot-prob uint8 :offset-assert 10)
(guard-type uint8 :offset-assert 11)
(array (pointer handle) :offset-assert 12)
(level level :offset-assert 16)
((flags traffic-type-flags :offset-assert 0)
(target-count int8 :offset-assert 1)
(active-count int8 :offset-assert 2)
(inactive-count int8 :offset-assert 3)
(reserve-count uint16 :offset-assert 4)
(killed-count uint16 :offset-assert 6)
(want-count int8 :offset-assert 8)
(tracker-index uint8 :offset-assert 9)
(parking-spot-prob uint8 :offset-assert 10)
(guard-type uint8 :offset-assert 11)
(array (pointer handle) :offset-assert 12)
(level symbol :offset-assert 16)
)
:method-count-assert 9
:size-assert #x14
@@ -722,7 +722,7 @@
(stop-alarm-sound (_type_) none 11)
(debug-unused (_type_) none 12)
(add-object (_type_ traffic-type process) none 13)
(sphere-in-loaded-city-infos? (_type_ int vector) symbol 14)
(sphere-in-loaded-city-infos? (_type_ vector int) symbol 14)
(activate-one-citizen (_type_ nav-segment float) none 15)
(activate-one-vehicle (_type_ nav-segment float) none 16)
(can-dest-be-used? (_type_ nav-branch) symbol 17)
@@ -742,7 +742,7 @@
(decrease-alert-level (_type_ int) none 31)
(set-alert-level (_type_ int) none 32)
(set-max-alert-level (_type_ int) none 33)
(set-alert-duration (_type_ int) none 34)
(set-alert-duration (_type_ time-frame) none 34)
(get-alert-level (_type_) int 35)
(get-target (_type_) target 36)
(set-object-target-level (_type_ int float) none 37)
@@ -769,18 +769,18 @@
(set-object-auto-activate (_type_ int object) none 58)
(debug-check-proc-in-tracker (_type_ process int) none 59)
(kill-traffic-sphere (_type_ sphere) none 60)
(level-loaded (_type_ level) none 61)
(level-killed (_type_ level) none 62)
(level-link (_type_ level) none 61)
(level-unlink (_type_ level) none 62)
(traffic-engine-method-63 (_type_) none 63)
(traffic-engine-method-64 (_type_) none 64)
(handle-new-vis-cell (_type_ vis-cell) none 65)
(update-sync-from-frame-counter (_type_) none 66)
(per-frame-guard-update (_type_) none 67)
(per-frame-activate-deactivate (_type_) none 68)
(per-frame-danger-update (_type_) none 69)
(update-guards (_type_) none 67)
(update-traffic-amount (_type_) none 68)
(update-danger (_type_) none 69)
(update-danger-from-target (_type_) none 70)
(per-frame-alert-update (_type_) none 71)
(per-frame-suppressor-update (_type_) none 72)
(update-alert-state (_type_) none 71)
(update-suppressor (_type_) none 72)
(recompute-supressions (_type_) none 73)
)
)
+77 -73
View File
@@ -636,9 +636,9 @@ Process is recycled and moved to reserved, if it deactivates."
(when (and (> (-> v1-2 inactive-count) 0)
(> (-> v1-2 reserve-count) 0)
(< (-> v1-2 active-count) (-> v1-2 target-count))
(logtest? (-> v1-2 flags) 4)
(logtest? (-> v1-2 flags) 8)
(or (not (logtest? (-> v1-2 flags) 1))
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-2))
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-3))
(or (not (logtest? (-> v1-2 flags) (traffic-type-flags trtflags-0)))
(zero? (logand (-> obj traffic alert-state flags) (traffic-alert-flag alert-ending)))
)
)
@@ -789,7 +789,7 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((v1-4 (-> obj inactive-object-array)))
(dotimes (a0-5 21)
(let ((a1-3 (-> obj object-type-info-array a0-5)))
(set! (-> a1-3 flags) (the-as uint 6))
(set! (-> a1-3 flags) (traffic-type-flags trtflags-1 trtflags-2))
(set! (-> a1-3 inactive-count) 0)
(set! (-> a1-3 active-count) 0)
(set! (-> a1-3 target-count) 20)
@@ -802,7 +802,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(set! (-> obj object-type-info-array 6 guard-type) (the-as uint 0))
(set! (-> obj object-type-info-array 20 level) (the-as level 'ctywide))
(set! (-> obj object-type-info-array 20 level) 'ctywide)
(let ((v1-8 11))
(dotimes (a0-6 10)
(set! (-> obj object-type-info-array v1-8 tracker-index) (the-as uint 0))
@@ -845,7 +845,7 @@ Process is recycled and moved to reserved, if it deactivates."
(dotimes (s5-2 (-> *level* length))
(let ((a1-12 (-> *level* level s5-2)))
(if (= (-> a1-12 status) 'active)
(level-loaded obj a1-12)
(level-link obj a1-12)
)
)
)
@@ -864,7 +864,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 61 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod level-loaded traffic-engine ((obj traffic-engine) (arg0 level))
(defmethod level-link traffic-engine ((obj traffic-engine) (arg0 level))
"Call after loading a level to patch the data in the bsp"
(format #t "traffic-engine: level birth ~S~%" (-> arg0 nickname))
(cond
@@ -998,7 +998,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 62 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod level-killed traffic-engine ((obj traffic-engine) (arg0 level))
(defmethod level-unlink traffic-engine ((obj traffic-engine) (arg0 level))
"Call after removing a level. Kills processes and unlinks nav"
(let ((s4-0 (-> arg0 bsp city-level-info nav-graph)))
(dotimes (v1-2 2)
@@ -1257,11 +1257,11 @@ Process is recycled and moved to reserved, if it deactivates."
)
;; definition for method 14 of type traffic-engine
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 int) (arg1 vector))
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 vector) (arg1 int))
(dotimes (s3-0 2)
(let ((v1-3 (-> obj level-data-array s3-0)))
(when (nonzero? (-> v1-3 city-info))
(if (sphere-in-grid? (-> v1-3 city-info) arg0 (the-as int arg1))
(if (sphere-in-grid? (-> v1-3 city-info) arg0 arg1)
(return #t)
)
)
@@ -1273,7 +1273,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 17 of type traffic-engine
(defmethod can-dest-be-used? traffic-engine ((obj traffic-engine) (arg0 nav-branch))
(let ((v1-0 (-> arg0 src-node)))
(or (logtest? (-> arg0 flags) 1)
(or (logtest? (-> arg0 flags) (nav-branch-flags nabflags-0))
(logtest? (-> v1-0 flags) (nav-node-flag-byte blocked))
(not (-> arg0 dest-node))
(>= (-> arg0 user-count) (-> arg0 max-user-count))
@@ -1387,44 +1387,44 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((v1-1 (-> obj danger-sphere-array)))
(set! (-> v1-1 0 handle) (process->handle s5-0))
(let ((a0-4 (-> s5-0 focus-status))
(f0-0 0.0)
(f1-0 0.0)
(f3-0 1.0)
(f2-0 0.0)
(notify-radius 0.0)
(danger-radius 0.0)
(decay-rate 1.0)
(danger-level 0.0)
)
(cond
((logtest? (focus-status mech dark shooting) a0-4)
(set! f0-0 245760.0)
(set! f1-0 163840.0)
(set! f2-0 1.0)
(set! f3-0 0.0)
(set! notify-radius 245760.0)
(set! danger-radius 163840.0)
(set! danger-level 1.0)
(set! decay-rate 0.0)
)
((logtest? (focus-status gun) a0-4)
(set! f0-0 102400.0)
(set! f1-0 61440.0)
(set! f2-0 0.5)
(set! f3-0 0.5)
(set! notify-radius 102400.0)
(set! danger-radius 61440.0)
(set! danger-level 0.5)
(set! decay-rate 0.5)
)
((logtest? (focus-status board pilot) a0-4)
(set! f0-0 40960.0)
(set! f1-0 24576.0)
(set! f2-0 0.5)
(set! notify-radius 40960.0)
(set! danger-radius 24576.0)
(set! danger-level 0.5)
)
((logtest? a0-4 (focus-status dangerous))
(set! f0-0 61440.0)
(set! f1-0 40960.0)
(set! f3-0 0.0)
(set! f2-0 0.5)
(set! notify-radius 61440.0)
(set! danger-radius 40960.0)
(set! decay-rate 0.0)
(set! danger-level 0.5)
)
(else
(set! f3-0 1.5)
(set! decay-rate 1.5)
)
)
(set! (-> v1-1 0 decay-rate) (* 0.1 f3-0))
(when (< (-> v1-1 0 danger-level) f2-0)
(set! (-> v1-1 0 danger-level) f2-0)
(set! (-> v1-1 0 sphere r) f1-0)
(set! (-> v1-1 0 notify-radius) f0-0)
(set! (-> v1-1 0 decay-rate) (* 0.1 decay-rate))
(when (< (-> v1-1 0 danger-level) danger-level)
(set! (-> v1-1 0 danger-level) danger-level)
(set! (-> v1-1 0 sphere r) danger-radius)
(set! (-> v1-1 0 notify-radius) notify-radius)
)
)
(let ((f0-1 (-> v1-1 0 sphere r)))
@@ -1552,7 +1552,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 69 of type traffic-engine
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-danger-update traffic-engine ((obj traffic-engine))
(defmethod update-danger traffic-engine ((obj traffic-engine))
"see what's dangerous and make people avoid it."
(update-danger-from-target obj)
(dotimes (s5-0 (-> obj danger-sphere-count))
@@ -1667,8 +1667,8 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 68 of type traffic-engine
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-activate-deactivate traffic-engine ((obj traffic-engine))
"per-frame activate and deactivate processes."
(defmethod update-traffic-amount traffic-engine ((obj traffic-engine))
"kills inactive traffic and spawns more if needed."
(local-vars (sv-48 int) (sv-64 nav-segment))
(set! (-> obj object-hash object-count) 0)
(let* ((v1-1 (-> obj object-hash))
@@ -1725,7 +1725,7 @@ Process is recycled and moved to reserved, if it deactivates."
(set! (-> s5-0 quad) (-> v1-33 trans quad))
(set! (-> s5-0 w) (-> v1-33 root-prim prim-core world-sphere w))
)
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 0))
(sphere-in-loaded-city-infos? obj s5-0 0)
)
(set! (-> (the-as vehicle s3-0) traffic-hash-id)
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-0))
@@ -1755,7 +1755,7 @@ Process is recycled and moved to reserved, if it deactivates."
(set! (-> s5-0 quad) (-> v1-54 trans quad))
(set! (-> s5-0 w) (-> v1-54 root-prim prim-core world-sphere w))
)
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 1))
(sphere-in-loaded-city-infos? obj s5-0 1)
)
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-1))
)
@@ -1835,7 +1835,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; WARN: Return type mismatch int vs none.
(defmethod update-traffic traffic-engine ((obj traffic-engine))
(update-sync-from-frame-counter obj)
(per-frame-suppressor-update obj)
(update-suppressor obj)
(let ((s5-0 (new 'stack-no-clear 'bounding-box)))
(set-vector!
(-> s5-0 min)
@@ -1862,11 +1862,11 @@ Process is recycled and moved to reserved, if it deactivates."
)
(update-grid-for-objects-in-box (-> obj object-hash) 253 (-> s5-0 min) (-> s5-0 max))
)
(per-frame-activate-deactivate obj)
(update-traffic-amount obj)
(set! (-> obj alert-state guard-aim-count) 0)
(per-frame-alert-update obj)
(per-frame-guard-update obj)
(per-frame-danger-update obj)
(update-alert-state obj)
(update-guards obj)
(update-danger obj)
0
(none)
)
@@ -2438,7 +2438,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 34 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 int))
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 time-frame))
(set! (-> obj alert-state duration) (the-as uint arg0))
0
(none)
@@ -2765,7 +2765,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 67 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-guard-update traffic-engine ((obj traffic-engine))
(defmethod update-guards traffic-engine ((obj traffic-engine))
(dotimes (v1-0 6)
(set! (-> obj alert-state guard-type-info-array v1-0 count) 0)
)
@@ -2899,7 +2899,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 71 of type traffic-engine
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-alert-update traffic-engine ((obj traffic-engine))
(defmethod update-alert-state traffic-engine ((obj traffic-engine))
(with-pp
(if (and (logtest? (-> obj alert-state flags) (traffic-alert-flag target-jak)) *target*)
(set! (-> obj alert-state target-status-array 0 handle) (process->handle *target*))
@@ -3064,7 +3064,7 @@ Process is recycled and moved to reserved, if it deactivates."
*target*
)
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
(if (logtest? (-> arg1 flags) 1)
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
(send-event arg0 'alert-begin *target*)
)
(none)
@@ -3074,7 +3074,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
(else
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
(if (logtest? (-> arg1 flags) 1)
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
(send-event arg0 'alert-end)
)
(none)
@@ -3103,54 +3103,56 @@ Process is recycled and moved to reserved, if it deactivates."
(logclear! (-> v1-6 0 flags) (traffic-target-flag force-visible))
)
(set-target-level obj 1.0)
(set-alert-duration obj 9000)
(set-alert-duration obj (seconds 30))
(set-max-alert-level obj 4)
(let ((v1-13 42))
(dotimes (a0-7 21)
(let ((a1-6 (-> obj object-type-info-array a0-7)))
(set! (-> a1-6 flags) (the-as uint 6))
(set! (-> a1-6 flags) (traffic-type-flags trtflags-1 trtflags-2))
(set! (-> a1-6 reserve-count) (the-as uint (max 1000 (min #xfde8 (* 1000 (-> a1-6 want-count))))))
(set! (-> a1-6 killed-count) (the-as uint 0))
(set! (-> a1-6 parking-spot-prob)
(the-as uint (if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) 1)))
v1-13
0
)
)
(the-as
uint
(if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) (traffic-type-flags trtflags-0))))
v1-13
0
)
)
)
)
)
)
(let ((v1-16 (-> obj object-type-info-array 6)))
(logior! (-> v1-16 flags) 1)
(logior! (-> v1-16 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-17 (-> obj object-type-info-array 7)))
(logior! (-> v1-17 flags) 1)
(logior! (-> v1-17 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-18 (-> obj object-type-info-array 18)))
(logior! (-> v1-18 flags) 1)
(logior! (-> v1-18 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-19 (-> obj object-type-info-array 19)))
(logior! (-> v1-19 flags) 1)
(logior! (-> v1-19 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-20 (-> obj object-type-info-array 20)))
(logior! (-> v1-20 flags) 1)
(logior! (-> v1-20 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-21 (-> obj object-type-info-array 5)))
(set! (-> v1-21 target-count) 0)
(set! (-> v1-21 flags) (logand -7 (-> v1-21 flags)))
(logclear! (-> v1-21 flags) (traffic-type-flags trtflags-1 trtflags-2))
)
(let ((v1-22 (-> obj object-type-info-array 3)))
(set! (-> v1-22 target-count) 0)
(set! (-> v1-22 flags) (logand -5 (-> v1-22 flags)))
(logclear! (-> v1-22 flags) (traffic-type-flags trtflags-2))
)
(let ((v1-23 (-> obj object-type-info-array 4)))
(set! (-> v1-23 target-count) 0)
(set! (-> v1-23 flags) (logand -5 (-> v1-23 flags)))
(logclear! (-> v1-23 flags) (traffic-type-flags trtflags-2))
)
(let ((v1-24 (-> obj object-type-info-array 17)))
(set! (-> v1-24 target-count) 0)
(set! (-> v1-24 flags) (logand -7 (-> v1-24 flags)))
(logclear! (-> v1-24 flags) (traffic-type-flags trtflags-1 trtflags-2))
)
(dotimes (v1-25 6)
(let ((a0-28 (-> obj alert-state guard-type-info-array v1-25)))
@@ -3222,8 +3224,8 @@ Process is recycled and moved to reserved, if it deactivates."
(defmethod set-object-auto-activate traffic-engine ((obj traffic-engine) (arg0 int) (arg1 object))
(let ((v1-2 (-> obj object-type-info-array arg0)))
(if arg1
(logior! (-> v1-2 flags) 4)
(set! (-> v1-2 flags) (logand -5 (-> v1-2 flags)))
(logior! (-> v1-2 flags) (traffic-type-flags trtflags-2))
(logclear! (-> v1-2 flags) (traffic-type-flags trtflags-2))
)
)
0
@@ -3299,7 +3301,9 @@ Process is recycled and moved to reserved, if it deactivates."
)
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((s2-0 (-> obj object-type-info-array s5-0)))
(when (and (logtest? (-> s2-0 flags) 8) (= (level-status *level* (the-as symbol (-> s2-0 level))) 'active))
(when (and (logtest? (-> s2-0 flags) (traffic-type-flags trtflags-3))
(= (level-status *level* (-> s2-0 level)) 'active)
)
(+! s3-0 (-> s2-0 parking-spot-prob))
(b! (>= (the-as uint s3-0) (the-as uint s4-0)) cfg-10)
)
@@ -3353,7 +3357,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 72 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-suppressor-update traffic-engine ((obj traffic-engine))
(defmethod update-suppressor traffic-engine ((obj traffic-engine))
(let ((v1-3 (- (-> *display* game-clock frame-counter) (-> *display* game-clock old-frame-counter))))
(dotimes (a1-3 16)
(let ((a2-2 (-> obj suppressor array a1-3)))
@@ -3415,12 +3419,12 @@ Process is recycled and moved to reserved, if it deactivates."
)
;; definition for method 15 of type city-level-info
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 int) (arg1 int))
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 vector) (arg1 int))
(let ((gp-0 #f))
(let ((s3-0 (new 'stack-no-clear 'vis-grid-box))
(s2-0 (new 'stack-no-clear 'vis-grid-box))
)
(lookup-box-for-sphere (-> obj grid-info) s2-0 (the-as vector arg0))
(lookup-box-for-sphere (-> obj grid-info) s2-0 arg0)
(set! (-> s3-0 min y) (-> s2-0 min y))
(let ((v1-6 (+ (- 1 (-> s2-0 min y)) (-> s2-0 max y))))
(b! #t cfg-13 :delay (nop!))
+103 -99
View File
@@ -10,7 +10,7 @@
;; definition of type traffic-manager
(deftype traffic-manager (process)
((traffic-engine traffic-engine :offset-assert 128)
(fast-spawn basic :offset-assert 132)
(fast-spawn symbol :offset-assert 132)
(dark-guard-ratio int32 :offset-assert 136)
(spawn-params traffic-object-spawn-params :inline :offset-assert 144)
)
@@ -21,12 +21,12 @@
(:methods
(idle () _type_ :state 14)
(active () _type_ :state 15)
(traffic-manager-method-16 (_type_) none 16)
(update (_type_) none 16)
(spawn-all (_type_) none 17)
(traffic-manager-method-18 (_type_) none 18)
(kill-all (_type_) none 19)
(traffic-manager-method-20 (_type_) none 20)
(traffic-manager-method-21 (_type_) none 21)
(kill-excess-once (_type_) none 18)
(kill-all-inactive (_type_) none 19)
(reset-and-init (_type_) none 20)
(init-params (_type_) none 21)
)
)
@@ -71,9 +71,9 @@
;; definition for method 16 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-16 traffic-manager ((obj traffic-manager))
(defmethod update traffic-manager ((obj traffic-manager))
(update-traffic (-> obj traffic-engine))
(traffic-manager-method-18 obj)
(kill-excess-once obj)
(spawn-all obj)
(if *debug-segment*
(debug-unused (-> obj traffic-engine))
@@ -94,16 +94,16 @@
;; definition for method 18 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-18 traffic-manager ((obj traffic-manager))
(let ((s5-0 0))
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((v1-2 (-> obj traffic-engine object-type-info-array s5-0)))
(when (logtest? (-> v1-2 flags) 2)
(let ((a0-5 (+ (-> v1-2 active-count) (-> v1-2 inactive-count))))
(when (< (-> v1-2 want-count) a0-5)
(defmethod kill-excess-once traffic-manager ((obj traffic-manager))
(let ((type-i 0))
(while (< (the-as uint type-i) (the-as uint 21))
(let ((traffic (-> obj traffic-engine object-type-info-array type-i)))
(when (logtest? (-> traffic flags) (traffic-type-flags trtflags-1))
(let ((total-count (+ (-> traffic active-count) (-> traffic inactive-count))))
(when (< (-> traffic want-count) total-count)
(let ((a0-10 (handle->process (get-from-inactive-by-type
(-> obj traffic-engine tracker-array (-> v1-2 tracker-index))
(the-as traffic-type s5-0)
(-> obj traffic-engine tracker-array (-> traffic tracker-index))
(the-as traffic-type type-i)
)
)
)
@@ -116,7 +116,7 @@
)
)
)
(+! s5-0 1)
(+! type-i 1)
)
)
0
@@ -125,7 +125,7 @@
;; definition for method 19 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod kill-all traffic-manager ((obj traffic-manager))
(defmethod kill-all-inactive traffic-manager ((obj traffic-manager))
(let ((s5-0 0))
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
@@ -157,9 +157,9 @@
(b! #t cfg-4 :delay (nop!))
(label cfg-1)
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
(set! (-> s4-0 flags) (logand -9 (-> s4-0 flags)))
(if (= (level-status *level* (the-as symbol (-> s4-0 level))) 'active)
(logior! (-> s4-0 flags) 8)
(logclear! (-> s4-0 flags) (traffic-type-flags trtflags-3))
(if (= (level-status *level* (-> s4-0 level)) 'active)
(logior! (-> s4-0 flags) (traffic-type-flags trtflags-3))
)
)
(+! s5-0 1)
@@ -182,7 +182,11 @@
(let ((s0-0 (-> obj traffic-engine object-type-info-array s1-0)))
(let ((v1-21 (+ (-> s0-0 active-count) (-> s0-0 inactive-count))))
(b!
(not (and (logtest? (-> s0-0 flags) 2) (logtest? (-> s0-0 flags) 8) (< v1-21 (-> s0-0 want-count))))
(not (and (logtest? (-> s0-0 flags) (traffic-type-flags trtflags-1))
(logtest? (-> s0-0 flags) (traffic-type-flags trtflags-3))
(< v1-21 (-> s0-0 want-count))
)
)
cfg-29
:delay (nop!)
)
@@ -385,7 +389,7 @@
;; definition for method 20 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-20 traffic-manager ((obj traffic-manager))
(defmethod reset-and-init traffic-manager ((obj traffic-manager))
(set! (-> obj traffic-engine) *traffic-engine*)
(reset-and-init-from-manager (-> obj traffic-engine) obj)
(restore-city-speeches)
@@ -416,54 +420,54 @@
;; definition for method 21 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-21 traffic-manager ((obj traffic-manager))
(let ((s5-0 (new 'stack-no-clear 'array 'int8 21)))
(set! (-> s5-0 11) 8)
(set! (-> s5-0 12) 8)
(set! (-> s5-0 13) 8)
(set! (-> s5-0 14) 7)
(set! (-> s5-0 15) 7)
(set! (-> s5-0 16) 7)
(set! (-> s5-0 18) 4)
(set! (-> s5-0 19) 3)
(set! (-> s5-0 20) 0)
(set! (-> s5-0 0) 15)
(set! (-> s5-0 1) 15)
(set! (-> s5-0 2) 14)
(set! (-> s5-0 3) 1)
(set! (-> s5-0 4) 1)
(set! (-> s5-0 6) 9)
(set! (-> s5-0 7) 0)
(set! (-> s5-0 8) 14)
(set! (-> s5-0 9) 14)
(set! (-> s5-0 10) 14)
(set! (-> obj fast-spawn) (the-as basic *traffic-fast-spawn*))
(traffic-manager-method-20 obj)
(defmethod init-params traffic-manager ((obj traffic-manager))
(let ((traffic-want-counts (new 'stack-no-clear 'array 'int8 21)))
(set! (-> traffic-want-counts 11) 8)
(set! (-> traffic-want-counts 12) 8)
(set! (-> traffic-want-counts 13) 8)
(set! (-> traffic-want-counts 14) 7)
(set! (-> traffic-want-counts 15) 7)
(set! (-> traffic-want-counts 16) 7)
(set! (-> traffic-want-counts 18) 4)
(set! (-> traffic-want-counts 19) 3)
(set! (-> traffic-want-counts 20) 0)
(set! (-> traffic-want-counts 0) 15)
(set! (-> traffic-want-counts 1) 15)
(set! (-> traffic-want-counts 2) 14)
(set! (-> traffic-want-counts 3) 1)
(set! (-> traffic-want-counts 4) 1)
(set! (-> traffic-want-counts 6) 9)
(set! (-> traffic-want-counts 7) 0)
(set! (-> traffic-want-counts 8) 14)
(set! (-> traffic-want-counts 9) 14)
(set! (-> traffic-want-counts 10) 14)
(set! (-> obj fast-spawn) *traffic-fast-spawn*)
(reset-and-init obj)
(let ((v1-20 (-> obj traffic-engine)))
(dotimes (a0-2 21)
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> s5-0 a0-2))
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> traffic-want-counts a0-2))
)
)
)
(let ((s5-1 (-> obj spawn-params)))
(set! (-> s5-1 object-type) (traffic-type crimson-guard-1))
(set! (-> s5-1 behavior) (the-as uint 1))
(set! (-> s5-1 id) (the-as uint 0))
(set! (-> s5-1 nav-mesh) #f)
(set! (-> s5-1 nav-branch) #f)
(set! (-> s5-1 proc) #f)
(set! (-> s5-1 handle) (the-as handle #f))
(set! (-> s5-1 user-data) (the-as uint 0))
(set! (-> s5-1 flags) (the-as uint 2))
(set! (-> s5-1 guard-type) (the-as uint 7))
(vector-reset! (-> s5-1 velocity))
(vector-reset! (-> s5-1 position))
(let ((params (-> obj spawn-params)))
(set! (-> params object-type) (traffic-type crimson-guard-1))
(set! (-> params behavior) (the-as uint 1))
(set! (-> params id) (the-as uint 0))
(set! (-> params nav-mesh) #f)
(set! (-> params nav-branch) #f)
(set! (-> params proc) #f)
(set! (-> params handle) (the-as handle #f))
(set! (-> params user-data) (the-as uint 0))
(set! (-> params flags) (the-as uint 2))
(set! (-> params guard-type) (the-as uint 7))
(vector-reset! (-> params velocity))
(vector-reset! (-> params position))
(forward-up-nopitch->quaternion
(-> s5-1 rotation)
(-> params rotation)
(new 'static 'vector :z 1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(set! (-> s5-1 id) (the-as uint 1))
(set! (-> params id) (the-as uint 1))
)
(set! (-> obj dark-guard-ratio) (if (task-node-closed? (game-task-node tomb-boss-resolution))
5
@@ -510,7 +514,7 @@
)
(('set-alert-duration)
(let ((a1-8 (-> arg3 param 0)))
(set-alert-duration (-> self traffic-engine) (the-as int a1-8))
(set-alert-duration (-> self traffic-engine) (the-as time-frame a1-8))
)
)
(('deactivate-all)
@@ -647,12 +651,12 @@
)
(('level-loaded)
(let ((a1-29 (-> arg3 param 0)))
(level-loaded (-> self traffic-engine) (the-as level a1-29))
(level-link (-> self traffic-engine) (the-as level a1-29))
)
)
(('level-killed)
(let ((s5-1 (the-as object (-> arg3 param 0))))
(level-killed (-> self traffic-engine) (the-as level s5-1))
(level-unlink (-> self traffic-engine) (the-as level s5-1))
(format #t "traffic-manager : level killed ~S~%" (-> (the-as level s5-1) nickname))
)
)
@@ -666,11 +670,11 @@
(('kill-all)
(format #t "traffic-manager::kill-all~%")
(deactivate-all (-> self traffic-engine))
(kill-all self)
(kill-all-inactive self)
)
(('spawn-all)
(format #t "traffic-manager::spawn-all~%")
(set! (-> self fast-spawn) (the-as basic #t))
(set! (-> self fast-spawn) #t)
(spawn-all self)
)
(('set-density-factor)
@@ -707,7 +711,7 @@
(defbehavior traffic-manager-init-by-other traffic-manager ()
(stack-size-set! (-> self main-thread) 128)
(ctywide-entity-hack)
(traffic-manager-method-21 self)
(init-params self)
(add-setting! 'task-mask 'clear 0 #x4000)
(set! (-> self event-hook) traffic-manager-event-handler)
(rigid-body-queue-manager-spawn *traffic-rigid-body-queue* self)
@@ -753,7 +757,7 @@
:event traffic-manager-event-handler
:code (the-as (function none :behavior traffic-manager) sleep-code)
:post (behavior ()
(traffic-manager-method-16 self)
(update self)
(none)
)
)
@@ -812,54 +816,54 @@
(when gp-0
(case (-> arg0 name)
(('lwidea)
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 1 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 2 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 0 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 1 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 2 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 3 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 4 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 5 level) #f)
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 6 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 7 level) #f)
(set! (-> gp-0 object-type-info-array 8 level) #f)
(set! (-> gp-0 object-type-info-array 9 level) #f)
(set! (-> gp-0 object-type-info-array 10 level) #f)
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 12 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 13 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 15 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 16 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 11 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 12 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 13 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 14 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 15 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 16 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 17 level) #f)
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 19 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 18 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 19 level) 'lwidea)
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
(set! *traffic-alert-level-force* #f)
)
(('lwideb)
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 0 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 1 level) #f)
(set! (-> gp-0 object-type-info-array 2 level) #f)
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 3 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 4 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 5 level) #f)
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 6 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 7 level) #f)
(set! (-> gp-0 object-type-info-array 8 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 9 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 10 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 8 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 9 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 10 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 11 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 12 level) #f)
(set! (-> gp-0 object-type-info-array 13 level) #f)
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 14 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 15 level) #f)
(set! (-> gp-0 object-type-info-array 16 level) #f)
(set! (-> gp-0 object-type-info-array 17 level) #f)
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 18 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 19 level) #f)
(logclear! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
(set-alert-level gp-0 3)
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag guard-multi-focus))
(set-alert-duration gp-0 #x6c258c00)
(set-alert-duration gp-0 (seconds 6048000))
(set! *traffic-alert-level-force* #t)
)
)
@@ -872,7 +876,7 @@
;; definition for function lwide-deactivate
;; WARN: Return type mismatch int vs none.
(defun lwide-deactivate ()
(set! *lwide-entity* (the-as object #f))
(set! *lwide-entity* #f)
(send-event *traffic-manager* 'kill-all)
0
(none)
@@ -881,7 +885,7 @@
;; definition for function ctywide-deactivate
;; WARN: Return type mismatch int vs none.
(defun ctywide-deactivate ()
(set! *ctywide-entity* (the-as object #f))
(set! *ctywide-entity* #f)
(set! *traffic-engine* #f)
(set! *trail-graph* #f)
(init *city-dead-pool* 'loading-level 0)
@@ -902,7 +906,7 @@
)
)
(else
(process-entity-set! pp (the-as entity-actor *ctywide-entity*))
(process-entity-set! pp *ctywide-entity*)
)
)
0
@@ -914,7 +918,7 @@
;; WARN: Return type mismatch int vs none.
(defun lwide-entity-hack ()
(with-pp
(process-entity-set! pp (the-as entity-actor *lwide-entity*))
(process-entity-set! pp *lwide-entity*)
0
(none)
)
+1 -1
View File
@@ -1059,7 +1059,7 @@
)
)
)
(process-entity-set! self (the-as entity-actor a1-2))
(process-entity-set! self a1-2)
)
(set-setting! 'allow-pause #f 0 0)
(set-setting! 'allow-progress #f 0 0)
+1 -1
View File
@@ -201,7 +201,7 @@
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defbehavior canyon-lightning-thingy-init-by-other canyon-lightning-thingy ((arg0 vector) (arg1 vector))
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg0 quad))
(let ((a2-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)))
+1 -1
View File
@@ -955,7 +955,7 @@
)
)
)
(process-entity-set! self (the-as entity-actor a1-2))
(process-entity-set! self a1-2)
)
(set-setting! 'allow-pause #f 0 0)
(set-setting! 'allow-progress #f 0 0)