main.ps
51 lines
| 1.3 KiB
| application/postscript
|
PostScriptLexer
/ src / main.ps
r6 | ||||
r25 | (in-package sugar-qsp.main) | |||
r6 | ||||
r9 | (setf (root) | |||
r25 | (create | |||
r31 | ;;; Game session state (saved in savegames) | |||
r12 | ;; Variables | |||
r25 | vars (create) | |||
r12 | ;; Inventory (objects) | |||
r32 | objs (create) | |||
r25 | current-location nil | |||
r20 | ;; Game time | |||
r25 | started-at (chain *date (now)) | |||
r20 | ;; Timers | |||
timer-interval 500 | ||||
timer-obj nil | ||||
r31 | ;; Games | |||
loaded-games (list) | ||||
r12 | ;;; Transient state | |||
r31 | ;; ACTions | |||
acts (create) | ||||
r12 | ;; Savegame data | |||
r25 | state-stash (create) | |||
r12 | ;; List of audio files being played | |||
r25 | playing (create) | |||
r14 | ;; Local variables stack (starts with an empty frame) | |||
locals (list) | ||||
r31 | ||||
r12 | ;;; Game data | |||
r31 | ;; Games (filename -> [locations]) | |||
games (list) | ||||
;; The main (non library) game. Updated by openqst | ||||
main-game nil | ||||
;; Active locations | ||||
r25 | locs (create))) | |||
r6 | ||||
r11 | ;; Launch the game from the first location | |||
r25 | (setf (@ window onload) | |||
r9 | (lambda () | |||
r25 | (#.(intern "INIT-DOM" "SUGAR-QSP.API")) | |||
r20 | ;; For MSECCOUNT | |||
r25 | (setf (root started-at) (chain *date (now))) | |||
r20 | ;; For $COUNTER and SETTIMER | |||
r25 | (#.(intern "SET-TIMER" "SUGAR-QSP.API") | |||
(root timer-interval)) | ||||
r31 | ;; Start the first game | |||
(#.(intern "RUN-GAME" "SUGAR-QSP.API") | ||||
(chain *object (keys (root games)) 0)) | ||||
r9 | (values))) | |||
r11 | ||||