looking better on an inventory front.

This commit is contained in:
Bryce Covert
2016-08-02 13:22:14 -07:00
parent 4966737a07
commit b4a66dafc0

View File

@@ -6,6 +6,7 @@
[clojure.tools.logging :as log]
[clojure.pprint]
[advent.pathfind]
[advent.actions :as actions]
[advent.zone :as zone]
[advent.tween :as tween]
[advent.utils :as utils])
@@ -37,8 +38,9 @@
(-> entities
(assoc-in [:items selected-item :x] (- x 32))
(assoc-in [:items selected-item :y] (- y 32))
(assoc :dragged? true)
(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]]
@@ -46,7 +48,7 @@
hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))]
(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)
:entities
deref
@@ -54,14 +56,22 @@
current-cursor (get-in room-entities [:cursor :current])]
(log/info "chose inventory item" selected-item)
(if selected-item
(if (= :main current-cursor)
(do (screen! @(resolve 'advent.screens.scene/scene) :on-chose-item :item selected-item)
(close screen entities false))
(when-let [interaction-script ((or (:scripts selected-item) (constantly nil)) (:value current-cursor))]
(interaction-script room-entities)
(close screen entities true)))
(close screen entities false))))
(println selected-item hovered-item dragged?)
(cond (not selected-item)
(close screen entities false)
(and (= selected-item hovered-item)
dragged?)
(dissoc entities :selected-item :dragged?)
(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} ]
(let [