shitty, but effective way of getting footstep sounds.
This commit is contained in:
@@ -160,6 +160,7 @@
|
|||||||
:origin-x 9
|
:origin-x 9
|
||||||
:origin-y 0
|
:origin-y 0
|
||||||
:scaled true
|
:scaled true
|
||||||
|
:step-sound (sound "ego/step.ogg")
|
||||||
|
|
||||||
:mouse-in? (fn [entities x y]
|
:mouse-in? (fn [entities x y]
|
||||||
(let [{entity-x :x entity-y :y region :object scale :scale-x} (get-in entities [:room :entities :ego])
|
(let [{entity-x :x entity-y :y region :object scale :scale-x} (get-in entities [:room :entities :ego])
|
||||||
@@ -215,6 +216,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defn get-animation-point [animation total-time]
|
||||||
|
(loop [time total-time]
|
||||||
|
(if (> (- time (animation! animation :get-animation-duration)) 0)
|
||||||
|
(recur (- time (animation! animation :get-animation-duration)))
|
||||||
|
time)))
|
||||||
(defn animate [entity screen]
|
(defn animate [entity screen]
|
||||||
(merge entity (animation->texture (update-in screen [:total-time] #(- % (:anim-start entity)))
|
(merge entity (animation->texture (update-in screen [:total-time] #(- % (:anim-start entity)))
|
||||||
(:anim entity))))
|
(:anim entity))))
|
||||||
@@ -284,6 +290,7 @@
|
|||||||
(clear!)
|
(clear!)
|
||||||
(let [entities (update-cursor screen entities)
|
(let [entities (update-cursor screen entities)
|
||||||
entities (update-from-script screen entities)
|
entities (update-from-script screen entities)
|
||||||
|
entities (assoc-in entities [:room :entities :ego :last-frame] (get-in entities [:room :entities :ego :object]))
|
||||||
entities (update-in entities [:room :entities] (fn [entities]
|
entities (update-in entities [:room :entities] (fn [entities]
|
||||||
(into entities
|
(into entities
|
||||||
(for [[id entity] entities]
|
(for [[id entity] entities]
|
||||||
@@ -296,7 +303,15 @@
|
|||||||
(if (:update-fn entity)
|
(if (:update-fn entity)
|
||||||
[id ((:update-fn entity) screen entities entity)]
|
[id ((:update-fn entity) screen entities entity)]
|
||||||
[id entity])))))
|
[id entity])))))
|
||||||
|
current-frame (get-in entities [:room :entities :ego :object])
|
||||||
|
|
||||||
all-entities (concat (vals entities) (get-in entities [:room :layers]) (vals (get-in entities [:room :entities])))]
|
all-entities (concat (vals entities) (get-in entities [:room :layers]) (vals (get-in entities [:room :entities])))]
|
||||||
|
(when (and (not= current-frame (get-in entities [:room :entities :ego :last-frame]))
|
||||||
|
(or (= (get-in entities [:room :entities :ego :anim]) (get-in entities [:room :entities :ego :left :walk]))
|
||||||
|
(= (get-in entities [:room :entities :ego :anim]) (get-in entities [:room :entities :ego :right :walk])))
|
||||||
|
(#{2 6}
|
||||||
|
(texture! (get-in entities [:room :entities :ego :anim]) :get-key-frame-index (get-animation-point (get-in entities [:room :entities :ego :anim]) (- (:total-time screen) (get-in entities [:room :entities :ego :anim-start]))))))
|
||||||
|
(sound! (get-in entities [:room :entities :ego :step-sound]) :play (/ (get-in entities [:room :entities :ego :scale-x]) 1.5)))
|
||||||
(label! (:fps entities) :set-text (str (game :fps)))
|
(label! (:fps entities) :set-text (str (game :fps)))
|
||||||
(render! screen (sort-by :baseline all-entities))
|
(render! screen (sort-by :baseline all-entities))
|
||||||
entities))
|
entities))
|
||||||
|
|||||||
Reference in New Issue
Block a user