diff options
author | Colin Okay <colin@cicadas.surf> | 2022-07-18 10:25:44 -0500 |
---|---|---|
committer | Colin Okay <colin@cicadas.surf> | 2022-07-18 10:25:44 -0500 |
commit | dc83fef581b1da9ac6944a4c610fed9789d245b6 (patch) | |
tree | 3141366ee185f7940a2c6b8b955bd6e97e2a2092 /examples/01-click-and-drag-bitmap.lisp | |
parent | 84cfbd5c52d035a166bcb8d8ce9bd566b01e4513 (diff) |
[rename] example 1
Diffstat (limited to 'examples/01-click-and-drag-bitmap.lisp')
-rw-r--r-- | examples/01-click-and-drag-bitmap.lisp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/01-click-and-drag-bitmap.lisp b/examples/01-click-and-drag-bitmap.lisp new file mode 100644 index 0000000..4bcdba8 --- /dev/null +++ b/examples/01-click-and-drag-bitmap.lisp @@ -0,0 +1,51 @@ +;;; 01-bitmap-display.lisp + +(defpackage #:ww.examples/1 + (:use #:cl) + (:export #:start)) + +(in-package :ww.examples/1) + +(defclass bitmap-display (ww::application ) ()) + +(ww::defhandler dragging-unit + (ww::on-mousemotion (app x y) + (let ((unit + (first (ww:container-units app)))) + (setf (ww:x unit) x + (ww:y unit) y)))) + +(ww:defhandler start-drag + (ww:on-mousedown (target) + (ww::add-handler + (ww::unit-container target) + #'dragging-unit))) + +(ww:defhandler stop-drag + (ww::on-mouseup (app) + (ww::remove-handler app #'dragging-unit))) + + +(defmethod ww::boot ((app bitmap-display)) + (let ((bm + (make-instance 'ww::bitmap + :texture (ww::get-asset "Fezghoul.png")))) + (describe (ww::model-matrix bm)) + (describe bm) + (describe app) + (ww::add-unit app bm) + (ww::add-handler bm #'start-drag) + (ww::add-handler app #'stop-drag) + (format t "CLICK AND DRAG THE GHOUL~%") + )) + + +(defun start () + (ww::start + (make-instance + 'bitmap-display + :mouse-button-events-bubble-p t + :mouse-motion-events-bubble-p t + :asset-root (merge-pathnames + "examples/" + (asdf:system-source-directory :wheelwork))))) |