main.ps
58 lines
| 1.4 KiB
| application/postscript
|
PostScriptLexer
/ src / main.ps
r6 | ||||
r46 | (in-package txt2web.main) | |||
r6 | ||||
r39 | ;;; Game session state (saved in savegames) | |||
;; Variables | ||||
(var *globals (create)) | ||||
r64 | (var *default-globals (create)) | |||
r39 | ;; 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) | |||
r47 | #'start) | |||
(defun start () | ||||
(#.(intern "INIT-DOM" "TXT2WEB.API")) | ||||
;; For MSECCOUNT | ||||
(setf *started-at (chain *date (now))) | ||||
;; For $COUNTER and SETTIMER | ||||
(#.(intern "SET-TIMER" "TXT2WEB.API") | ||||
*timer-interval) | ||||
;; Start the first game | ||||
r64 | (let ((first-game (chain *object (keys *games) 0))) | |||
(#.(intern "INIT-GLOBALS" "TXT2WEB.API") first-game) | ||||
(#.(intern "RUN-GAME" "TXT2WEB.API") first-game)) | ||||
r47 | (values)) | |||
r41 | ||||
;;; Some very common utilities (for both api and lib) | ||||
(defun by-id (id) | ||||
(chain document (get-element-by-id id))) | ||||