right clicking describes an inventory item.
This commit is contained in:
@@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user