[game] pc port progress menu (#1281)

* fix typo

* more typo

* shorten discord rpc text

* allow expanding enums after the fact (untested)

* make `game_text` work similar to subtitles

* update progress decomp

* update some types + `do-not-decompile` in bitfield

* fixes and fall back to original progress code

* update `progress` decomp with new enums

* update config files

* fix enums and debug menu

* always allocate (but not use) a lot of particles

* small rework to display mode options

* revert resolution/aspect-ratio symbol mess

* begin the override stuff

* make `progress-draw` more readable

* more fixes

* codacy good boy points

* first step overriding code

* finish progress overrides, game options menu fully functional!

* minor fixes

* Update game.gp

* Update sparticle-launcher.gc

* clang

* change camera controls text

* oops

* some cleanup

* derp

* nice job

* implement menu scrolling lol

* make scrollable menus less cramped, fix arrows

* make some carousell things i guess

* add msaa carousell to test

* oops

* Update progress-pc.gc

* make `pc-get-screen-size` (untested)

* resolution menu

* input fixes

* return when selecting resolution

* scroll fixes

* Update progress-pc.gc

* add "fit to screen" button

* bug

* complete resolutions menu

* aspect ratio menu

* subtitles language

* subtitle speaker

* final adjustments

* ref test

* fix tests

* fix ref!

* reduce redundancy a bit

* fix mem leaks?

* save settings on progress exit

* fix init reorder

* remove unused code

* rename goal project-like files to the project extension

* sha display toggle

* aspect ratio settings fixes

* dont store text db's in compiler

* properly save+load native aspect stuff
This commit is contained in:
ManDude
2022-04-11 23:38:54 +01:00
committed by GitHub
parent b408c78698
commit a7eee4fdc9
185 changed files with 6172 additions and 11465 deletions
+100 -102
View File
@@ -9,154 +9,152 @@
;; options in the start menu options
(define *main-options*
(new 'static 'boxed-array :type game-option :length 7 :allocated-length 7
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x6 :name (game-text-id load-game) :scale #t :param3 16)
(new 'static 'game-option :option-type #x6 :name (game-text-id save-game) :scale #t :param3 17)
(new 'static 'game-option :option-type #x6 :name (game-text-id quit-game) :scale #t :param3 34)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 7 :allocated-length 7
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id load-game) :scale #t :param3 (game-option-menu load-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id save-game) :scale #t :param3 (game-option-menu save-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id quit-game) :scale #t :param3 (game-option-menu quit))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *title*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x6 :name (game-text-id new-game) :scale #t :param3 18)
(new 'static 'game-option :option-type #x6 :name (game-text-id load-game) :scale #t :param3 16)
(new 'static 'game-option :option-type #x6 :name (game-text-id options) :scale #t :param3 28)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id new-game) :scale #t :param3 (game-option-menu save-game-title))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id load-game) :scale #t :param3 (game-option-menu load-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id options) :scale #t :param3 (game-option-menu settings-title))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *options*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *main-options-demo*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *main-options-demo-shared*
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x8 :name (game-text-id exit-demo) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id exit-demo) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *game-options*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x2 :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type #x2 :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type #x1 :name (game-text-id language) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type (game-option-type language) :name (game-text-id language) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *game-options-japan*
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type #x2 :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type #x2 :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *game-options-demo*
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type #x2 :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type #x2 :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *graphic-options*
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type #x3 :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type #x4 :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type (game-option-type center-screen) :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *graphic-title-options-pal*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x3 :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type #x5 :name (game-text-id video-mode) :scale #t)
(new 'static 'game-option :option-type #x4 :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type center-screen) :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type (game-option-type video-mode) :name (game-text-id video-mode) :scale #t)
(new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *sound-options*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :name (game-text-id sfx-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id music-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id speech-volume) :scale #t :param2 100.0)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :name (game-text-id sfx-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id music-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id speech-volume) :scale #t :param2 100.0)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *yes-no-options*
(new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type #x7 :scale #f)
)
)
(define *yes-no-options* (new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type (game-option-type yes-no) :scale #f)
)
)
(define *ok-options*
(new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type #x8 :name (game-text-id ok) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id ok) :scale #f)
)
)
(define *load-options*
(new 'static 'boxed-array
:type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #f)
)
)
(define *save-options*
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #f)
)
)
(define *save-options-title*
(new 'static 'boxed-array
:type game-option :length 6 :allocated-length 6
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id continue-without-saving) :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 6 :allocated-length 6
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id continue-without-saving) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #f)
)
)
;; maps options to a progress screen
(define *options-remap*
(new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length 35)
)
(#if (not PC_PORT)
(define *options-remap* (new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length 35))
(define *options-remap* (new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length 50))
)
;; TODO probably an enum.
;; maps "levels" to the appropriate offset in *level-task-data*