indicates uninteractable ui.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -438,5 +438,3 @@
|
||||
:on-resize (fn [{:keys [viewport width height]} [entities]]
|
||||
(.update viewport width height false)
|
||||
nil))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user