From 2d042e5efe3255f03c076195ddb1f76052087248 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Thu, 5 Nov 2015 21:39:04 -0800 Subject: [PATCH] indicates uninteractable ui. --- desktop/src-common/advent/screens/scene.clj | 32 +++++++++++++++++---- desktop/src-common/advent/screens/title.clj | 2 -- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 56c23719..447d1e92 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -1323,6 +1323,12 @@ void main () (.update viewport width height true)) ) +(defn hud-interactable? [] + (let [[scene-entities] (-> scene :entities deref)] + (and (not (get-in scene-entities [:actions :script-running?])) + (get-in scene-entities [:state :active?]) + (= 0.0 (get-in scene-entities [:fade :opacity]))))) + (defscreen hud :on-show (fn [screen entities] @@ -1347,9 +1353,25 @@ void main () :on-render (fn [{:keys [^FitViewport viewport] :as screen} [entities]] (.apply viewport) - (let [entities (utils/apply-tweens screen entities (:tweens entities))] + (let [entities (utils/apply-tweens screen entities (:tweens entities)) + hud-interactable? (hud-interactable?) + entities (if hud-interactable? + (as-> entities entities + (update-in entities [:save] assoc :r 1.0 :g 1.0 :b 1.0 ) + (update-in entities [:inventory] assoc :r 1.0 :g 1.0 :b 1.0 )) + (as-> entities entities + (update-in entities [:save] assoc :r 0.75 :g 0.75 :b 0.75) + (update-in entities [:inventory] assoc :r 0.75 :g 0.75 :b 0.75) + (grow-hud screen entities :save false) + (grow-hud screen entities :inventory false)))] #_(label! (:fps entities) :set-text (str (game :fps))) - (render! screen [ (:save entities) (:inventory entities) (:close entities)]) + (render! screen [ (if hud-interactable? + (:save entities) + (assoc (:save entities) :opacity 0.5)) + (if hud-interactable? + (:inventory entities) + (assoc (:inventory entities) :opacity 0.5)) + (:close entities)]) entities)) :on-resize @@ -1363,13 +1385,13 @@ void main () 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?)) - (cond hovered-inventory? + (cond (and hovered-inventory? (hud-interactable?)) (grow-hud screen entities :inventory true) hovered-close? (grow-hud screen entities :close true) - hovered-save? + (and hovered-save? (hud-interactable?)) (grow-hud screen entities :save true) :else @@ -1391,7 +1413,7 @@ void main () (utils/intersects? (:close entities) [x y]) (screen! scene :on-menu) - (utils/intersects? (:save entities) [x y]) + (and (utils/intersects? (:save entities) [x y]) (hud-interactable?)) (screen! scene :on-save) :else diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index 577890e8..57c2dbdf 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -438,5 +438,3 @@ :on-resize (fn [{:keys [viewport width height]} [entities]] (.update viewport width height false) nil)) - -