From: christoph Date: Sat, 1 Jan 2011 23:07:06 +0000 (+0100) Subject: Ported to OpenGL X-Git-Url: http://uxul.de/gitweb/?a=commitdiff_plain;h=32d336f81c7ba63968f935b66d6b601ecf9d400b;p=uxul-world.git Ported to OpenGL --- diff --git a/BUGS b/BUGS index c2882d8..0a0df16 100755 --- a/BUGS +++ b/BUGS @@ -10,3 +10,8 @@ 2009/08/04 Jumping after falling down from a stone is possible - 2009/08/20 Fixed + +2011/01/02 Background not implemented + +2011/01/02 A lot of deprecated stuff in the code must be cleaned + diff --git a/add-object.lisp b/add-object.lisp index 1a14a35..077a2ae 100755 --- a/add-object.lisp +++ b/add-object.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/animation.lisp b/animation.lisp index ec09fc4..a4da80a 100755 --- a/animation.lisp +++ b/animation.lisp @@ -1,6 +1,6 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak -;; Basic definitions for animations. Needs lispbuilder-sdl. +;; Basic definitions for animations. (in-package :uxul-world) @@ -20,20 +20,28 @@ ;; :accessor images ;; ; :type (simple-array 'sdl:surface (*)) ;; :documentation "Array with the images") + (full-widths :initarg :full-widths + :initform (make-array (list 0)) + :accessor full-widths + :documentation "Widths of images-1x") + (full-heights :initarg :full-heights + :initform (make-array (list 0)) + :accessor full-heights + :documentation "Heights of images-1x") (images-2x :initarg :images-2x - :initform (make-array (list 0) :element-type 'sdl:surface) + :initform (make-array (list 0)) :accessor images-2x :documentation "Array of double-sized images") (images-1x :initarg :images-1x - :initform (make-array (list 0) :element-type 'sdl:surface) + :initform (make-array (list 0)) :accessor images-1x :documentation "Array of normal-sized images") (images-.5x :initarg :images-.5x - :initform (make-array (list 0) :element-type 'sdl:surface) + :initform (make-array (list 0)) :accessor images-.5x :documentation "Array of half-sized images") (images-.25x :initarg :images-.25x - :initform (make-array (list 0) :element-type 'sdl:surface) + :initform (make-array (list 0)) :accessor images-.25x :documentation "Array of quarter-sized images") (sprite-image-number :initform 0 @@ -97,9 +105,16 @@ below, this will refer to an animation in the *graphics-table*." ))) (setf (already-jumped obj) 0) (setf (sprite-image-number obj) (mod (+ 1 (sprite-image-number obj)) (length (images obj)))))) (when (visible obj) - (sdl:draw-surface-at-* (elt (images obj) (sprite-image-number obj)) - (zoom-trans (+ *current-translation-x* (round (x obj)))) - (zoom-trans (+ *current-translation-y* (round (y obj))))))) + (make-quad (elt (images obj) (sprite-image-number obj)) + (zoom-trans (round (x obj))) + (zoom-trans (round (y obj))) + + (ash (elt (full-widths obj) + (sprite-image-number obj)) (+ 2 *zoom-ash*)) + (ash (elt (full-heights obj) + (sprite-image-number obj)) (+ 2 *zoom-ash*)) + +))) ;additional methods to make life easier (defmethod pause ((obj animation)) @@ -129,28 +144,22 @@ below, this will refer to an animation in the *graphics-table*." ))) (defun make-animation (frame-skip &rest image-list) "Create an animation from the list of animation-names given in the images-variable." + ;(format t "make-animation is being called~%") (make-instance 'animation + :full-widths (mapcar + #'(lambda (x) (bmp-width (cadr x))) image-list) + :full-heights (mapcar + #'(lambda (x) (bmp-height (cadr x))) image-list) :images-2x (mapcar - #'(lambda (x) - (sdl:convert-surface :surface (sdl:load-image - (car x) :alpha 1 ))) + #'(lambda (x) (load-bmp-blob-into-texture (car x))) image-list) :images-1x (mapcar - #'(lambda (x) - (sdl:convert-surface :surface (sdl:load-image - (cadr x) - :alpha 1 ))) + #'(lambda (x) (load-bmp-blob-into-texture (cadr x))) image-list) :images-.5x (mapcar - #'(lambda (x) - (sdl:convert-surface :surface (sdl:load-image - (caddr x) - :alpha 1 ))) + #'(lambda (x) (load-bmp-blob-into-texture (caddr x))) image-list) :images-.25x (mapcar - #'(lambda (x) - (sdl:convert-surface :surface (sdl:load-image - (cadddr x) - :alpha 1 ))) + #'(lambda (x) (load-bmp-blob-into-texture (cadddr x))) image-list) :sprite-delay frame-skip)) \ No newline at end of file diff --git a/bmp.lisp b/bmp.lisp index 0b05d55..24ba92e 100755 --- a/bmp.lisp +++ b/bmp.lisp @@ -1,6 +1,6 @@ ;;; -*- lisp -*- -;;; Copyright 2010 Christoph Senjak +;;; Copyright 2010-2011 Christoph Senjak (in-package :uxul-world) diff --git a/burning-marshmallow.lisp b/burning-marshmallow.lisp index cb8b374..49563d5 100755 --- a/burning-marshmallow.lisp +++ b/burning-marshmallow.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/collision.lisp b/collision.lisp index 9de4667..2aa57c5 100755 --- a/collision.lisp +++ b/collision.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/constants.lisp b/constants.lisp index 40c5204..0f257a5 100755 --- a/constants.lisp +++ b/constants.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/draw.lisp b/draw.lisp index 82a32c9..5c4761d 100755 --- a/draw.lisp +++ b/draw.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak ;; various draw-methods @@ -28,28 +28,14 @@ (defmethod draw ((obj room)) (let ((*current-translation-x* - #|(cond - ((< (- (x (graphic-centralizer obj)) 400) 0) 0) - ((> (+ (x (graphic-centralizer obj)) 400) (width obj)) - (- 800 (width obj))) - (T - (- 400 (x (graphic-centralizer obj)))))|# - (- (ash 400 (- *zoom-ash*)) (x (graphic-centralizer obj))) - ) + (* 2 (- 400 (x (graphic-centralizer obj))))) (*current-translation-y* - #|(cond - ((< (- (y (graphic-centralizer obj)) 300) 0) 0) - ((> (+ (y (graphic-centralizer obj)) 300) (height obj)) - (- 600 (height obj))) - (T - (- 300 (y (graphic-centralizer obj)))))|# - (- (ash 300 (- *zoom-ash*)) (y (graphic-centralizer obj))) - )) + (* 2 (- 300 (y (graphic-centralizer obj)))))) (draw-background *current-translation-x* *current-translation-y*) + (gl:scale *zoomx* (- *zoomy*) 1) + (gl:translate *current-translation-x* *current-translation-y* 0) (dolist (image (get-objects obj 'uxul-world::game-object)) - (if (and (redraw image) - (visible image) - (rectangle-in-screen image)) (draw image))))) + (and (redraw image) (visible image) (draw image))))) ;; FIXME @@ -61,20 +47,14 @@ (old-draw-rectangle obj :r 255 :g 255 :b 255)) ;;; FIXME ************ - (sdl:draw-box-* - 10 10 (floor (* (power obj) (/ (- +screen-width+ 20) 10))) 10 - :color (sdl:color :r (abs *player-bar-color*) :g (abs *player-bar-color*) :b (abs *player-bar-color*))) + ;; (sdl:draw-box-* + ;; 10 10 (floor (* (power obj) (/ (- +screen-width+ 20) 10))) 10 + ;; :color (sdl:color :r (abs *player-bar-color*) :g (abs *player-bar-color*) :b (abs *player-bar-color*))) (incf *player-bar-color* 5) (if (= *player-bar-color* 255) (setf *player-bar-color* -255)) (call-next-method)) -(defmethod draw ((obj stone)) - (call-next-method) - #+nil(if (rectangle-in-screen obj) - (old-draw-rectangle obj :r 255 :g 255 :b 255))) +(defmethod draw ((obj stone)) (call-next-method)) -(defmethod draw ((obj simple-enemy)) - (call-next-method) - #+nil(if (rectangle-in-screen obj) - (old-draw-rectangle obj :r 255 :g 255 :b 255))) +(defmethod draw ((obj simple-enemy)) (call-next-method)) diff --git a/elementary-classes.lisp b/elementary-classes.lisp index 43cd9cf..b7390d4 100755 --- a/elementary-classes.lisp +++ b/elementary-classes.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/files.lisp b/files.lisp index 9c6d44e..07808be 100755 --- a/files.lisp +++ b/files.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak ;; This file declares the constants for loading different files and ;; file-formats. diff --git a/flying-nasobem.lisp b/flying-nasobem.lisp index 7017ec6..4d02738 100755 --- a/flying-nasobem.lisp +++ b/flying-nasobem.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/functions.lisp b/functions.lisp index aa71ef5..e2cf0e3 100755 --- a/functions.lisp +++ b/functions.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/game-object-with-animation.lisp b/game-object-with-animation.lisp index f188e53..8c9886e 100755 --- a/game-object-with-animation.lisp +++ b/game-object-with-animation.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/game-object.lisp b/game-object.lisp index df28f33..caee7a6 100755 --- a/game-object.lisp +++ b/game-object.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) @@ -128,10 +128,11 @@ (defmethod draw-bounds ((obj game-object)) "This function draws a rectangle with the Object's Bounds. May be useful for some debug-spam" - (sdl:draw-rectangle-* (+ (x obj) *current-translation-x*) - (+ (y obj) *current-translation-y*) - (width obj) (height obj) - :color sdl:*BLACK*)) + ;; (sdl:draw-rectangle-* (+ (x obj) *current-translation-x*) + ;; (+ (y obj) *current-translation-y*) + ;; (width obj) (height obj) + ;; :color sdl:*BLACK*) +) (defun collide-blocks (moving-rectangle standing-rectangle collision) "as MANY collision-methods need to move the moving-object around the diff --git a/game.lisp b/game.lisp index cc389c2..25ac600 100755 --- a/game.lisp +++ b/game.lisp @@ -1,8 +1,10 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) (defparameter *cfont* nil) +(defparameter *zoomx* 1.0) +(defparameter *zoomy* 1.0) (defun run-testing-room () (start-game :room-function #'make-testing-room)) @@ -17,24 +19,36 @@ "Start the Game: Call room-function for getting the room-object to run. Music is ignored so far. 15-fps makes only every second frame be drawn (for very slow computers)" - (sdl:set-video-driver "directx") - (sdl:with-init (sdl:sdl-init-video sdl:sdl-init-audio) +; (sdl:set-video-driver "directx") + (sdl:with-init (sdl:sdl-init-video) ;sdl:sdl-init-video sdl:sdl-init-audio) (sdl:window +screen-width+ +screen-height+ :title-caption "Uxul World" :icon-caption "Uxul World" + :flags sdl:sdl-opengl ;:opengl T - :flags (logior sdl:sdl-hw-accel sdl:sdl-hw-surface) - :flags (logior sdl:sdl-hw-surface) #| sdl:sdl-fullscreen )|# -) + ;:flags (logior sdl:sdl-hw-accel sdl:sdl-hw-surface) + ;:flags (logior sdl:sdl-hw-surface) #| sdl:sdl-fullscreen )|# + ) + (setf cl-opengl-bindings:*gl-get-proc-address* + #'sdl-cffi::sdl-gl-get-proc-address) ;;(if music (sdl-mixer:OPEN-AUDIO :frequency 44100)) - (let ((*graphics-table* (make-hash-table :test #'equal))) + + (gl:hint :perspective-correction-hint :nicest) + + + (let ((*graphics-table* (make-hash-table :test #'equal)) + (*zoomx* (/ 1.0 +screen-width+)) + (*zoomxi* (/ .01 +screen-width+)) + (*zoomy* (/ 1.0 +screen-height+)) + (*zoomyi* (/ .01 +screen-height+)) + (*zoom-ash* 0)) (if 15-fps (setf (sdl:frame-rate) 15) (setf (sdl:frame-rate) 30)) (setf *current-room* (funcall room-function)) - (sdl:clear-display (sdl:color :r 0 :g 0 :b 0));; :update-p nil) + ;(sdl:clear-display (sdl:color :r 0 :g 0 :b 0));; :update-p nil) ;;(if music (sdl-mixer:play-sample levelmusic)) @@ -51,14 +65,21 @@ drawn (for very slow computers)" (cond ((sdl:key= key :SDL-KEY-ESCAPE) (sdl:push-quit-event)) - ((sdl:key= key :SDL-KEY-O) - (setf *zoom-ash* - (max -3 (1- *zoom-ash*)))) - ((sdl:key= key :SDL-KEY-I) - (setf *zoom-ash* - (min 0 (1+ *zoom-ash*)))) + ((sdl:key= key :SDL-KEY-U) + (incf *zoomx* *zoomxi*) + (incf *zoomy* *zoomyi*)) + ((sdl:key= key :SDL-KEY-D) + (decf *zoomx* *zoomxi*) + (decf *zoomy* *zoomyi*)) (T (on-key-down *current-room* key)))) + (:mouse-button-down-event + (:button btn) + (cond + ((= btn sdl:mouse-wheel-up) + (incf *zoomx* *zoomxi*) (incf *zoomy* *zoomyi*)) + ((= btn sdl:mouse-wheel-down) + (decf *zoomx* *zoomxi*) (decf *zoomy* *zoomyi*)))) (:key-up-event (:key key) (on-key-up *current-room* key)) (:idle @@ -66,46 +87,50 @@ drawn (for very slow computers)" (invoke *current-room*) (when 15-fps (invoke *current-room*)) - (sdl:clear-display (sdl:color :r 128 :g 128 :b 128)); :update-p nil) + (gl:clear :color-buffer-bit :depth-buffer-bit) + (gl:enable :texture-2d) + (gl:enable :blend) + (gl:blend-func :src-alpha :one-minus-src-alpha) + (gl:load-identity) (draw *current-room*) - (sdl:update-display) - )))))) + (gl:flush) + (sdl:update-display))))))) -;; For Debugging +;; ;; For Debugging -(defun preview-animation (frameskip &rest images) +;; (defun preview-animation (frameskip &rest images) - (sdl:with-init (sdl:sdl-init-video sdl:sdl-init-audio) - (sdl:window +screen-width+ +screen-height+ - :title-caption "Uxul World" - :icon-caption "Uxul World" - :flags (logior sdl:sdl-hw-accel) - #| :flags (logior sdl:sdl-hw-surface sdl:sdl-fullscreen )|# ) - (let ((*graphics-table* - #-ecl (trivial-garbage:make-weak-hash-table - :weakness :value - :test #'equal) - #+ecl (make-hash-table :test #'equal) - ) - (my-anim (apply #'make-animation frameskip images)) - ) +;; (sdl:with-init (sdl:sdl-init-video sdl:sdl-init-audio) +;; (sdl:window +screen-width+ +screen-height+ +;; :title-caption "Uxul World" +;; :icon-caption "Uxul World" +;; :flags (logior sdl:sdl-hw-accel) +;; #| :flags (logior sdl:sdl-hw-surface sdl:sdl-fullscreen )|# ) +;; (let ((*graphics-table* +;; #-ecl (trivial-garbage:make-weak-hash-table +;; :weakness :value +;; :test #'equal) +;; #+ecl (make-hash-table :test #'equal) +;; ) +;; (my-anim (apply #'make-animation frameskip images)) +;; ) - (setf (sdl:frame-rate) 30) - (sdl:clear-display (sdl:color :r 64 :g 64 :b 46));; :update-p nil) +;; (setf (sdl:frame-rate) 30) +;; (sdl:clear-display (sdl:color :r 64 :g 64 :b 46));; :update-p nil) - (sdl:with-events () - (:quit-event () t) - (:key-down-event (:key key) - (cond - ((sdl:key= key :SDL-KEY-ESCAPE) - (sdl:push-quit-event)))) - (:idle - (progn - (sdl:clear-display (sdl:color :r 64 :g 64 :b 46));; :update-p nil) +;; (sdl:with-events () +;; (:quit-event () t) +;; (:key-down-event (:key key) +;; (cond +;; ((sdl:key= key :SDL-KEY-ESCAPE) +;; (sdl:push-quit-event)))) +;; (:idle +;; (progn +;; (sdl:clear-display (sdl:color :r 64 :g 64 :b 46));; :update-p nil) - (draw my-anim) +;; (draw my-anim) - (sdl:update-display) - )))))) +;; (sdl:update-display) +;; )))))) diff --git a/imagemagick.lisp b/imagemagick.lisp index 51b0e13..3e61515 100755 --- a/imagemagick.lisp +++ b/imagemagick.lisp @@ -1,4 +1,4 @@ -;; Copyright 2010 Christoph Senjak +;; Copyright 2010-2011 Christoph Senjak (in-package :uxul-world) diff --git a/leveleditor.lisp b/leveleditor.lisp index 3dfc2a0..c70c706 100755 --- a/leveleditor.lisp +++ b/leveleditor.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world-leveleditor) diff --git a/macros.lisp b/macros.lisp index 5ce181f..03c0d85 100755 --- a/macros.lisp +++ b/macros.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/objectarray.lisp b/objectarray.lisp index 9f63900..5fd96aa 100755 --- a/objectarray.lisp +++ b/objectarray.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/on-collision.lisp b/on-collision.lisp index 45d7d07..645c968 100755 --- a/on-collision.lisp +++ b/on-collision.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/opengl.lisp b/opengl.lisp new file mode 100644 index 0000000..907aa6d --- /dev/null +++ b/opengl.lisp @@ -0,0 +1,27 @@ +;; Copyright 2010-2011 Christoph Senjak + +(in-package :uxul-world) + +(defun load-bmp-blob-into-texture (blob) + (let* + ((id (car (gl:gen-textures 1))) + (pix (bmp-pixel-data blob)) + (w (bmp-width blob)) + (h (bmp-height blob))) + (gl:bind-texture :texture-2d id) + (gl:tex-image-2d :texture-2d 0 :rgba8 w h 0 :bgra :unsigned-byte pix) + (gl:tex-parameter :texture-2d :texture-min-filter :linear) + (gl:tex-parameter :texture-2d :texture-mag-filter :linear) + (gl:flush) + id)) + +(defun make-quad (id x y w h) + (setf x (- (+ x x) +screen-width+ )) + (setf y (- (+ y y) +screen-height+)) + (gl:bind-texture :texture-2d id) + (gl:with-primitive :quads + (gl:tex-coord 0 0) (gl:vertex x (+ y h)) + (gl:tex-coord 1 0) (gl:vertex (+ x w) (+ y h)) + (gl:tex-coord 1 1) (gl:vertex (+ x w) y) + (gl:tex-coord 0 1) (gl:vertex x y))) + diff --git a/player.lisp b/player.lisp index 9e56626..b363767 100755 --- a/player.lisp +++ b/player.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/room.lisp b/room.lisp index e041a17..ac76394 100755 --- a/room.lisp +++ b/room.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/simple-enemy.lisp b/simple-enemy.lisp index c1614c9..4315c5b 100755 --- a/simple-enemy.lisp +++ b/simple-enemy.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/small-classes.lisp b/small-classes.lisp index d1d8659..18c10c8 100755 --- a/small-classes.lisp +++ b/small-classes.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/testing-room.lisp b/testing-room.lisp index a65e9db..860c55e 100755 --- a/testing-room.lisp +++ b/testing-room.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world) diff --git a/trampoline.lisp b/trampoline.lisp index 65e09cd..c1dadbc 100755 --- a/trampoline.lisp +++ b/trampoline.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2010 Christoph Senjak +;;; Copyright 2010-2011 Christoph Senjak (in-package :uxul-world) diff --git a/uxul-world-leveleditor.lisp b/uxul-world-leveleditor.lisp index 0a2b8ca..c0dc56c 100755 --- a/uxul-world-leveleditor.lisp +++ b/uxul-world-leveleditor.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (defpackage #:uxul-world-leveleditor (:use diff --git a/uxul-world.asd b/uxul-world.asd index bb9f515..3813bf2 100755 --- a/uxul-world.asd +++ b/uxul-world.asd @@ -7,13 +7,15 @@ :version "No Release Yet" :author "Christoph Senjak " :license "Copyright 2009 Christoph Senjak." - :depends-on (#:lispbuilder-sdl #:closer-mop + :depends-on (#:lispbuilder-sdl #:cl-opengl + #:closer-mop #:cl-fad #:lispbuilder-sdl) :components ((:file "uxul-world") (:file "constants") (:file "macros") (:file "bmp") + (:file "opengl") (:file "xy-coordinates") (:file "collision") (:file "files") diff --git a/uxul-world.lisp b/uxul-world.lisp index fd6efd1..1a64c1c 100755 --- a/uxul-world.lisp +++ b/uxul-world.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (defpackage #:uxul-world (:use diff --git a/xy-coordinates.lisp b/xy-coordinates.lisp index 83f8d3e..7e554ec 100755 --- a/xy-coordinates.lisp +++ b/xy-coordinates.lisp @@ -1,4 +1,4 @@ -;;; Copyright 2009 Christoph Senjak +;;; Copyright 2009-2011 Christoph Senjak (in-package :uxul-world)