looking better on an inventory front.
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
[clojure.tools.logging :as log]
|
[clojure.tools.logging :as log]
|
||||||
[clojure.pprint]
|
[clojure.pprint]
|
||||||
[advent.pathfind]
|
[advent.pathfind]
|
||||||
|
[advent.actions :as actions]
|
||||||
[advent.zone :as zone]
|
[advent.zone :as zone]
|
||||||
[advent.tween :as tween]
|
[advent.tween :as tween]
|
||||||
[advent.utils :as utils])
|
[advent.utils :as utils])
|
||||||
@@ -37,8 +38,9 @@
|
|||||||
(-> entities
|
(-> entities
|
||||||
(assoc-in [:items selected-item :x] (- x 32))
|
(assoc-in [:items selected-item :x] (- x 32))
|
||||||
(assoc-in [:items selected-item :y] (- y 32))
|
(assoc-in [:items selected-item :y] (- y 32))
|
||||||
|
(assoc :dragged? true)
|
||||||
(assoc :hovered-item (:item hovered-entity)))
|
(assoc :hovered-item (:item hovered-entity)))
|
||||||
(assoc entities :hovered-item (:item hovered-entity)))))
|
(assoc entities :hovered-item (:item hovered-entity) :dragged? true))))
|
||||||
|
|
||||||
|
|
||||||
(defn mouse-move [screen [entities]]
|
(defn mouse-move [screen [entities]]
|
||||||
@@ -46,7 +48,7 @@
|
|||||||
hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))]
|
hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))]
|
||||||
(assoc entities :hovered-item (:item hovered-entity))))
|
(assoc entities :hovered-item (:item hovered-entity))))
|
||||||
|
|
||||||
(defn left-click [screen {:keys [selected-item hovered-item] :as entities}]
|
(defn left-click [screen {:keys [selected-item hovered-item dragged?] :as entities}]
|
||||||
(let [room-entities (-> @(resolve 'advent.screens.scene/scene)
|
(let [room-entities (-> @(resolve 'advent.screens.scene/scene)
|
||||||
:entities
|
:entities
|
||||||
deref
|
deref
|
||||||
@@ -54,14 +56,22 @@
|
|||||||
current-cursor (get-in room-entities [:cursor :current])]
|
current-cursor (get-in room-entities [:cursor :current])]
|
||||||
|
|
||||||
(log/info "chose inventory item" selected-item)
|
(log/info "chose inventory item" selected-item)
|
||||||
(if selected-item
|
(println selected-item hovered-item dragged?)
|
||||||
(if (= :main current-cursor)
|
(cond (not selected-item)
|
||||||
(do (screen! @(resolve 'advent.screens.scene/scene) :on-chose-item :item selected-item)
|
(close screen entities false)
|
||||||
(close screen entities false))
|
|
||||||
(when-let [interaction-script ((or (:scripts selected-item) (constantly nil)) (:value current-cursor))]
|
(and (= selected-item hovered-item)
|
||||||
(interaction-script room-entities)
|
dragged?)
|
||||||
(close screen entities true)))
|
(dissoc entities :selected-item :dragged?)
|
||||||
(close screen entities false))))
|
|
||||||
|
(or (not hovered-item) (= selected-item hovered-item))
|
||||||
|
(do (screen! @(resolve 'advent.screens.scene/scene) :on-chose-item :item selected-item)
|
||||||
|
(close screen entities false))
|
||||||
|
:else
|
||||||
|
(when-let [interaction-script (or ((or (:scripts selected-item) (constantly nil)) (:value hovered-item))
|
||||||
|
(actions/get-script entities (actions/talk entities :ego "I'm not sure how those go together.")))]
|
||||||
|
(interaction-script room-entities)
|
||||||
|
(close screen entities true)))))
|
||||||
|
|
||||||
(defn right-click [screen {:keys [selected-item] :as entities} ]
|
(defn right-click [screen {:keys [selected-item] :as entities} ]
|
||||||
(let [
|
(let [
|
||||||
|
|||||||
Reference in New Issue
Block a user