From 2837f9ed4bf0d409665f14dc0e4ece19aae5fbce Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Tue, 11 Apr 2017 06:23:26 -0700 Subject: [PATCH] fixing bugs. --- desktop/src-common/advent/actions.clj | 15 ++++++------ desktop/src-common/advent/screens/scene.clj | 27 +++++++++++++++------ desktop/src-common/advent/utils.clj | 3 ++- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj index e22613d9..dfcf9c10 100644 --- a/desktop/src-common/advent/actions.clj +++ b/desktop/src-common/advent/actions.clj @@ -187,14 +187,15 @@ (defn start-animation ([entity anim] - (start-animation {:total-time 0} entity anim)) + (start-animation {:total-time 0} entity anim)) ([screen entity anim] - (let [new-anim (find-animation entity anim)] - (if (and anim (not= new-anim (:anim entity))) - (assoc entity - :anim new-anim - :anim-start (:total-time screen)) - entity)))) + (let [new-anim (find-animation entity anim)] + (if (and anim (not= new-anim (:anim entity))) + (assoc entity + :force-rerender true + :anim new-anim + :anim-start (:total-time screen)) + entity)))) (defn stop [screen entities target-id & {:keys [face]}] (update-in entities [:room :entities target-id] (comp #(start-animation screen % (or (:stand-override %) :stand) ) (if face #(assoc % :facing face) identity)))) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 7caeb3ef..acd6cfb1 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -855,10 +855,12 @@ (if anim-loop? (get-looped-animation-point anim last-animated-time) last-animated-time))] - (if (= current-frame-index (:current-frame-index entity) (:previous-frame-index entity)) + (if (and (= current-frame-index (:current-frame-index entity) (:previous-frame-index entity)) + (not (:force-rerender entity))) entity (merge (assoc entity :object (.getKeyFrame ^Animation anim (- total-time anim-start) anim-loop?) + :force-rerender nil :current-frame-index current-frame-index :previous-frame-index previous-frame-index :origin-x (or (-> entity :anim-origins (get anim) (nth 0)) @@ -1819,6 +1821,15 @@ :else nil)) + +(defn update-hud-active [screen entities options] + (let [[x y] (utils/unproject screen options) + hovered-inventory? (utils/intersects? (:inventory entities) [x y]) + hovered-close? (utils/intersects? (:close entities) [x y]) + hovered-save? (utils/intersects? (:save entities) [x y])] + + (screen! scene :hud-active? { :hud-active? (or hovered-close? hovered-inventory? hovered-save?)}))) + (defscreen hud :on-show (fn [screen entities options] @@ -1959,16 +1970,17 @@ :on-touch-down (fn [screen entities options] - (let [[x y] (utils/unproject screen options) - hovered-inventory? (utils/intersects? (:inventory entities) [x y]) - hovered-close? (utils/intersects? (:close entities) [x y]) - hovered-save? (utils/intersects? (:save entities) [x y])] + (update-hud-active screen entities options)) + + :on-touch-dragged + (fn [screen entities options] + (update-hud-active screen entities options)) - (screen! scene :hud-active? { :hud-active? (or hovered-close? hovered-inventory? hovered-save?)}))) :on-mouse-moved (fn [screen entities options] + (update-hud-active screen entities options) (let [[x y] (utils/unproject screen options) hovered-inventory? (utils/intersects? (:inventory entities) [x y]) hovered-close? (utils/intersects? (:close entities) [x y]) @@ -1994,8 +2006,7 @@ entities) entities (grow-hud screen entities :close false) entities (grow-hud screen entities :save false)] - entities - )))) + entities)))) :on-touch-up diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index 93995232..ca9df125 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -524,7 +524,8 @@ (get-in entities [:state :hud-active?]) (-> entities - (assoc-in [:cursor :override] nil)) + (assoc-in [:cursor :override] nil) + (assoc-in [:label :text] "")) (and mouse-override (:only-script mouse-override)) (-> entities