1 ;;; Copyright 2009 Christoph Senjak
3 ;; various draw-methods
5 (in-package :uxul-world)
7 (defun draw-background (x-trans y-trans)
8 (let ((ani3 (car (images (make-animation 0 |background_test_layer_3|))))
9 (ani2 (car (images (make-animation 0 |background_test_layer_2|)))))
11 (loop for i from -1 to 16
12 do (loop for j from -1 to 12
14 (sdl:draw-surface-at-* ani2
16 (mod (/ x-trans 4) 64)))
18 (mod (/ y-trans 4) 64)))))))
19 (loop for i from -1 to 16
20 do (loop for j from -1 to 12
22 (sdl:draw-surface-at-* ani3
24 (mod (/ x-trans 2) 64)))
26 (mod (/ y-trans 2) 64))))))))
28 (defmethod draw ((obj room))
29 (let ((*current-translation-x*
31 ((< (- (x (graphic-centralizer obj)) 400) 0) 0)
32 ((> (+ (x (graphic-centralizer obj)) 400) (width obj))
35 (- 400 (x (graphic-centralizer obj)))))|#
36 (- 400 (x (graphic-centralizer obj)))
38 (*current-translation-y*
40 ((< (- (y (graphic-centralizer obj)) 300) 0) 0)
41 ((> (+ (y (graphic-centralizer obj)) 300) (height obj))
44 (- 300 (y (graphic-centralizer obj)))))|#
45 (- 300 (y (graphic-centralizer obj)))
47 (draw-background *current-translation-x* *current-translation-y*)
48 (dolist (image (get-objects obj 'uxul-world::game-object))
49 (if (and (redraw image)
51 (rectangle-in-screen image)) (draw image)))))
56 (defvar *player-bar-color* -255)
58 (defmethod draw ((obj player))
59 #+nil(if (rectangle-in-screen obj)
60 (old-draw-rectangle obj :r 255 :g 255 :b 255))
62 ;;; FIXME ************
64 10 10 (floor (* (power obj) (/ (- +screen-width+ 20) 10))) 10
65 :color (sdl:color :r (abs *player-bar-color*) :g (abs *player-bar-color*) :b (abs *player-bar-color*)))
66 (incf *player-bar-color* 5)
67 (if (= *player-bar-color* 255) (setf *player-bar-color* -255))
71 (defmethod draw ((obj stone))
73 #+nil(if (rectangle-in-screen obj)
74 (old-draw-rectangle obj :r 255 :g 255 :b 255)))
76 (defmethod draw ((obj simple-enemy))
78 #+nil(if (rectangle-in-screen obj)
79 (old-draw-rectangle obj :r 255 :g 255 :b 255)))