mmo-project/lisp/client/sbcl/client.lisp

44 lines
1.7 KiB
Common Lisp
Raw Normal View History

2023-11-18 18:06:43 -05:00
(load "~/quicklisp/setup.lisp")
(ql:quickload '(:claylib :usocket :simple-actors :bordeau-thread))
(defvar *mouse-delta* (make-vector2 0 0))
(defun reset-up (camera)
(setf (x (up camera)) 0
(y (up camera)) 1
(z (up camera)) 0))
(defun pro-mvmt (key1 key2)
(if (or (is-key-down-p key1) (is-key-down-p key2)) 0.1 0))
(defun pro-mode-update (camera)
(get-mouse-delta :vec *mouse-delta*)
(setf (x (movement camera)) (- (pro-mvmt +key-w+ +key-up+)
(pro-mvmt +key-s+ +key-down+))
(y (movement camera)) (- (pro-mvmt +key-d+ +key-right+)
(pro-mvmt +key-a+ +key-left+))
(x (rot camera)) (* 0.05 (x *mouse-delta*))
(y (rot camera)) (* 0.05 (y *mouse-delta*))
(zoom camera) (* 2 (get-mouse-wheel-move))))
(with-window (:title "common lisp client : raylib")
(let ((camera (make-camera-3d 0 2 4
0 2 0
0 1 0
:fovy 60.0
:projection +camera-perspective+
:mode +camera-first-person+))
(scene (make-scene ()
((ground (make-plane 0 0 0 32 32 +lightgray+))
(blue (make-cube -16 2.5 0
1 5 32
+blue+)))))))
(with-scenes scene ()
(do-game-loop (:livesupport t)
(pro-mode-update camera)
(with-drawing ()
(with-3d-mode camera
(draw-scene scene '(ground blue green yellow))
(draw-scene-regex scene "^COLUMN"))
(draw-scene-regex scene "^(STATUS|INST)"))))))