multiple scritps, pt 3

This commit is contained in:
Bryce Covert
2015-11-19 18:51:05 -08:00
parent 5b12127ae3
commit 3c1d0171c9
3 changed files with 26 additions and 18 deletions

View File

@@ -102,6 +102,7 @@
(defn force-end [entities current-action key]
(do (put! (get-channel current-action) :end)
(screen! dialogue/talking-screen :stop-talk :id key)
(-> entities
(assoc-in [key :script-running?] false)
(assoc-in [key :current] nil)
@@ -386,7 +387,8 @@
(defn talk [entities target-id text & {:keys [stop? animate? anim wait color] :or {wait true}}]
(let [initial-time (atom nil)
stop? (if (nil? stop?) true stop?)
animate? (if (nil? animate?) true animate?)]
animate? (if (nil? animate?) true animate?)
fg-or-bg *fg-bg-key*]
(run-action entities
(begin [this screen entities]
(let [_ (swap! initial-time #(or % (:total-time screen)))
@@ -403,6 +405,7 @@
scale (get-in entities [:room :entities target-id :scale-y] 1)
height (* scale height)]
(screen! dialogue/talking-screen :on-talk :text text
:id fg-or-bg
:scene-viewport (:viewport screen)
:x target-x :y (+ target-y height)
:color (or color (get-in entities [:room :entities target-id :talk-color]))
@@ -425,7 +428,7 @@
(terminate [this screen entities]
(if wait
(do
(screen! dialogue/talking-screen :stop-talk :target-id target-id)
(screen! dialogue/talking-screen :stop-talk :id fg-or-bg)
(if stop?
(stop screen entities target-id)
entities))
@@ -691,7 +694,7 @@
entities)))
(skip-type [this screen entities]
:none))
(screen! dialogue/talking-screen :stop-talk)
(screen! dialogue/talking-screen :stop-talk :id :bg-actions)
(run-action entities
(begin [this screen entities]
(utils/stop-all-sounds! entities)

View File

@@ -50,7 +50,7 @@
entities)
:on-talk
(fn [{:keys [create-talk target-id color text x y scale scene-viewport] :as screen} [entities]]
(fn [{:keys [create-talk target-id color text x y scale scene-viewport id] :as screen} [entities]]
(let [font (bitmap-font "ego/font.fnt" )
p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg"))
_ (nine-patch! p :set-padding 25 25 5 15)
@@ -71,25 +71,30 @@
:source-x source-x :source-y source-y
)
x (- x (/ (label! talk :get-width) 2))
talk (assoc talk :x x :y y)
talk (assoc talk :x x :y y :id id)
talk (ensure-on-screen talk)]
(assoc entities :dialogue talk)))
(assoc entities id talk)))
:on-update-camera
(fn [{:keys [scene-viewport scene-camera viewport] :as screen} [ {:keys [dialogue] :as entities}]]
(when dialogue
(let [[x y] (scene-world->talk-world scene-viewport [(:source-x dialogue)
(:source-y dialogue)])]
(-> entities
(assoc-in [:dialogue :x] (- x (/ (label! dialogue :get-width) 2)))
(assoc-in [:dialogue :y] y)
(update-in [:dialogue] ensure-on-screen)
))))
(fn [{:keys [scene-viewport scene-camera viewport] :as screen} [ entities]]
(reduce-kv (fn [entities id e]
(if (:id e)
(let [[x y] (scene-world->talk-world scene-viewport [(:source-x e)
(:source-y e)])]
(-> entities
(assoc-in [id :x] (- x (/ (label! e :get-width) 2)))
(assoc-in [id :y] y)
(update-in [id] ensure-on-screen)))
entities))
entities
entities)
)
:stop-talk
(fn [{:keys [target-id] } [entities]]
(dissoc entities :dialogue))
(fn [{:keys [id] } [entities]]
(dissoc entities (or id :fg-actions)))
:on-resize (fn [{:keys [viewport width height]} entities]

View File

@@ -97,7 +97,7 @@
(update-in entities [:tweens] dissoc :coin-y)))
(actions/walk-straight-to entities :coin-flip [212 90] :update-baseline? false :speed 3.0)
(screen! dialogue/talking-screen :stop-talk :target-id :ego)
(screen! dialogue/talking-screen :stop-talk)
(actions/do-stop entities :ego)
(actions/walk-straight-to entities :coin-flip [210 105] :update-baseline? false :speed 1.0)