right clicking describes an inventory item.

This commit is contained in:
Bryce Covert
2016-01-07 22:56:22 -08:00
parent 94d53b6d01
commit 42d77a7405

View File

@@ -28,6 +28,32 @@
(if selected-entity
(assoc entities :highlighted-item (:item selected-entity))
(assoc entities :highlighted-item nil))))
(defn left-click [screen entities]
(let [{:keys [highlighted-item]} entities
room-entities (-> @(resolve 'advent.screens.scene/scene)
:entities
deref
first)
current-cursor (get-in room-entities [:cursor :current])]
(if highlighted-item
(if (= :main current-cursor)
(screen! @(resolve 'advent.screens.scene/scene) :on-chose-item :item highlighted-item)
(when-let [interaction-script ((or (:scripts highlighted-item) (constantly nil)) (:value current-cursor))]
(interaction-script room-entities)
(close screen entities)))
(close screen entities))))
(defn right-click [screen entities]
(let [{:keys [highlighted-item]} entities
room-entities (-> @(resolve 'advent.screens.scene/scene)
:entities
deref
first)
current-cursor (get-in room-entities [:cursor :current])
ego (get-in room-entities [:room :entities :ego])]
(when (and highlighted-item (= :main current-cursor))
(((:get-script ego) highlighted-item [0 0]) room-entities)
(close screen entities))))
(defscreen inventory-screen
:on-show
@@ -107,20 +133,10 @@
:on-touch-down mouse-interact
:on-touch-up (fn [screen [entities]]
(when (and (:shown? entities) (= (button-code :left) (:button screen)) (= 1.0 (:opacity entities)))
(let [{:keys [highlighted-item]} entities
room-entities (-> @(resolve 'advent.screens.scene/scene)
:entities
deref
first)
current-cursor (get-in room-entities [:cursor :current])]
(if highlighted-item
(if (= :main current-cursor)
(screen! @(resolve 'advent.screens.scene/scene) :on-chose-item :item highlighted-item)
(when-let [interaction-script ((or (:scripts highlighted-item) (constantly nil)) (:value current-cursor))]
(interaction-script room-entities)
(close screen entities)))
(close screen entities)))))
(when (and (:shown? entities) (= 1.0 (:opacity entities)))
(if (= (button-code :left) (:button screen))
(left-click screen entities)
(right-click screen entities))))
:on-resize (fn [screen entities]
(.update (:viewport screen) (:width screen) (:height screen) true)))