jak-project/goal_src/engine/ui/progress-h.gc
Matt Dallmeyer 84b2ba43be
Camera inversion/flipped support for main first+third person cameras (#1355)
* Split cam inversion settings into first/third person settings. Connect settings to controls for main first/third person cameras

* inverted -> flipped everywhere

* cam-billy first-person camera impl

* respect camera inversion in cam-stick (debug option only), launcher cams

* refactor into common functions

* couple more cams

* tweak menu text and size, fix function ordering

* convert to macros, more descriptive names

* pc port comments

* one missed comment

* menu text/size/display tweaks

* respect flipped in main debug cam
2022-05-11 18:28:27 -04:00

361 lines
12 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: progress-h.gc
;; name in dgo: progress-h
;; dgos: GAME, ENGINE
;; PC port adds new menus and option types
(#cond
((not PC_PORT)
(defenum progress-screen
:type int64
(invalid -1)
(fuel-cell 0)
(money 1)
(buzzer 2)
(settings 3)
(game-settings 4)
(graphic-settings 5)
(sound-settings 6)
(memcard-no-space 7)
(memcard-not-inserted 8)
(memcard-not-formatted 9)
(memcard-format 10)
(memcard-data-exists 11)
(memcard-loading 12)
(memcard-saving 13)
(memcard-formatting 14)
(memcard-creating 15)
(load-game 16)
(save-game 17)
(save-game-title 18)
(memcard-insert 19)
(memcard-error-loading 20)
(memcard-error-saving 21)
(memcard-removed 22)
(memcard-no-data 23)
(memcard-error-formatting 24)
(memcard-error-creating 25)
(memcard-auto-save-error 26)
(title 27)
(settings-title 28)
(auto-save 29)
(pal-change-to-60hz 30)
(pal-now-60hz 31)
(no-disc 32)
(bad-disc 33)
(quit 34)
(max 35)
)
(defenum game-option-type
:type uint64
(slider 0)
(language 1)
(on-off 2)
(center-screen 3)
(aspect-ratio 4)
(video-mode 5)
(menu 6)
(yes-no 7)
(button 8)
)
)
(#t
(defenum progress-screen
:type int64
(invalid -1)
(fuel-cell 0)
(money 1)
(buzzer 2)
(settings 3)
(game-settings 4)
(graphic-settings 5)
(sound-settings 6)
(memcard-no-space 7)
(memcard-not-inserted 8)
(memcard-not-formatted 9)
(memcard-format 10)
(memcard-data-exists 11)
(memcard-loading 12)
(memcard-saving 13)
(memcard-formatting 14)
(memcard-creating 15)
(load-game 16)
(save-game 17)
(save-game-title 18)
(memcard-insert 19)
(memcard-error-loading 20)
(memcard-error-saving 21)
(memcard-removed 22)
(memcard-no-data 23)
(memcard-error-formatting 24)
(memcard-error-creating 25)
(memcard-auto-save-error 26)
(title 27)
(settings-title 28)
(auto-save 29)
(pal-change-to-60hz 30)
(pal-now-60hz 31)
(no-disc 32)
(bad-disc 33)
(quit 34)
;; extra screens for pc port
(camera-options)
(accessibility-options)
(game-ps2-options)
(misc-options)
(resolution)
(aspect-msg)
(aspect-ratio)
(gfx-ps2-options)
(secrets)
(hint-log)
(cheats)
(scrapbook)
(music-player)
(scene-player)
(credits)
;; the last one!
(max)
)
(defenum game-option-type
:type uint64
(slider 0)
(language 1)
(on-off 2)
(center-screen 3)
(aspect-ratio 4)
(video-mode 5)
(menu 6)
(yes-no 7)
(button 8)
;; extra types for pc port
(normal-flipped)
(display-mode)
(msaa)
(frame-rate)
(lod-bg)
(lod-fg)
(resolution)
(aspect-new)
(language-subtitles)
(speaker)
(aspect-native)
)
)
)
(defenum game-option-menu
:type int32
:copy-entries progress-screen)
(defun-extern activate-progress process progress-screen none)
(defun-extern hide-progress-screen none)
(defun-extern hide-progress-icons none)
(defun-extern progress-allowed? symbol)
(defun-extern pause-allowed? symbol)
;; DECOMP BEGINS
(deftype count-info (structure)
((money-count int32 :offset-assert 0)
(buzzer-count int32 :offset-assert 4)
)
:pack-me
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
(deftype game-count-info (basic)
((length int32 :offset-assert 4)
(data count-info :inline :dynamic :offset-assert 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
(deftype task-info-data (basic)
((task-id game-task :offset-assert 4)
(task-name game-text-id 4 :offset-assert 8)
(text-index-when-resolved int32 :offset-assert 24)
)
:method-count-assert 9
:size-assert #x1c
:flag-assert #x90000001c
)
(deftype level-tasks-info (basic)
((level-name-id game-text-id :offset-assert 4)
(text-group-index int32 :offset-assert 8)
(nb-of-tasks int32 :offset-assert 12)
(buzzer-task-index int32 :offset-assert 16)
(task-info task-info-data 8 :offset-assert 20)
)
:method-count-assert 9
:size-assert #x34
:flag-assert #x900000034
)
(deftype game-option (basic)
((option-type game-option-type :offset-assert 8)
(name game-text-id :offset-assert 16)
(scale symbol :offset-assert 20)
(param1 float :offset-assert 24)
(param2 float :offset-assert 28)
(param3 game-option-menu :offset-assert 32)
(value-to-modify pointer :offset-assert 36)
)
:method-count-assert 9
:size-assert #x28
:flag-assert #x900000028
)
(deftype progress (process)
((current-debug-string int32 :offset-assert 112)
(current-debug-language int32 :offset-assert 116)
(current-debug-group int32 :offset-assert 120)
(in-out-position int32 :offset-assert 124)
(display-state progress-screen :offset-assert 128)
(next-display-state progress-screen :offset-assert 136)
(option-index int32 :offset-assert 144)
(selected-option basic :offset-assert 148)
(completion-percentage float :offset-assert 152)
(ready-to-run basic :offset-assert 156)
(display-level-index int32 :offset-assert 160)
(next-level-index int32 :offset-assert 164)
(task-index int32 :offset-assert 168)
(in-transition basic :offset-assert 172)
(last-in-transition basic :offset-assert 176)
(force-transition basic :offset-assert 180)
(stat-transition basic :offset-assert 184)
(level-transition int32 :offset-assert 188)
(language-selection language-enum :offset-assert 192)
(language-direction symbol :offset-assert 200)
(language-transition basic :offset-assert 204)
(language-x-offset int32 :offset-assert 208)
(sides-x-scale float :offset-assert 212)
(sides-y-scale float :offset-assert 216)
(left-x-offset int32 :offset-assert 220)
(right-x-offset int32 :offset-assert 224)
(button-scale float :offset-assert 228)
(slot-scale float :offset-assert 232)
(left-side-x-scale float :offset-assert 236)
(left-side-y-scale float :offset-assert 240)
(right-side-x-scale float :offset-assert 244)
(right-side-y-scale float :offset-assert 248)
(small-orb-y-offset int32 :offset-assert 252)
(big-orb-y-offset int32 :offset-assert 256)
(transition-offset int32 :offset-assert 260)
(transition-offset-invert int32 :offset-assert 264)
(transition-percentage float :offset-assert 268)
(transition-percentage-invert float :offset-assert 272)
(transition-speed float :offset-assert 276)
(total-nb-of-power-cells int32 :offset-assert 280)
(total-nb-of-orbs int32 :offset-assert 284)
(total-nb-of-buzzers int32 :offset-assert 288)
(card-info mc-slot-info :offset-assert 292)
(last-option-index-change time-frame :offset-assert 296)
(video-mode-timeout time-frame :offset-assert 304)
(display-state-stack progress-screen 5 :offset-assert 312)
(option-index-stack int32 5 :offset-assert 352)
(display-state-pos int32 :offset-assert 372)
(nb-of-icons int32 :offset-assert 376)
(icons hud-icon 6 :offset-assert 380)
(max-nb-of-particles int32 :offset-assert 404)
(nb-of-particles int32 :offset-assert 408)
(particles hud-particle 40 :offset-assert 412)
(particle-state int32 40 :offset-assert 572)
)
:heap-base #x270
:method-count-assert 59
:size-assert #x2dc
:flag-assert #x3b027002dc
(:methods
(progress-dummy-14 (_type_) none 14) ;; unused
(progress-dummy-15 (_type_) none 15) ;; unused
(progress-dummy-16 (_type_) none 16) ;; unused
(draw-progress (_type_) none 17)
(progress-dummy-18 () none 18) ;; unused
(visible? (_type_) symbol 19)
(hidden? (_type_) symbol 20)
(adjust-sprites (_type_) none 21)
(adjust-icons (_type_) none 22)
(adjust-ratios (_type_ symbol symbol) none 23)
(draw-fuel-cell-screen (_type_ int) none 24)
(draw-money-screen (_type_ int) none 25)
(draw-buzzer-screen (_type_ int) none 26)
(draw-notice-screen (_type_) none 27)
(draw-options (_type_ int int float) none 28)
(respond-common (_type_) none 29)
(respond-progress (_type_) none 30)
(respond-memcard (_type_) none 31)
(can-go-back? (_type_) symbol 32)
(initialize-icons (_type_) none 33)
(initialize-particles (_type_) none 34)
(draw-memcard-storage-error (_type_ font-context) none 35)
(draw-memcard-data-exists (_type_ font-context) none 36)
(draw-memcard-no-data (_type_ font-context) none 37)
(draw-memcard-accessing (_type_ font-context) none 38)
(draw-memcard-insert (_type_ font-context) none 39)
(draw-memcard-file-select (_type_ font-context) none 40)
(draw-memcard-auto-save-error (_type_ font-context) none 41)
(draw-memcard-removed (_type_ font-context) none 42)
(draw-memcard-error (_type_ font-context) none 43)
(progress-dummy-44 (_type_) none 44) ;; unused
(push! (_type_) none 45)
(pop! (_type_) none 46)
(progress-dummy-47 (_type_) none 47) ;; unused
(enter! (_type_ progress-screen int) none 48)
(draw-memcard-format (_type_ font-context) none 49)
(draw-auto-save (_type_ font-context) none 50)
(set-transition-progress! (_type_ int) none 51)
(set-transition-speed! (_type_) none 52)
(set-memcard-screen (_type_ progress-screen) progress-screen 53)
(draw-pal-change-to-60hz (_type_ font-context) none 54)
(draw-pal-now-60hz (_type_ font-context) none 55)
(draw-no-disc (_type_ font-context) none 56)
(draw-bad-disc (_type_ font-context) none 57)
(draw-quit (_type_ font-context) none 58)
)
(:states
progress-coming-in
progress-debug
progress-going-out
progress-gone
progress-normal
progress-waiting
)
)
(define *progress-process* (the-as (pointer progress) #f))
(define *progress-last-task-index* 0)
(defun-extern get-game-count int count-info)
(define-extern *level-task-data* (array level-tasks-info))
(define-extern *level-task-data-remap* (array int32))
(defun-extern deactivate-progress none)
(defun-extern calculate-completion progress float)
(defun-extern make-current-level-available-to-progress none)