indicates uninteractable ui.
This commit is contained in:
@@ -1323,6 +1323,12 @@ void main ()
|
|||||||
(.update viewport width height true))
|
(.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
|
(defscreen hud
|
||||||
:on-show
|
:on-show
|
||||||
(fn [screen entities]
|
(fn [screen entities]
|
||||||
@@ -1347,9 +1353,25 @@ void main ()
|
|||||||
:on-render
|
:on-render
|
||||||
(fn [{:keys [^FitViewport viewport] :as screen} [entities]]
|
(fn [{:keys [^FitViewport viewport] :as screen} [entities]]
|
||||||
(.apply viewport)
|
(.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)))
|
#_(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))
|
entities))
|
||||||
|
|
||||||
:on-resize
|
:on-resize
|
||||||
@@ -1363,13 +1385,13 @@ void main ()
|
|||||||
hovered-close? (utils/intersects? (:close entities) [x y])
|
hovered-close? (utils/intersects? (:close entities) [x y])
|
||||||
hovered-save? (utils/intersects? (:save entities) [x y])]
|
hovered-save? (utils/intersects? (:save entities) [x y])]
|
||||||
(screen! scene :hud-active? :hud-active? (or hovered-close? hovered-inventory? hovered-save?))
|
(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)
|
(grow-hud screen entities :inventory true)
|
||||||
|
|
||||||
hovered-close?
|
hovered-close?
|
||||||
(grow-hud screen entities :close true)
|
(grow-hud screen entities :close true)
|
||||||
|
|
||||||
hovered-save?
|
(and hovered-save? (hud-interactable?))
|
||||||
(grow-hud screen entities :save true)
|
(grow-hud screen entities :save true)
|
||||||
|
|
||||||
:else
|
:else
|
||||||
@@ -1391,7 +1413,7 @@ void main ()
|
|||||||
(utils/intersects? (:close entities) [x y])
|
(utils/intersects? (:close entities) [x y])
|
||||||
(screen! scene :on-menu)
|
(screen! scene :on-menu)
|
||||||
|
|
||||||
(utils/intersects? (:save entities) [x y])
|
(and (utils/intersects? (:save entities) [x y]) (hud-interactable?))
|
||||||
(screen! scene :on-save)
|
(screen! scene :on-save)
|
||||||
|
|
||||||
:else
|
:else
|
||||||
|
|||||||
@@ -438,5 +438,3 @@
|
|||||||
:on-resize (fn [{:keys [viewport width height]} [entities]]
|
:on-resize (fn [{:keys [viewport width height]} [entities]]
|
||||||
(.update viewport width height false)
|
(.update viewport width height false)
|
||||||
nil))
|
nil))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user