wh-engine/wh-engine/systems.lisp

24 lines
743 B
Common Lisp

;;;; wh-engine/systems.lisp
;;;; facilities for defining systems
(in-package wh-engine)
(defvar *system-registry* ()
"Alist of defined systems.")
(defvar *world-systems* ()
"List of installed systems.")
(defun register-system (name init-fun-symbol update-fun-symbol sdl-event-rules
&key dependencies)
(push `(,name ,init-fun-symbol ,update-fun-symbol
,sdl-event-rules
,dependencies)
*system-registry*))
(defun install-systems (&rest systems)
(loop for system-name in systems
for system = (assoc system-name *system-registry*)
do (pushnew system *world-systems*)
;; install dependencies
(apply #'install-systems (fifth system))))