;;; Gacela Server for development mode
(let (socket clients)
- (defun server-running? ()
- (if socket t nil))
-
(defun start-server (port)
- (setq socket (si::socket port :server #'eval-from-client)))
+ (when (null socket) (setq socket (si::socket port :server #'eval-from-clients))))
(defun check-server-connections ()
- (when (si::listen socket) (push (si:accept socket) clients)))
+ (when (and socket (si::listen socket)) (push (si:accept socket) clients)))
(defun eval-from-clients ()
(dolist (cli clients) (when (si::listen cli) (eval (read cli))))))
(init-video-mode)
(SDL_WM_SetCaption ,title "")
(init-frame-time)
+ (check-server-connections)
+ (eval-from-clients)
(refresh-running-mobs)
(process-events)
(do () ((quit?))
(SDL_GL_SwapBuffers)
(delay-frame)
(init-frame-time)
+ (check-server-connections)
+ (eval-from-clients)
(refresh-running-mobs)
(process-events)
(setq running nil))))
-(show-mob (make-mob :x 0 :y 0 :image (filled-rect 5 420) :tags '(wall)))
-(show-mob (make-mob :x 635 :y 0 :image (filled-rect 5 420) :tags '(wall)))
-(show-mob (make-mob :x 0 :y 0 :image (filled-rect 640 5) :tags '(wall)))
+;(show-mob (make-mob :x 0 :y 0 :image (filled-rect 5 420) :tags '(wall)))
+;(show-mob (make-mob :x 635 :y 0 :image (filled-rect 5 420) :tags '(wall)))
+;(show-mob (make-mob :x 0 :y 0 :image (filled-rect 640 5) :tags '(wall)))
-(show-mob (make-mob :x 280 :y 420 :image (filled-rect 80 20) :tags '(wall)
- :logic (movement-with-cursors :xvel 200 :yvel 0)))
+;(show-mob (make-mob :x 280 :y 420 :image (filled-rect 80 20) :tags '(wall)
+; :logic (movement-with-cursors :xvel 200 :yvel 0)))
-(let ((xvel 100) (yvel -100))
- (show-mob (make-mob :x 300 :y 200 :image (filled-circle 7)
- :logic (progn
- (cond ((> y 480) (setq x 300 y 200 xvel 100 yvel -100))
- (t (let ((c (collision '(wall))))
- (cond ((null c) nil)
- ((= c (neg (/ pi 2))) (setq yvel (neg (- yvel 10))))
- ((= c (/ pi 2)) (setq yvel (neg (+ yvel 10))))
- ((= c 0) (setq xvel (neg (+ xvel 10))))
- ((= c pi) (setq xvel (neg (- xvel 10))))))))
- (movement :xvel xvel :yvel yvel)))))
+;(let ((xvel 100) (yvel -100))
+; (show-mob (make-mob :x 300 :y 200 :image (filled-circle 7)
+; :logic (progn
+; (cond ((> y 480) (setq x 300 y 200 xvel 100 yvel -100))
+; (t (let ((c (collision '(wall))))
+; (cond ((null c) nil)
+; ((= c (neg (/ pi 2))) (setq yvel (neg (- yvel 10))))
+; ((= c (/ pi 2)) (setq yvel (neg (+ yvel 10))))
+; ((= c 0) (setq xvel (neg (+ xvel 10))))
+; ((= c pi) (setq xvel (neg (- xvel 10))))))))
+; (movement :xvel xvel :yvel yvel)))))
-(run-game)
-(quit-game)
+;(run-game)
+;(quit-game)
+
+(let ((r 0))
+ (gacela::makemob cuadrado
+ :render (lambda ()
+ (gacela::rotate 0 0 r)
+ (incf r 5)
+ (gacela::draw-cube :size 40))))
+
+;(cuadrado :on)
+(gacela::start-server 1984)
+
+(gacela::run-game "Prueba Mobs")