main.ps
54 lines
| 1.3 KiB
| application/postscript
|
PostScriptLexer
/ src / main.ps
r6 | ||||
r25 | (in-package sugar-qsp.main) | |||
r6 | ||||
r39 | ;;; Game session state (saved in savegames) | |||
;; Variables | ||||
(var *globals (create)) | ||||
;; Inventory (objects) | ||||
(var *objs (create)) | ||||
(var *current-location nil) | ||||
;; Game time | ||||
(var *started-at (chain *date (now))) | ||||
;; Timers | ||||
(var *timer-interval 500) | ||||
(var *timer-obj nil) | ||||
;; Games | ||||
(var *loaded-games (list)) | ||||
r31 | ||||
r39 | ;;; Transient state | |||
;; ACTions | ||||
(var *acts (create)) | ||||
;; Savegame data | ||||
(var *state-stash (create)) | ||||
;; List of audio files being played | ||||
(var *playing (create)) | ||||
;; Local variables stack (starts with an empty frame) | ||||
(var *locals (list)) | ||||
r40 | ;; Promise to continue running the game after menu | |||
(var *menu-resume nil) | ||||
r31 | ||||
r39 | ;;; Game data | |||
;; Games (filename -> [locations]) | ||||
(var *games (list)) | ||||
;; The main (non library) game. Updated by openqst | ||||
(var *main-game nil) | ||||
;; Active locations | ||||
(var *locs (create)) | ||||
r6 | ||||
r25 | (setf (@ window onload) | |||
r9 | (lambda () | |||
r25 | (#.(intern "INIT-DOM" "SUGAR-QSP.API")) | |||
r20 | ;; For MSECCOUNT | |||
r39 | (setf *started-at (chain *date (now))) | |||
r20 | ;; For $COUNTER and SETTIMER | |||
r25 | (#.(intern "SET-TIMER" "SUGAR-QSP.API") | |||
r39 | *timer-interval) | |||
r31 | ;; Start the first game | |||
(#.(intern "RUN-GAME" "SUGAR-QSP.API") | ||||
r39 | (chain *object (keys *games) 0)) | |||
r9 | (values))) | |||
r41 | ||||
;;; Some very common utilities (for both api and lib) | ||||
(defun by-id (id) | ||||
(chain document (get-element-by-id id))) | ||||