Files
jak-project/goal_src/jak2/engine/game/task/task-control-h.gc

934 lines
28 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: task-control-h.gc
;; name in dgo: task-control-h
;; dgos: ENGINE, GAME
(define-extern task-node-reset (function symbol int))
(define-extern game-task-node->string (function game-task-node string))
(defenum game-task-actor
:bitfield #f
:type uint8
(none 0)
(minimap 1)
(torn-hideout 2)
(torn-alley 3)
(kor-alley 4)
(kor-vinroom 5)
(kor-tomb 6)
(krew-hiphog 7)
(sig-hiphog 8)
(sig-atoll 9)
(keira-garage 10)
(vin-vinroom 11)
(ashelin-atoll 12)
(ashelin-market 13)
(onin-onintent 14)
(pecker-onintent 15)
(baron-palace 16)
(baron-tomb 17)
(youngsamos-hideout 18)
(youngsamos-tomb 19)
(brutter-kiosk 20)
(kid-tomb 21)
(youngsamos-alley 22)
(kid-alley 23)
(crocadog-alley 24)
(crocadog-tomb 25)
(youngsamos-forest 26)
(ashelin-throne 27)
(baron-castle 28)
(tess-alley 29)
(youngsamos-onintent 30)
(samos-hideout 31)
(burning-bush-slumb 32)
(burning-bush-gena 33)
(burning-bush-genc 34)
(tess-hiphog 35)
(keira-stadium 36)
(kor-consite 37)
(kor-onintent 38)
(oracle-oracle 39)
(daxter-tomb 40)
(burning-bush-marka 41)
(burning-bush-sluma 42)
(burning-bush-slumb-2 43)
(burning-bush-slumc 44)
(burning-bush-farma 45)
(burning-bush-farmb 46)
(burning-bush-markb 47)
(burning-bush-markb-2 48)
(burning-bush-gena-2 49)
(burning-bush-genb 50)
(burning-bush-genc-2 51)
(burning-bush-inda 52)
(burning-bush-indb 53)
(burning-bush-port 54)
(burning-bush-port-2 55)
(burning-bush-port-3 56)
(burning-bush-pal 57)
(burning-bush-stadium 58)
(burning-bush-pal-2 59)
(burning-bush-genb-2 60)
(kor-hideout 61)
(kid-hideout 62)
(kid-vinroom 63)
(crocadog-vinroom 64)
(samos-garage 65)
(baron-consite 66)
(whack-a-metal-hiphog 67)
)
(defenum game-task-action
:bitfield #f
:type uint8
(hide 0)
(idle 1)
(say 2)
(talk 3)
(show 4)
(trade 5)
(play 6)
(menu 7)
)
(defenum game-task-flags
:bitfield #t
:type uint8
(gatflag-00)
(gatflag-01)
(gatflag-02)
)
(defenum game-task-icon
:type uint8
(gaticon-00)
(gaticon-01)
(gaticon-02)
(gaticon-03)
(gaticon-04)
(gaticon-05)
(gaticon-06)
(gaticon-07)
(gaticon-08)
(gaticon-09)
(gaticon-10)
(gaticon-11)
(gaticon-12)
(gaticon-13)
(gaticon-14)
(gaticon-15)
(gaticon-16)
(gaticon-17)
(gaticon-18)
(gaticon-19)
(gaticon-20)
(gaticon-21)
(gaticon-22)
(gaticon-23)
(gaticon-24)
(gaticon-25)
(gaticon-26)
(gaticon-27)
(gaticon-28)
(gaticon-29)
(gaticon-30)
(gaticon-31)
(gaticon-32)
(gaticon-33)
(gaticon-34)
(gaticon-35)
(gaticon-36)
(gaticon-37)
(gaticon-38)
(gaticon-39)
(gaticon-40)
(gaticon-41)
(gaticon-42)
(gaticon-43)
(gaticon-44)
(gaticon-45)
(gaticon-46)
(gaticon-47)
(gaticon-48)
(gaticon-49)
(gaticon-50)
(gaticon-51)
(gaticon-52)
(gaticon-53)
(gaticon-54)
(gaticon-55)
(gaticon-56)
(gaticon-57)
(gaticon-58)
(gaticon-59)
(gaticon-60)
(gaticon-61)
(gaticon-62)
(gaticon-63)
(gaticon-64)
(gaticon-65)
(gaticon-66)
(gaticon-67)
(gaticon-68)
(gaticon-69)
)
(defenum task-manager-mask
:type uint32
:bitfield #t
(intro-scene 0) ;; 1
(resolution-scene 1) ;; 2
(begin-sphere 2) ;; 4
(end-sphere 3) ;; 8
(fail-message 4) ;; 16
(retry-message 5) ;; 32
)
(defenum game-task-node-flag
:type uint32 ;; guess
:bitfield #t
(closed 0) ;; 1
(auto-close 1) ;; 2
(data 2) ;; 4
(close-task 3) ;; 8
(save-on-life 4) ;; 16
(save-on-try 5) ;; 32
(abs-task-mask 6) ;; 64
(set-task-mask 7) ;; 128
(clear-task-mask 8) ;; 256
(task-retry 9) ;; 512
(exclusive 10) ;; 1024
(intro-wait 11) ;; 2048
(city-wait 12) ;; 4096
(reset-on-try 13) ;; 8192
(task-manager 14) ;; 16384
(no-fail-on-death 15) ;; 32768
(no-restart 16) ;; 1
(no-audio 17) ;; 2
(no-slow-down 18) ;; #4 high
(utility-node 19) ;; #x8 high
)
(defenum game-task-node-command
:type uint8 ;; guess
:bitfield #f
(none 0)
(add-sidekick 1)
(sub-sidekick 2)
(add-board 3)
(sub-board 4)
(add-gun-red 5)
(add-gun-yellow 6)
(add-gun-blue 7)
(add-gun-dark 8)
(add-gun-up-1 9)
(add-gun-up-2 10)
(add-gun-up-3 11)
(add-gun-up-4 12)
(add-pass-red 13)
(add-pass-green 14)
(add-pass-yellow 15)
(add-pass-blue 16)
(add-darkjak 17)
(add-darkjak-0 18)
(add-darkjak-1 19)
(add-darkjak-2 20)
(add-darkjak-3 21)
(add-board-training 22)
)
;; NOTE - for settings
(define-extern update-task-masks (function symbol int))
;; NOTE - for default-menu
(define-extern task-node-open! (function game-task-node int))
(define-extern task-node-close! (function game-task-node int))
(define-extern task-node-open? (function game-task-node symbol))
(define-extern play-task (function game-task symbol symbol string))
;; NOTE - for progress
(define-extern restart-mission (function int))
(declare-type task-manager process)
(declare-type game-task-node-info basic)
(define-extern task-manager-init-by-other (function game-task-node-info symbol object :behavior task-manager))
(declare-type traffic-engine basic)
;; DECOMP BEGINS
;; og:preserve-this no longer a debug function
(defun game-task->string ((arg0 game-task))
(enum->string game-task arg0)
)
;; WARN: Return type mismatch int vs game-task.
(defun c-string->game-task ((arg0 string))
(the-as game-task (cond
((string= arg0 "GAME_TASK_FOREST_PROTECT")
60
)
((string= arg0 "GAME_TASK_STRIP_DROP")
58
)
((string= arg0 "GAME_TASK_FORTRESS_DUMP")
11
)
((string= arg0 "GAME_TASK_RUINS_TOWER")
9
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_RACE_ERROL")
101
)
((string= arg0 "GAME_TASK_CANYON_INSERT_ITEMS")
48
)
((string= arg0 "GAME_TASK_CITY_WIN")
75
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_5")
85
)
((string= arg0 "GAME_TASK_TOMB_WATER")
50
)
((string= arg0 "GAME_TASK_STADIUM_RACE_CLASS3")
43
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_RING_2")
84
)
((string= arg0 "GAME_TASK_ECO_BLUE_BUTTON")
3
)
((string= arg0 "GAME_TASK_STADIUM_BURNING_BUSH_RACE_CLASS1_R")
109
)
((string= arg0 "GAME_TASK_RUINS_ENEMY")
31
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_SHUTTLE_1")
87
)
((string= arg0 "GAME_TASK_ECO_RED_BUTTON")
5
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_RING_1")
77
)
((string= arg0 "GAME_TASK_CITY_KREW_DELIVERY")
12
)
((string= arg0 "GAME_TASK_STADIUM_BURNING_BUSH_RACE_CLASS3_R")
107
)
((string= arg0 "GAME_TASK_STADIUM_BURNING_BUSH_RACE_CLASS3")
104
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_15")
99
)
((string= arg0 "GAME_TASK_CITY_HELP_KID")
7
)
((string= arg0 "GAME_TASK_UNDER_MECH")
68
)
((string= arg0 "GAME_TASK_CITY_ESCORT_KID")
34
)
((string= arg0 "GAME_TASK_MOUNTAIN_GEAR")
19
)
((string= arg0 "GAME_TASK_MAX")
110
)
((string= arg0 "GAME_TASK_CITY_DEFEND_STADIUM")
70
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_12")
95
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_BOMBBOT_1")
96
)
((string= arg0 "GAME_TASK_DRILL_SHIP")
37
)
((string= arg0 "GAME_TASK_CITY_YELLOW_GUN_TRAINING")
25
)
((string= arg0 "GAME_TASK_SEWER_ENEMY")
15
)
((string= arg0 "GAME_TASK_PALACE_CABLE")
28
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_10")
92
)
((string= arg0 "GAME_TASK_CASTLE_BREAK_IN")
65
)
((string= arg0 "GAME_TASK_TOMB_POLES")
49
)
((string= arg0 "GAME_TASK_CITY_VEHICLE_TRAINING")
8
)
((string= arg0 "GAME_TASK_SEWER_ESCORT")
53
)
((string= arg0 "GAME_TASK_CITY_ERROL_CHALLENGE")
57
)
((string= arg0 "GAME_TASK_STRIP_GRENADE")
36
)
((string= arg0 "GAME_TASK_ATOLL_SIG")
14
)
((string= arg0 "GAME_TASK_STADIUM_BURNING_BUSH_RACE_CLASS1")
106
)
((string= arg0 "GAME_TASK_NEST_BOSS")
74
)
((string= arg0 "GAME_TASK_FOREST_HUNT")
41
)
((string= arg0 "GAME_TASK_STADIUM_RACE_CLASS2")
55
)
((string= arg0 "GAME_TASK_CITY_PLAY_ONIN_GAME")
47
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_COLLECTION_2")
91
)
((string= arg0 "GAME_TASK_NONE")
0
)
((string= arg0 "GAME_TASK_ECO_YELLOW_BUTTON")
4
)
((string= arg0 "GAME_TASK_DRILL_EGGS")
26
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_2")
79
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_RACEPOINT_1")
83
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_11")
93
)
((string= arg0 "GAME_TASK_UNDER_SIG")
69
)
((string= arg0 "GAME_TASK_STADIUM_BURNING_BUSH_RACE_CLASS2")
105
)
((string= arg0 "GAME_TASK_STADIUM_BURNING_BUSH_RACE_BOARD")
103
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_RACE_PORT")
102
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_7")
88
)
((string= arg0 "GAME_TASK_ATOLL_BATTLE")
17
)
((string= arg0 "GAME_TASK_DRILL_MECH")
61
)
((string= arg0 "GAME_TASK_RUINS_MECH")
59
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_13")
97
)
((string= arg0 "GAME_TASK_CITY_DESTROY_GUARD_VEHICLES")
46
)
((string= arg0 "GAME_TASK_TOMB_BOSS")
51
)
((string= arg0 "GAME_TASK_DUMMY0")
2
)
((string= arg0 "GAME_TASK_DIG_FIND_TOTEM")
45
)
((string= arg0 "GAME_TASK_DIG_KNOCK_DOWN")
35
)
((string= arg0 "GAME_TASK_CITY_PROTECT_WATER_SLUMS")
44
)
((string= arg0 "GAME_TASK_CITY_WHACK")
67
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_RING_3")
94
)
((string= arg0 "GAME_TASK_CITY_SHUTTLE")
30
)
((string= arg0 "GAME_TASK_FORTRESS_SAVE_FRIENDS")
52
)
((string= arg0 "GAME_TASK_CITY_INTERCEPT_TANKER")
42
)
((string= arg0 "GAME_TASK_FOREST_SCOUTS")
33
)
((string= arg0 "GAME_TASK_NEST_GET_TO_GUN")
72
)
((string= arg0 "GAME_TASK_STADIUM_RACE_CLASS1")
63
)
((string= arg0 "GAME_TASK_STADIUM_BURNING_BUSH_RACE_CLASS2_R")
108
)
((string= arg0 "GAME_TASK_PALACE_SNEAK_IN")
64
)
((string= arg0 "GAME_TASK_STRIP_RESCUE")
16
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_1")
78
)
((string= arg0 "GAME_TASK_CONSITE_FIND_BARON")
71
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_3")
80
)
((string= arg0 "GAME_TASK_STADIUM_BOARD1")
23
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_4")
81
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_COLLECTION_3")
100
)
((string= arg0 "GAME_TASK_CITY_PORT_RUN")
38
)
((string= arg0 "GAME_TASK_SEWER_BOARD")
40
)
((string= arg0 "GAME_TASK_CITY_DARK_GUN_TRAINING")
54
)
((string= arg0 "GAME_TASK_CITY_ORACLE")
76
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_COLLECTION_1")
82
)
((string= arg0 "GAME_TASK_CITY_KEIRA_DELIVERY")
22
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_6")
86
)
((string= arg0 "GAME_TASK_MOUNTAIN_LENS")
18
)
((string= arg0 "GAME_TASK_ATOLL_WATER")
10
)
((string= arg0 "GAME_TASK_CITY_STOP_BOMB_BOTS")
56
)
((string= arg0 "GAME_TASK_MOUNTAIN_COLLECTION")
21
)
((string= arg0 "GAME_TASK_NEST_ENTER")
73
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_9")
90
)
((string= arg0 "GAME_TASK_MOUNTAIN_SHARD")
20
)
((string= arg0 "GAME_TASK_CITY_POWER")
27
)
((string= arg0 "GAME_TASK_COMPLETE")
1
)
((string= arg0 "GAME_TASK_PALACE_BOSS")
29
)
((string= arg0 "GAME_TASK_CASTLE_BOSS")
66
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_8")
89
)
((string= arg0 "GAME_TASK_CITY_BLUE_GUN_TRAINING")
32
)
((string= arg0 "GAME_TASK_FORTRESS_ESCAPE")
6
)
((string= arg0 "GAME_TASK_CITY_RED_GUN_TRAINING")
13
)
((string= arg0 "GAME_TASK_CITY_SAVE_LURKERS")
62
)
((string= arg0 "GAME_TASK_CITY_KREW_COLLECTION")
24
)
((string= arg0 "GAME_TASK_CITY_BURNING_BUSH_GET_TO_14")
98
)
((string= arg0 "GAME_TASK_CITY_MEET_BRUTTER")
39
)
(else
-1
)
)
)
)
(defun-debug game-task-actor->string ((arg0 game-task-actor))
(enum->string game-task-actor arg0)
)
(defun-debug game-task-action->string ((arg0 game-task-action))
(enum->string game-task-action arg0)
)
(deftype game-task-event (basic)
((actor game-task-actor)
(action game-task-action)
(tex game-task-icon)
(icon uint16 :overlay-at tex)
(flags game-task-flags :offset 7)
(scene basic :offset 8)
(distance meters)
)
)
;; og:preserve-this the decompiler uses these!
(defconstant TASK_MANAGER_INIT_HOOK 0)
(defconstant TASK_MANAGER_CLEANUP_HOOK 1)
(defconstant TASK_MANAGER_UPDATE_HOOK 2)
(defconstant TASK_MANAGER_CODE_HOOK 3)
(defconstant TASK_MANAGER_COMPLETE_HOOK 4)
(defconstant TASK_MANAGER_FAIL_HOOK 5)
(defconstant TASK_MANAGER_EVENT_HOOK 6)
(deftype task-manager-info (structure)
((mask task-manager-mask)
(level symbol)
(manager handle)
(fail-message text-id)
(retry-message text-id)
(intro-scene string)
(resolution-scene string)
(resolution-scene-continue string)
(retry-continue string)
(fail-continue string)
(init-hook (function object))
(cleanup-hook (function object))
(update-hook (function object))
(code-hook (function object))
(complete-hook (function object))
(fail-hook (function object))
(event-hook (function process int symbol event-message-block object))
(hooks function 7 :overlay-at init-hook)
(final-node game-task-node)
(time-limit int32)
(sphere-count int8)
(index int8)
(intro-delay uint16)
(sphere-array uint32)
(on-complete pair)
(on-fail pair)
(begin-sphere sphere :inline)
(end-sphere sphere :inline)
)
)
(defun-debug game-task-node-flag->string ((arg0 game-task-node-flag))
(if (= (logand arg0 (game-task-node-flag clear-task-mask)) (game-task-node-flag clear-task-mask))
(format #t "clear-task-mask ")
)
(if (= (logand arg0 (game-task-node-flag city-wait)) (game-task-node-flag city-wait))
(format #t "city-wait ")
)
(if (= (logand arg0 (game-task-node-flag intro-wait)) (game-task-node-flag intro-wait))
(format #t "intro-wait ")
)
(if (= (logand arg0 (game-task-node-flag task-manager)) (game-task-node-flag task-manager))
(format #t "task-manager ")
)
(if (= (logand arg0 (game-task-node-flag task-retry)) (game-task-node-flag task-retry))
(format #t "task-retry ")
)
(if (= (logand arg0 (game-task-node-flag reset-on-try)) (game-task-node-flag reset-on-try))
(format #t "reset-on-try ")
)
(if (= (logand arg0 (game-task-node-flag exclusive)) (game-task-node-flag exclusive))
(format #t "exclusive ")
)
(if (= (logand (game-task-node-flag utility-node) arg0) (game-task-node-flag utility-node))
(format #t "utility-node ")
)
(if (= (logand arg0 (game-task-node-flag set-task-mask)) (game-task-node-flag set-task-mask))
(format #t "set-task-mask ")
)
(if (= (logand arg0 (game-task-node-flag closed)) (game-task-node-flag closed))
(format #t "closed ")
)
(if (= (logand arg0 (game-task-node-flag no-fail-on-death)) (game-task-node-flag no-fail-on-death))
(format #t "no-fail-on-death ")
)
(if (= (logand arg0 (game-task-node-flag data)) (game-task-node-flag data))
(format #t "data ")
)
(if (= (logand arg0 (game-task-node-flag save-on-life)) (game-task-node-flag save-on-life))
(format #t "save-on-life ")
)
(if (= (logand arg0 (game-task-node-flag close-task)) (game-task-node-flag close-task))
(format #t "close-task ")
)
(if (= (logand arg0 (game-task-node-flag save-on-try)) (game-task-node-flag save-on-try))
(format #t "save-on-try ")
)
(if (= (logand arg0 (game-task-node-flag auto-close)) (game-task-node-flag auto-close))
(format #t "auto-close ")
)
(if (= (logand (game-task-node-flag no-slow-down) arg0) (game-task-node-flag no-slow-down))
(format #t "no-slow-down ")
)
(if (= (logand arg0 (game-task-node-flag abs-task-mask)) (game-task-node-flag abs-task-mask))
(format #t "abs-task-mask ")
)
(if (= (logand (game-task-node-flag no-restart) arg0) (game-task-node-flag no-restart))
(format #t "no-restart ")
)
(if (= (logand (game-task-node-flag no-audio) arg0) (game-task-node-flag no-audio))
(format #t "no-audio ")
)
)
(defun-debug game-task-node-command->string ((arg0 game-task-node-command))
(case arg0
(((game-task-node-command add-gun-up-1))
"add-gun-up-1"
)
(((game-task-node-command add-darkjak-1))
"add-darkjak-1"
)
(((game-task-node-command add-pass-yellow))
"add-pass-yellow"
)
(((game-task-node-command add-pass-red))
"add-pass-red"
)
(((game-task-node-command sub-board))
"sub-board"
)
(((game-task-node-command add-board))
"add-board"
)
(((game-task-node-command add-darkjak))
"add-darkjak"
)
(((game-task-node-command add-darkjak-2))
"add-darkjak-2"
)
(((game-task-node-command add-gun-up-3))
"add-gun-up-3"
)
(((game-task-node-command add-gun-up-2))
"add-gun-up-2"
)
(((game-task-node-command add-darkjak-3))
"add-darkjak-3"
)
(((game-task-node-command add-darkjak-0))
"add-darkjak-0"
)
(((game-task-node-command add-gun-blue))
"add-gun-blue"
)
(((game-task-node-command add-gun-yellow))
"add-gun-yellow"
)
(((game-task-node-command none))
"none"
)
(((game-task-node-command add-gun-dark))
"add-gun-dark"
)
(((game-task-node-command add-pass-green))
"add-pass-green"
)
(((game-task-node-command add-board-training))
"add-board-training"
)
(((game-task-node-command add-gun-up-4))
"add-gun-up-4"
)
(((game-task-node-command add-gun-red))
"add-gun-red"
)
(((game-task-node-command add-pass-blue))
"add-pass-blue"
)
(((game-task-node-command sub-sidekick))
"sub-sidekick"
)
(((game-task-node-command add-sidekick))
"add-sidekick"
)
(else
"*unknown*"
)
)
)
(deftype game-task-node-info (basic)
((level symbol)
(task game-task)
(name string)
(when-open (array game-task-event))
(flags game-task-node-flag)
(parent-node game-task-node 4)
(task-mask task-mask)
(on-open pair)
(info task-manager-info)
(borrow pair)
(open? (function game-task-node-info symbol))
(on-close pair)
(close-time time-frame)
(death-count uint16)
(gem-count uint16)
(skill-count uint16)
(suck-death-count uint8)
(add game-task-node-command)
(description text-id)
)
(:methods
(close! (_type_ symbol) int)
(open! (_type_ symbol) int)
(open? (_type_) symbol)
(copy-hooks! (_type_ game-task-node-info) game-task-node-info)
(eval-add (_type_) int)
)
)
(deftype game-task-info (basic)
((name string)
(text-name text-id)
(pre-play-node game-task-node)
(kiosk-play-node game-task-node)
(pre-play-continue string)
(play-node game-task-node)
(play-continue string)
(kiosk-play-continue string)
)
)
(deftype game-task-control (basic)
((counter uint32)
(actor game-task-actor)
(current-node game-task-node)
(current-event game-task-event)
)
(:methods
(new (symbol type game-task-actor) _type_)
(get-current-task-event (_type_) game-task-event)
)
)
(deftype task-manager (process)
((node-info game-task-node-info)
(info task-manager-info)
(lev-name symbol)
(fail-on-death? symbol)
(fail-now symbol)
(retry-now symbol)
(allow-fail symbol)
(state-time time-frame)
(count int16)
(max-count int16)
(sub-state uint32)
(slave handle 32)
(arrow handle)
(link uint32)
(start-time time-frame)
(total-time time-frame)
(beep-time time-frame)
(time-limit time-frame)
(begin-pos vector :inline)
(end-pos vector :inline)
(data-int8 int8 32)
(data-int32 int32 32)
(data-float float 32)
(data-vector vector 32 :inline)
(actor-group (pointer entity-actor) 4)
(minimap connection-minimap 8)
(hud handle 4)
(hud-timer handle :overlay-at (-> hud 0))
(hud-counter handle :overlay-at (-> hud 1))
(sound-id sound-id 4)
(intro-time time-frame)
)
(:state-methods
wait
active
complete
fail
retry
)
(:methods
(initialize! (_type_) int)
(kill-all-children (_type_) int)
(check-time (_type_) int)
(task-manager-method-22 (_type_) symbol)
)
)
(deftype ambient-control (structure)
((last-ambient-time time-frame)
(last-ambient string)
(last-ambient-id sound-id)
)
(:methods
(dummy-9 () none)
(dummy-10 () none)
(dummy-11 () none)
)
)
(define *traffic-engine* (the-as traffic-engine #f))