water sounds nice.

This commit is contained in:
2015-05-29 20:04:11 -07:00
parent 0045dbcde7
commit 59a2df0788
6 changed files with 53 additions and 24 deletions

View File

@@ -81,6 +81,9 @@
(actions/walk-straight-to entities :ego [142 96])
(actions/talk entities :ego "This must be Frankie Rockfist's secret stash!")))
(defn fountain-vol [entities]
(utils/proximity-volume entities [172 120] :scale 0.5))
(defn make [screen]
(let [guard-sheet (texture! (texture "inside-cafeteria/ladder-guard.png") :split 37 87)
guard-stand (animation 0.1 [(aget guard-sheet 0 0)])
@@ -192,6 +195,8 @@
:y 140
:baseline 114)
:axe (assoc (texture "outside-jail/axe.png") :x 213 :y 63 :baseline 176 :night-profile :sprite)}
:fountain-sound {:sound (sound "outside-jail/fountain-2.ogg")
:id nil}
@@ -224,11 +229,24 @@
:collision "outside-jail/collision.png"
:scale-fn (utils/scaler-fn-with-baseline 40 0.001 1.3)
:start-pos [145 15]
:update-fn (fn [_ entities]
(when-let [fountain-sound-id (get-in entities [:room :fountain-sound :id])]
(sound! (get-in entities [:room :fountain-sound :sound]) :set-volume fountain-sound-id (fountain-vol entities)))
entities)
:stop-fn (fn [_ entities]
(when-let [fountain-sound-id (get-in entities [:room :fountain-sound :id])]
(sound! (get-in entities [:room :fountain-sound :sound]) :stop fountain-sound-id))
entities)
:apply-state (fn [_ entities]
(as-> entities entities
(if (= :night (get-in entities [:state :time]))
(make-night entities)
entities)
(if (get-in entities [:state :dropped-ball?])
(update-in entities [:room :entities :guard] #(actions/start-animation % :sleep))
entities))))))
(assoc-in entities [:room :fountain-sound :id] (sound! (get-in entities [:room :fountain-sound :sound]) :loop (fountain-vol entities)))
(if (= :night (get-in entities [:state :time]))
(make-night entities)
entities)
(if (get-in entities [:state :dropped-ball?])
(update-in entities [:room :entities :guard] #(actions/start-animation % :sleep))
entities))))))

View File

@@ -654,17 +654,11 @@ void main()
((set (keys anim-sound-frames)) anim))
(when-let [[snd vol-scale] (get-in anim-sound-frames [anim current-frame-index])]
(let [vol (if (= target :ego)
(* (/ (get-in entities [:room :entities :ego :scale-x]) 1.5) 0.75)
(max 0.0
(- 1.0 (/ (utils/dist x y
(get-in entities [:room :entities :ego :x])
(get-in entities [:room :entities :ego :y])
:y-sign 2.0
:x-sign (/ 1.0 (get-in entities [:room :entities :ego :scale-x])))
175.0))))
pan (/ (- (:x e) 160 ) 160)
vol (* vol vol-scale)
vol (max vol 0.005)]
(-> (* (/ (get-in entities [:room :entities :ego :scale-x]) 1.5) 0.75)
(* (or vol-scale 1.0))
(utils/clamp-volume))
(utils/proximity-volume entities [x y] :scale vol-scale))
pan (/ (- (:x e) 160 ) 160)]
(sound! (or (snd e)
(snd (:sounds entities))) :play (utils/current-sound-volume vol) 1.0 pan))))))