24 lines
743 B
Common 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))))
|