Files
jak-project/goal_src/jak1/engine/ui/progress/progress-static.gc
T
Tyler Wilding d1ece445d4 Dependency graph work - Part 1 - Preliminary work (#3505)
Relates to #1353 

This adds no new functionality or overhead to the compiler, yet. This is
the preliminary work that has:
- added code to the compiler in several spots to flag when something is
used without being properly required/imported/whatever (disabled by
default)
- that was used to generate project wide file dependencies (some
circulars were manually fixed)
- then that graph underwent a transitive reduction and the result was
written to all `jak1` source files.

The next step will be making this actually produce and use a dependency
graph. Some of the reasons why I'm working on this:
- eliminates more `game.gp` boilerplate. This includes the `.gd` files
to some extent (`*-ag` files and `tpage` files will still need to be
handled) this is the point of the new `bundles` form. This should make
it even easier to add a new file into the source tree.
- a build order that is actually informed from something real and
compiler warnings that tell you when you are using something that won't
be available at build time.
- narrows the search space for doing LSP actions -- like searching for
references. Since it would be way too much work to store in the compiler
every location where every symbol/function/etc is used, I have to do
ad-hoc searches. By having a dependency graph i can significantly reduce
that search space.
- opens the doors for common shared code with a legitimate pattern.
Right now jak 2 shares code from the jak 1 folder. This is basically a
hack -- but by having an explicit require syntax, it would be possible
to reference arbitrary file paths, such as a `common` folder.

Some stats:
- Jak 1 has about 2500 edges between files, including transitives
- With transitives reduced at the source code level, each file seems to
have a modest amount of explicit requirements.

Known issues:
- Tracking the location for where `defmacro`s and virtual state
definitions were defined (and therefore the file) is still problematic.
Because those forms are in a macro environment, the reader does not
track them. I'm wondering if a workaround could be to search the
reader's text_db by not just the `goos::Object` but by the text
position. But for the purposes of finishing this work, I just statically
analyzed and searched the code with throwaway python code.
2024-05-12 12:37:59 -04:00

1406 lines
62 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/ui/progress/progress-h.gc")
(require "engine/ui/text-h.gc")
(require "engine/game/task/game-task-h.gc")
;; name: progress-static.gc
;; name in dgo: progress-static
;; dgos: GAME, ENGINE
;; This file contains the layouts for all of the menus.
;; options in the start menu options
(define *main-options*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id save-game) :scale #t :param3 (game-option-menu save-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit))
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *title*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id new-game) :scale #t :param3 (game-option-menu save-game-title))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id options) :scale #t :param3 (game-option-menu settings-title))
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *options*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *main-options-demo*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *main-options-demo-shared*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (text-id exit-demo) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *game-options*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t)
(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t)
(new 'static 'game-option :option-type (game-option-type language) :name (text-id language) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *game-options-japan*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t)
(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *game-options-demo*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t)
(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *graphic-options*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type center-screen) :name (text-id center-screen) :scale #t)
(new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *graphic-title-options-pal*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type center-screen) :name (text-id center-screen) :scale #t)
(new 'static 'game-option :option-type (game-option-type video-mode) :name (text-id video-mode) :scale #t)
(new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *sound-options*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :name (text-id sfx-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (text-id music-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (text-id speech-volume) :scale #t :param2 100.0)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t)
)
)
(define *yes-no-options* (new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type yes-no) :scale #f)
)
)
(define *ok-options*
(new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type button) :name (text-id ok) :scale #f)
)
)
(define *load-options*
(new 'static 'boxed-array :type game-option
(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 (text-id back) :scale #f)
)
)
(define *save-options*
(new 'static 'boxed-array :type game-option
(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 (text-id back) :scale #f)
)
)
(define *save-options-title*
(new 'static 'boxed-array :type game-option
(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 (text-id continue-without-saving) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #f)
)
)
;; maps options to a progress screen
;; the length matches with `(progress-screen max)`
(define *options-remap* (new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length (#if (not PC_PORT) 35 68)))
;; added in PC port
(defenum level-task-data-index
:type int32
(training 0)
(village1 1)
(beach 2)
(jungle 3)
(misty 4)
(firecanyon 5)
(village2 6)
(sunken 7)
(swamp 8)
(rolling 9)
(ogre 10)
(village3 11)
(snow 12)
(cave 13)
(lavatube 14)
(citadel 15)
(max 16)
)
;; maps level-info indices to the appropriate offset in *level-task-data*
(define *level-task-data-remap*
(new 'static 'boxed-array :type int32
(level-task-data-index training)
(level-task-data-index village1)
(level-task-data-index beach)
(level-task-data-index jungle) ;; jungle?
(level-task-data-index jungle) ;; jungleb?
(level-task-data-index misty)
(level-task-data-index firecanyon)
(level-task-data-index village2)
(level-task-data-index sunken) ;; sunken?
(level-task-data-index sunken) ;; sunkenb?
(level-task-data-index swamp)
(level-task-data-index rolling)
(level-task-data-index ogre)
(level-task-data-index village3)
(level-task-data-index snow)
(level-task-data-index cave) ;; maincave?
(level-task-data-index cave) ;; robocave?
(level-task-data-index cave) ;; darkcave?
(level-task-data-index lavatube)
(level-task-data-index citadel) ;; citadel?
(level-task-data-index citadel) ;; finalboss?
(level-task-data-index misty) ;; demo?
(level-task-data-index misty) ;; intro?
)
)
;; maps goal language ID to its name string ID
(define *language-name-remap*
(new 'static 'boxed-array :type text-id
(text-id english)
(text-id french)
(text-id german)
(text-id spanish)
(text-id italian)
(text-id japanese)
)
)
;; all level tasks
(define *level-task-data*
(new 'static 'boxed-array :type level-tasks-info
(new 'static 'level-tasks-info
:level-name-id (text-id training-level-name)
:text-group-index 1
:nb-of-tasks 4
:buzzer-task-index 3
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task training-gimmie)
:task-name
(new 'static 'array text-id 4
(text-id training-gimmie-task-name)
(text-id training-gimmie-task-name)
(text-id training-gimmie-task-name)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task training-door)
:task-name
(new 'static 'array text-id 4
(text-id training-door-task-name)
(text-id training-door-task-name)
(text-id training-door-task-name)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task training-climb)
:task-name
(new 'static 'array text-id 4
(text-id training-climb-task-name)
(text-id training-climb-task-name)
(text-id training-climb-task-name)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task training-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id training-buzzer-task-name)
(text-id training-buzzer-task-name)
(text-id training-buzzer-task-name)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id village1-level-name)
:text-group-index 1
:nb-of-tasks 6
:buzzer-task-index 5
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task village1-mayor-money)
:task-name
(new 'static 'array text-id 4
(text-id village1-mayor-money)
(text-id village1-mayor-money)
(text-id village1-mayor-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village1-uncle-money)
:task-name
(new 'static 'array text-id 4
(text-id village1-uncle-money)
(text-id village1-uncle-money)
(text-id village1-uncle-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village1-yakow)
:task-name
(new 'static 'array text-id 4
(text-id village1-yakow-herd)
(text-id village1-yakow-herd)
(text-id village1-yakow-return)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village1-oracle-money1)
:task-name
(new 'static 'array text-id 4
(text-id village1-oracle)
(text-id village1-oracle)
(text-id village1-oracle)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village1-oracle-money2)
:task-name
(new 'static 'array text-id 4
(text-id village1-oracle)
(text-id village1-oracle)
(text-id village1-oracle)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village1-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id beach-level-name)
:text-group-index 1
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task beach-ecorocks)
:task-name
(new 'static 'array text-id 4
(text-id beach-ecorocks)
(text-id beach-ecorocks)
(text-id beach-ecorocks)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task beach-flutflut)
:task-name
(new 'static 'array text-id 4
(text-id beach-flutflut-push)
(text-id beach-flutflut-push)
(text-id beach-flutflut-meet)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task beach-pelican)
:task-name
(new 'static 'array text-id 4
(text-id beach-pelican)
(text-id beach-pelican)
(text-id beach-pelican)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task beach-seagull)
:task-name
(new 'static 'array text-id 4
(text-id beach-seagull)
(text-id beach-seagull)
(text-id beach-seagull-get)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task beach-cannon)
:task-name
(new 'static 'array text-id 4
(text-id beach-cannon)
(text-id beach-cannon)
(text-id beach-cannon)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task beach-gimmie)
:task-name
(new 'static 'array text-id 4
(text-id beach-gimmie)
(text-id beach-gimmie)
(text-id beach-gimmie)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task beach-sentinel)
:task-name
(new 'static 'array text-id 4
(text-id beach-sentinel)
(text-id beach-sentinel)
(text-id beach-sentinel)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task beach-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id jungle-level-name)
:text-group-index 1
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task jungle-lurkerm)
:task-name
(new 'static 'array text-id 4
(text-id jungle-lurkerm-unblock)
(text-id jungle-lurkerm-connect)
(text-id jungle-lurkerm-return)
(text-id zero)
)
:text-index-when-resolved 1
)
(new 'static 'task-info-data
:task-id (game-task jungle-tower)
:task-name
(new 'static 'array text-id 4
(text-id jungle-tower)
(text-id jungle-tower)
(text-id jungle-tower)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task jungle-eggtop)
:task-name
(new 'static 'array text-id 4
(text-id jungle-eggtop)
(text-id jungle-eggtop)
(text-id jungle-eggtop)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task jungle-plant)
:task-name
(new 'static 'array text-id 4
(text-id jungle-plant)
(text-id jungle-plant)
(text-id jungle-plant)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task jungle-fishgame)
:task-name
(new 'static 'array text-id 4
(text-id jungle-fishgame)
(text-id jungle-fishgame)
(text-id jungle-fishgame)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task jungle-canyon-end)
:task-name
(new 'static 'array text-id 4
(text-id jungle-canyon-end)
(text-id jungle-canyon-end)
(text-id jungle-canyon-end)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task jungle-temple-door)
:task-name
(new 'static 'array text-id 4
(text-id jungle-temple-door)
(text-id jungle-temple-door)
(text-id jungle-temple-door)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task jungle-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id misty-level-name)
:text-group-index 1
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task misty-muse)
:task-name
(new 'static 'array text-id 4
(text-id misty-muse-catch)
(text-id misty-muse-catch)
(text-id misty-muse-return)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task misty-boat)
:task-name
(new 'static 'array text-id 4
(text-id misty-boat)
(text-id misty-boat)
(text-id misty-boat)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task misty-cannon)
:task-name
(new 'static 'array text-id 4
(text-id misty-cannon)
(text-id misty-cannon)
(text-id misty-cannon)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task misty-warehouse)
:task-name
(new 'static 'array text-id 4
(text-id misty-return-to-pool)
(text-id misty-return-to-pool)
(text-id misty-return-to-pool)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task misty-bike)
:task-name
(new 'static 'array text-id 4
(text-id misty-find-transpad)
(text-id misty-balloon-lurkers)
(text-id misty-find-transpad)
(text-id zero)
)
:text-index-when-resolved 1
)
(new 'static 'task-info-data
:task-id (game-task misty-bike-jump)
:task-name
(new 'static 'array text-id 4
(text-id misty-bike-jump)
(text-id misty-bike-jump)
(text-id misty-bike-jump)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task misty-eco-challenge)
:task-name
(new 'static 'array text-id 4
(text-id misty-eco-challenge)
(text-id misty-eco-challenge)
(text-id misty-eco-challenge)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task misty-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id beach-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id firecanyon-level-name)
:text-group-index 5
:nb-of-tasks 2
:buzzer-task-index 1
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task firecanyon-end)
:task-name
(new 'static 'array text-id 4
(text-id firecanyon-end)
(text-id firecanyon-end)
(text-id firecanyon-end)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task firecanyon-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id firecanyon-buzzer)
(text-id firecanyon-buzzer)
(text-id firecanyon-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id village2-level-name)
:text-group-index 2
:nb-of-tasks 6
:buzzer-task-index 5
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task village2-gambler-money)
:task-name
(new 'static 'array text-id 4
(text-id village2-gambler-money)
(text-id village2-gambler-money)
(text-id village2-gambler-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village2-geologist-money)
:task-name
(new 'static 'array text-id 4
(text-id village2-geologist-money)
(text-id village2-geologist-money)
(text-id village2-geologist-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village2-warrior-money)
:task-name
(new 'static 'array text-id 4
(text-id village2-warrior-money)
(text-id village2-warrior-money)
(text-id village2-warrior-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village2-oracle-money1)
:task-name
(new 'static 'array text-id 4
(text-id village2-oracle-money)
(text-id village2-oracle-money)
(text-id village2-oracle-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village2-oracle-money2)
:task-name
(new 'static 'array text-id 4
(text-id village2-oracle-money)
(text-id village2-oracle-money)
(text-id village2-oracle-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village2-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id sunken-level-name)
:text-group-index 2
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task sunken-room)
:task-name
(new 'static 'array text-id 4
(text-id sunken-elevator-raise)
(text-id sunken-elevator-raise)
(text-id sunken-elevator-get-to-roof)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task sunken-pipe)
:task-name
(new 'static 'array text-id 4
(text-id sunken-pipe)
(text-id sunken-pipe)
(text-id sunken-pipe)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task sunken-slide)
:task-name
(new 'static 'array text-id 4
(text-id sunken-slide)
(text-id sunken-slide)
(text-id sunken-slide)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task sunken-sharks)
:task-name
(new 'static 'array text-id 4
(text-id sunken-pool)
(text-id sunken-pool)
(text-id sunken-pool)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task sunken-platforms)
:task-name
(new 'static 'array text-id 4
(text-id sunken-platforms)
(text-id sunken-platforms)
(text-id sunken-platforms)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task sunken-top-of-helix)
:task-name
(new 'static 'array text-id 4
(text-id sunken-climb-tube)
(text-id sunken-climb-tube)
(text-id sunken-climb-tube)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task sunken-spinning-room)
:task-name
(new 'static 'array text-id 4
(text-id sunken-spinning-room)
(text-id sunken-spinning-room)
(text-id sunken-spinning-room)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task sunken-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id swamp-level-name)
:text-group-index 2
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task swamp-flutflut)
:task-name
(new 'static 'array text-id 4
(text-id swamp-flutflut)
(text-id swamp-flutflut)
(text-id swamp-flutflut)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task swamp-billy)
:task-name
(new 'static 'array text-id 4
(text-id swamp-billy)
(text-id swamp-billy)
(text-id swamp-billy)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task swamp-battle)
:task-name
(new 'static 'array text-id 4
(text-id swamp-battle)
(text-id swamp-battle)
(text-id swamp-battle)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task swamp-tether-4)
:task-name
(new 'static 'array text-id 4
(text-id swamp-tether)
(text-id swamp-tether)
(text-id swamp-tether)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task swamp-tether-1)
:task-name
(new 'static 'array text-id 4
(text-id swamp-tether)
(text-id swamp-tether)
(text-id swamp-tether)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task swamp-tether-2)
:task-name
(new 'static 'array text-id 4
(text-id swamp-tether)
(text-id swamp-tether)
(text-id swamp-tether)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task swamp-tether-3)
:task-name
(new 'static 'array text-id 4
(text-id swamp-tether)
(text-id swamp-tether)
(text-id swamp-tether)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task swamp-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id rolling-level-name)
:text-group-index 2
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task rolling-moles)
:task-name
(new 'static 'array text-id 4
(text-id rolling-moles)
(text-id rolling-moles)
(text-id rolling-moles-return)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task rolling-robbers)
:task-name
(new 'static 'array text-id 4
(text-id rolling-robbers)
(text-id rolling-robbers)
(text-id rolling-robbers)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task rolling-race)
:task-name
(new 'static 'array text-id 4
(text-id rolling-race)
(text-id rolling-race)
(text-id rolling-race-return)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task rolling-lake)
:task-name
(new 'static 'array text-id 4
(text-id rolling-lake)
(text-id rolling-lake)
(text-id rolling-lake)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task rolling-plants)
:task-name
(new 'static 'array text-id 4
(text-id rolling-plants)
(text-id rolling-plants)
(text-id rolling-plants)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task rolling-ring-chase-1)
:task-name
(new 'static 'array text-id 4
(text-id rolling-ring-chase-1)
(text-id rolling-ring-chase-1)
(text-id rolling-ring-chase-1)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task rolling-ring-chase-2)
:task-name
(new 'static 'array text-id 4
(text-id rolling-ring-chase-2)
(text-id rolling-ring-chase-2)
(text-id rolling-ring-chase-2)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task rolling-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id generic-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id ogre-level-name)
:text-group-index 6
:nb-of-tasks 4
:buzzer-task-index 3
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task ogre-boss)
:task-name
(new 'static 'array text-id 4
(text-id ogre-boss)
(text-id ogre-boss)
(text-id ogre-boss)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task ogre-end)
:task-name
(new 'static 'array text-id 4
(text-id ogre-end)
(text-id ogre-end)
(text-id ogre-end)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task ogre-secret)
:task-name
(new 'static 'array text-id 4
(text-id hidden-power-cell)
(text-id hidden-power-cell)
(text-id hidden-power-cell)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task ogre-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id ogre-buzzer)
(text-id ogre-buzzer)
(text-id ogre-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id village3-level-name)
:text-group-index 3
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task village3-miner-money1)
:task-name
(new 'static 'array text-id 4
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village3-miner-money2)
:task-name
(new 'static 'array text-id 4
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village3-miner-money3)
:task-name
(new 'static 'array text-id 4
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village3-miner-money4)
:task-name
(new 'static 'array text-id 4
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id village3-miner-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village3-oracle-money1)
:task-name
(new 'static 'array text-id 4
(text-id village3-oracle-money)
(text-id village3-oracle-money)
(text-id village3-oracle-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village3-oracle-money2)
:task-name
(new 'static 'array text-id 4
(text-id village3-oracle-money)
(text-id village3-oracle-money)
(text-id village3-oracle-money)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village3-extra1)
:task-name
(new 'static 'array text-id 4
(text-id hidden-power-cell)
(text-id hidden-power-cell)
(text-id hidden-power-cell)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task village3-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id village3-buzzer)
(text-id village3-buzzer)
(text-id village3-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id snow-level-name)
:text-group-index 3
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task snow-eggtop)
:task-name
(new 'static 'array text-id 4
(text-id snow-eggtop)
(text-id snow-eggtop)
(text-id snow-eggtop)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task snow-ram)
:task-name
(new 'static 'array text-id 4
(text-id snow-ram-3-left)
(text-id snow-ram-2-left)
(text-id snow-ram-1-left)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task snow-bumpers)
:task-name
(new 'static 'array text-id 4
(text-id snow-bumpers)
(text-id snow-bumpers)
(text-id snow-bumpers)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task snow-cage)
:task-name
(new 'static 'array text-id 4
(text-id snow-cage)
(text-id snow-cage)
(text-id snow-cage)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task snow-fort)
:task-name
(new 'static 'array text-id 4
(text-id snow-fort)
(text-id snow-fort)
(text-id snow-fort)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task snow-ball)
:task-name
(new 'static 'array text-id 4
(text-id snow-ball)
(text-id snow-ball)
(text-id snow-ball)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task snow-bunnies)
:task-name
(new 'static 'array text-id 4
(text-id snow-bunnies)
(text-id snow-bunnies)
(text-id snow-bunnies)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task snow-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id village3-buzzer)
(text-id village3-buzzer)
(text-id village3-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id cave-level-name)
:text-group-index 3
:nb-of-tasks 8
:buzzer-task-index 7
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task cave-gnawers)
:task-name
(new 'static 'array text-id 4
(text-id cave-gnawers)
(text-id cave-gnawers)
(text-id cave-gnawers)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task cave-dark-crystals)
:task-name
(new 'static 'array text-id 4
(text-id cave-dark-crystals)
(text-id cave-dark-crystals)
(text-id cave-dark-crystals)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task cave-dark-climb)
:task-name
(new 'static 'array text-id 4
(text-id cave-dark-climb)
(text-id cave-dark-climb)
(text-id cave-dark-climb)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task cave-robot-climb)
:task-name
(new 'static 'array text-id 4
(text-id cave-robot-climb)
(text-id cave-robot-climb)
(text-id cave-robot-climb)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task cave-swing-poles)
:task-name
(new 'static 'array text-id 4
(text-id cave-swing-poles)
(text-id cave-swing-poles)
(text-id cave-swing-poles)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task cave-spider-tunnel)
:task-name
(new 'static 'array text-id 4
(text-id cave-spider-tunnel)
(text-id cave-spider-tunnel)
(text-id cave-spider-tunnel)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task cave-platforms)
:task-name
(new 'static 'array text-id 4
(text-id cave-platforms)
(text-id cave-platforms)
(text-id cave-platforms)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task cave-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id village3-buzzer)
(text-id village3-buzzer)
(text-id village3-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id lavatube-level-name)
:text-group-index 3
:nb-of-tasks 2
:buzzer-task-index 1
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task lavatube-end)
:task-name
(new 'static 'array text-id 4
(text-id lavatube-end)
(text-id lavatube-end)
(text-id lavatube-end)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task lavatube-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id lavatube-buzzer)
(text-id lavatube-buzzer)
(text-id lavatube-buzzer)
(text-id zero)
)
)
)
)
(new 'static 'level-tasks-info
:level-name-id (text-id citadel-level-name)
:text-group-index 4
:nb-of-tasks 5
:buzzer-task-index 4
:task-info
(new 'static 'array task-info-data 8
(new 'static 'task-info-data
:task-id (game-task citadel-sage-blue)
:task-name
(new 'static 'array text-id 4
(text-id citadel-sage-blue)
(text-id citadel-sage-blue)
(text-id citadel-sage-blue)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task citadel-sage-red)
:task-name
(new 'static 'array text-id 4
(text-id citadel-sage-red)
(text-id citadel-sage-red)
(text-id citadel-sage-red)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task citadel-sage-yellow)
:task-name
(new 'static 'array text-id 4
(text-id citadel-sage-yellow)
(text-id citadel-sage-yellow)
(text-id citadel-sage-yellow)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task citadel-sage-green)
:task-name
(new 'static 'array text-id 4
(text-id citadel-sage-green)
(text-id citadel-sage-green)
(text-id citadel-sage-green)
(text-id zero)
)
)
(new 'static 'task-info-data
:task-id (game-task citadel-buzzer)
:task-name
(new 'static 'array text-id 4
(text-id citadel-buzzer)
(text-id citadel-buzzer)
(text-id citadel-buzzer)
(text-id zero)
)
)
)
)
)
)
;; goes down by 24 or 23 every time
(define *task-egg-starting-x*
(new 'static 'boxed-array :type int32
218
194
171
147
124
100
77
53
30
)
)
(define *game-counts* (the-as game-count-info #f))