aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples/01-click-and-drag-bitmap.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/01-click-and-drag-bitmap.lisp')
-rw-r--r--examples/01-click-and-drag-bitmap.lisp51
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)))))