This commit is contained in:
2015-02-21 10:02:40 -08:00
parent a579779ec7
commit 201a428d7d

View File

@@ -613,22 +613,47 @@
:hud-active? (fn [{:keys [hud-active?]} [entities]]
(assoc-in entities [:state :hud-active?] hud-active?)))
(defn grow-hud [screen entities target up?]
(let [grow-or-shrink (if up? :grow :shrink)
scale-from (if up? 1.0 1.1)
scale-to (if up? 1.1 1.0)
opacity-from (if up? 0.8 1.0)
opacity-to (if up? 1.0 0.8)]
(if (and (not (get-in entities [:tweens [target grow-or-shrink :x]]))
(not= scale-to (get-in entities [target :scale-y] 1.0)))
(-> entities
(assoc-in [:tweens [target grow-or-shrink :y]]
(tween/tween [target grow-or-shrink :y] screen [target :scale-y] scale-from scale-to 0.15 :ease tween/ease-in-out-quadratic))
(assoc-in [:tweens [target grow-or-shrink :x]]
(tween/tween [target grow-or-shrink :x] screen [target :scale-x] scale-from scale-to 0.15 :ease tween/ease-in-out-quadratic))
(assoc-in [:tweens [target grow-or-shrink :opacity]]
(tween/tween [target grow-or-shrink :opacity] screen [target :opacity] opacity-from opacity-to 0.15 :ease tween/ease-in-out-quadratic)))
entities)))
(defscreen hud
:on-show
(fn [screen entities]
(let [screen (assoc screen :total-time 0)]
(utils/setup-viewport screen 320 240)
{:close (assoc (texture "close.png") :x 304 :y 224 :width 16 :height 16 :baseline 9000)
{:close (assoc (texture "close.png")
:x 304 :y 224
:width 16 :height 16
:baseline 9000
:opacity 0.8)
:inventory (assoc (texture "inventory.png") :x 278 :y 0 :baseline 9000
:mouse-in? (zone/box 278 0 320 42))
:fps (assoc (label "0" (color :white) ) :x 5 :baseline 0)}))
:mouse-in? (zone/box 278 0 320 42)
:opacity 0.8)
:fps (assoc (label "0" (color :white) ) :x 5 :baseline 0 :opacity 0.3)}))
:on-render
(fn [screen [entities]]
(label! (:fps entities) :set-text (str (game :fps)))
(render! screen [(:fps entities) (:inventory entities) (:close entities)])
entities)
(let [entities (utils/apply-tweens screen entities (:tweens entities))]
(label! (:fps entities) :set-text (str (game :fps)))
(render! screen [(:fps entities) (:inventory entities) (:close entities)])
entities))
:on-resize
(fn [screen entities]
@@ -636,9 +661,22 @@
:on-mouse-moved
(fn [screen [entities]]
(let [[x y] (utils/unproject screen)]
(screen! scene :hud-active? :hud-active? (or ((:mouse-in? (:inventory entities)) x y)
(utils/intersects? (:close entities) [x y])))))
(let [[x y] (utils/unproject screen)
hovered-inventory? ((:mouse-in? (:inventory entities)) x y)
hovered-close? (utils/intersects? (:close entities) [x y])]
(screen! scene :hud-active? :hud-active? (or hovered-close? hovered-inventory?))
(cond hovered-inventory?
(grow-hud screen entities :inventory true)
hovered-close?
(grow-hud screen entities :close true)
:else
(let [entities (update-in entities [:tweens] dissoc :inventory-grow-x :inventory-grow-y)
entities (grow-hud screen entities :inventory false)
entities (grow-hud screen entities :close false)]
entities
))))
:on-touch-up