]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Thu, 18 Aug 2011 17:38:25 +0000 (17:38 +0000)
committerjsancho <devnull@localhost>
Thu, 18 Aug 2011 17:38:25 +0000 (17:38 +0000)
src/gacela.scm
src/gacela_mobs.scm
src/gacela_server.scm

index dba48e6376ddc887bcad5f58732ec192cfd72904..9bea00ec2506d0487d83dc93734aac7f97ef4a68 100644 (file)
                          (glClear (+ GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT))
                          (to-origin)))
                   (cond ((mobs-changed?) (set! mobs (get-active-mobs))))
-                  (if (procedure? game-code) (game-code))
+                  (if (procedure? game-code)
+                      (catch #t
+                             (lambda () (game-code))
+                             (lambda (key . args) #f)))
                   (run-mob-actions mobs)
                   (cond ((video-mode-on?)
                          (render-mobs mobs)
index ed55a007e85251326cc4033768d7b8d87355b755..8c687dc5b42158dd01748059c7c88e552aa7c6da 100755 (executable)
                        (lambda-look ,attr ,@look))))))
      mob))
 
+(define-macro (define-mob mob-def)
+  (let ((name (car mob-def)) (def (cdr mob-def)))
+    `(define ,name
+       (lambda-mob ,def))))
+
+(defmacro* lambda-mob (#:key (attr '()) (action #f) (look #f))
+  `(let ((attr ,attr) (action ,action) (look ,look))
+     (lambda (option . params)
+       (case option
+        ((get-attr)
+         attr)
+        ((set-attr)
+         (if (not (null? params)) (set! attr (car params))))
+        ((get-action)
+         action)
+        ((set-action)
+         (if (not (null? params)) (set! action (car params))))
+        ((get-look)
+         look)
+        ((set-look)
+         (if (not (null? params)) (set! look (car params))))
+        ((run-mob)
+         (lambda (action)
+                    (set! attr ((cdr action) attr)))
+                  actions))
+                ((render)
+                 (for-each
+                  (lambda (look)
+                    ((cdr look) attr))
+                  looks))))))
+
+
 (define (get-mob-attr mob var)
   (let ((value (assoc-ref (mob 'get-attr) var)))
     (if value (car value) #f)))
index fbd2b2e1e1204559fffc8a3cf8757025f6d8fa92..8c45b20ecdb684f95f3e18fd3e0994ff16329154 100644 (file)
@@ -92,7 +92,5 @@
         (force-output send-channel))))
 
 
-(define connect-to-server #f)
-
 (define (connect-to-server client-socket hostname port)
   (connect client-socket AF_INET (car (hostent:addr-list (gethost hostname))) port))