Update of /project/corman-sdl/cvsroot/corman-sdl/engine In directory common-lisp.net:/tmp/cvs-serv25748/engine
Modified Files: engine.lisp Log Message:
Date: Tue Apr 20 05:28:13 2004 Author: lcrook
Index: corman-sdl/engine/engine.lisp diff -u corman-sdl/engine/engine.lisp:1.4 corman-sdl/engine/engine.lisp:1.5 --- corman-sdl/engine/engine.lisp:1.4 Mon Apr 19 21:07:55 2004 +++ corman-sdl/engine/engine.lisp Tue Apr 20 05:28:13 2004 @@ -104,7 +104,15 @@
-(defvar objects nil) +(let ((bitplanes nil)) + (defun bitplanes () + bitplanes) + (defun first-bitplane () + (if (null (dl-prev bitplanes)) + bitplanes + (setf bitplanes (dl-prev bitplanes)))) + (defun set-bitplane (bitplane) + (setf bitplanes bitplane)))
(defclass sprite () ( @@ -140,11 +148,10 @@
(defun find-bitplane (zorder bitplanes) (let ((bp bitplanes) (quit nil)) - (sdl:fformat "bp == ~A, zorder == ~A~%" bp zorder) (loop (when (equal quit t) (return (values bp 'n))) (if (> zorder (get-zorder bp)) ; if test > current - (when (null (dl-next bp)) + (if (null (dl-next bp)) (setf quit t) ; end of list when next is null (setf bp (dl-next bp))) ; next node (if (equal zorder (get-zorder bp)) @@ -153,21 +160,23 @@
(defun return-bitplane (zorder bitplanes) (when (null bitplanes) - (setf objects (dl-list (new-bitplane zorder))) - (setf bitplanes objects)) + (set-bitplane (dl-list (new-bitplane zorder))) + (setf bitplanes (bitplanes))) (multiple-value-bind (bitplane pos) (find-bitplane zorder bitplanes) (cond ((equal pos 'c) (values (dl-data bitplane))) ((equal pos 'p) - (values (dl-data (dl-insert (new-bitplane zorder) bitplane)))) + (setf bitplane (dl-insert (new-bitplane zorder) bitplane)) + (first-bitplane) + (values (dl-data bitplane))) ((equal pos 'n) (values (dl-data (dl-append (new-bitplane zorder) bitplane)))))))
(defun add-object (spr) (addto-bitplane - (return-bitplane (sprite-zorder spr) objects) + (return-bitplane (sprite-zorder spr) (bitplanes)) spr))