Corrected the dependencies. Level Editor works again using Skippy.
[uxul-world.git] / draw.lisp
1 ;;; Copyright 2009 Christoph Senjak
2
3 ;; various draw-methods
4
5 (in-package :uxul-world)
6
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|)))))
10
11 ;;     (loop for i from -1 to 16
12 ;;       do (loop for j from -1 to 12
13 ;;               do (progn
14 ;;                    (sdl:draw-surface-at-* ani2
15 ;;                                           (+ (* i 64) (round
16 ;;                                                        (mod (/ x-trans 4) 64)))
17 ;;                                           (+ (* j 64) (round
18 ;;                                                        (mod (/ y-trans 4) 64)))))))
19 ;;     (loop for i from -1 to 16
20 ;;       do (loop for j from -1 to 12
21 ;;               do 
22 ;;               (sdl:draw-surface-at-* ani3
23 ;;                                           (+ (* 64 i) (round
24 ;;                                                        (mod (/ x-trans 2) 64)))
25 ;;                                           (+ (* 64 j) (round
26 ;;                                                        (mod (/ y-trans 2) 64)))))))
27   )
28
29 (defmethod draw ((obj room))
30   (let ((*current-translation-x*
31          #|(cond
32            ((< (- (x (graphic-centralizer obj)) 400) 0) 0)
33            ((> (+ (x (graphic-centralizer obj)) 400) (width obj))
34             (- 800 (width obj)))
35            (T
36             (- 400 (x (graphic-centralizer obj)))))|#
37          (- (ash 400 (- *zoom-ash*)) (x (graphic-centralizer obj)))
38           )
39         (*current-translation-y*
40          #|(cond
41            ((< (- (y (graphic-centralizer obj)) 300) 0) 0)
42            ((> (+ (y (graphic-centralizer obj)) 300) (height obj))
43             (- 600 (height obj)))
44            (T
45             (- 300 (y (graphic-centralizer obj)))))|#
46          (- (ash 300 (- *zoom-ash*)) (y (graphic-centralizer obj)))
47           ))
48     (draw-background *current-translation-x* *current-translation-y*)
49     (dolist (image (get-objects obj 'uxul-world::game-object))
50       (if (and (redraw image)
51                (visible image)
52                (rectangle-in-screen image)) (draw image)))))
53
54
55 ;; FIXME
56
57 (defvar *player-bar-color* -255)
58
59 (defmethod draw ((obj player))
60   #+nil(if (rectangle-in-screen obj)
61            (old-draw-rectangle obj :r 255 :g 255 :b 255))
62
63   ;;; FIXME ************
64   (sdl:draw-box-*
65    10 10 (floor (* (power obj) (/ (- +screen-width+ 20) 10))) 10
66    :color (sdl:color :r (abs *player-bar-color*) :g (abs *player-bar-color*) :b (abs *player-bar-color*)))
67   (incf *player-bar-color* 5)
68   (if (= *player-bar-color* 255) (setf *player-bar-color* -255))
69
70   (call-next-method))
71
72 (defmethod draw ((obj stone))
73   (call-next-method)
74   #+nil(if (rectangle-in-screen obj)
75       (old-draw-rectangle obj :r 255 :g 255 :b 255)))
76
77 (defmethod draw ((obj simple-enemy))
78   (call-next-method)
79   #+nil(if (rectangle-in-screen obj)
80       (old-draw-rectangle obj :r 255 :g 255 :b 255)))