main.ps
44 lines
| 1.1 KiB
| application/postscript
|
PostScriptLexer
/ src / main.ps
r6 | ||||
r25 | (in-package sugar-qsp.main) | |||
r6 | ||||
r9 | (setf (root) | |||
r25 | (create | |||
r12 | ;;; Game session state | |||
;; Variables | ||||
r25 | vars (create) | |||
r12 | ;; Inventory (objects) | |||
objs (list) | ||||
r25 | current-location nil | |||
r20 | ;; Game time | |||
r25 | started-at (chain *date (now)) | |||
r20 | ;; Timers | |||
timer-interval 500 | ||||
timer-obj nil | ||||
r12 | ;;; Transient state | |||
;; 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) | ||||
r12 | ;;; Game data | |||
;; ACTions | ||||
r25 | acts (create) | |||
r12 | ;; 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)) | ||||
r30 | ;; Start the first location | |||
r25 | (funcall (getprop (root locs) | |||
(chain *object (keys (root locs)) 0)) | ||||
r16 | (list)) | |||
r9 | (values))) | |||
r11 | ||||