right clicking describes an inventory item.
This commit is contained in:
@@ -28,6 +28,32 @@
|
|||||||
(if selected-entity
|
(if selected-entity
|
||||||
(assoc entities :highlighted-item (:item selected-entity))
|
(assoc entities :highlighted-item (:item selected-entity))
|
||||||
(assoc entities :highlighted-item nil))))
|
(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
|
(defscreen inventory-screen
|
||||||
:on-show
|
:on-show
|
||||||
@@ -107,20 +133,10 @@
|
|||||||
:on-touch-down mouse-interact
|
:on-touch-down mouse-interact
|
||||||
|
|
||||||
:on-touch-up (fn [screen [entities]]
|
:on-touch-up (fn [screen [entities]]
|
||||||
(when (and (:shown? entities) (= (button-code :left) (:button screen)) (= 1.0 (:opacity entities)))
|
(when (and (:shown? entities) (= 1.0 (:opacity entities)))
|
||||||
(let [{:keys [highlighted-item]} entities
|
(if (= (button-code :left) (:button screen))
|
||||||
room-entities (-> @(resolve 'advent.screens.scene/scene)
|
(left-click screen entities)
|
||||||
:entities
|
(right-click screen 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)))))
|
|
||||||
|
|
||||||
:on-resize (fn [screen entities]
|
:on-resize (fn [screen entities]
|
||||||
(.update (:viewport screen) (:width screen) (:height screen) true)))
|
(.update (:viewport screen) (:width screen) (:height screen) true)))
|
||||||
|
|||||||
Reference in New Issue
Block a user