First test for Bitmaps.
[uxul-world.git] / game.lisp
index 49e4e96..cc389c2 100755 (executable)
--- a/game.lisp
+++ b/game.lisp
@@ -4,24 +4,30 @@
 
 (defparameter *cfont* nil)
 
-(defun start-game (&key (music nil) room-function (15-fps nil))
+(defun run-testing-room ()
+  (start-game :room-function #'make-testing-room))
+
+(defun run-room (item-list)
+  (start-game :room-function
+             #'(lambda () (create-room-from-item-list item-list))))
+
+(defun start-game (&key (music nil)
+                  (room-function #'make-additional-testing-room)
+                  (15-fps nil))
   "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:window +screen-width+ +screen-height+
                   :title-caption "Uxul World"
                   :icon-caption "Uxul World"
+                  ;: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-surface) #| sdl:sdl-fullscreen )|# 
 )
        ;;(if music (sdl-mixer:OPEN-AUDIO :frequency 44100))
-       (let ((*graphics-table*
-             #-ecl (trivial-garbage:make-weak-hash-table
-                    :weakness :value
-                    :test #'equal)
-             #+ecl (make-hash-table :test #'equal)
-             ))         
+       (let ((*graphics-table* (make-hash-table :test #'equal)))
         (if 15-fps
             (setf (sdl:frame-rate) 15)
             (setf (sdl:frame-rate) 30))
@@ -45,6 +51,12 @@ 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*))))
                              (T
                               (on-key-down *current-room* key))))
           (:key-up-event (:key key)
@@ -96,4 +108,4 @@ drawn (for very slow computers)"
              (draw my-anim)
              
              (sdl:update-display)
-        ))))))
\ No newline at end of file
+        ))))))