preparing for quittable scripts.
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
(done? [this screen entities])
|
(done? [this screen entities])
|
||||||
(continue [this screen entities])
|
(continue [this screen entities])
|
||||||
(terminate [this screen entities])
|
(terminate [this screen entities])
|
||||||
(can-skip? [this screen entities])
|
(skip-type [this screen entities])
|
||||||
(get-channel [this]))
|
(get-channel [this]))
|
||||||
|
|
||||||
(defn has-item? [entities item]
|
(defn has-item? [entities item]
|
||||||
@@ -68,8 +68,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defmacro get-script [entities & forms]
|
(defmacro get-script [entities & forms]
|
||||||
`(fn [starting-entities#]
|
`(fn [starting-entities#]
|
||||||
@@ -171,8 +171,8 @@
|
|||||||
(done? [this screen entities] true)
|
(done? [this screen entities] true)
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -223,8 +223,8 @@
|
|||||||
(if (or (nil? stop?) stop?)
|
(if (or (nil? stop?) stop?)
|
||||||
(stop screen entities target-id :face face)
|
(stop screen entities target-id :face face)
|
||||||
entities))
|
entities))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))))
|
:none))))
|
||||||
|
|
||||||
(defn play-animation [entities target-id anim & {:keys [stop? continue?]}]
|
(defn play-animation [entities target-id anim & {:keys [stop? continue?]}]
|
||||||
(run-action entities
|
(run-action entities
|
||||||
@@ -244,8 +244,8 @@
|
|||||||
(if (or (nil? stop?) stop?)
|
(if (or (nil? stop?) stop?)
|
||||||
(stop screen entities target-id)
|
(stop screen entities target-id)
|
||||||
(assoc-in entities [:room :entities target-id :anim] nil))))
|
(assoc-in entities [:room :entities target-id :anim] nil))))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn update-entity [entities target-id f]
|
(defn update-entity [entities target-id f]
|
||||||
(run-action entities
|
(run-action entities
|
||||||
@@ -257,7 +257,7 @@
|
|||||||
(done? [this screen entities] true)
|
(done? [this screen entities] true)
|
||||||
|
|
||||||
(terminate [this screen entities] entities)
|
(terminate [this screen entities] entities)
|
||||||
(can-skip? [this screen entities] false)))
|
(skip-type [this screen entities] :none)))
|
||||||
|
|
||||||
(defn stop-walking [entities target-id & {:keys [face]}]
|
(defn stop-walking [entities target-id & {:keys [face]}]
|
||||||
(run-action entities
|
(run-action entities
|
||||||
@@ -269,9 +269,9 @@
|
|||||||
(done? [this screen entities] true)
|
(done? [this screen entities] true)
|
||||||
|
|
||||||
(terminate [this screen entities] entities)
|
(terminate [this screen entities] entities)
|
||||||
(can-skip? [this screen entities] false)))
|
(skip-type [this screen entities] :none)))
|
||||||
|
|
||||||
(defn walk-to [entities target-id [final-x final-y] & {:keys [can-skip? face force-dir]}]
|
(defn walk-to [entities target-id [final-x final-y] & {:keys [skip-type face force-dir]}]
|
||||||
(let [{start-x :x start-y :y} (get-in @entities [:room :entities target-id])
|
(let [{start-x :x start-y :y} (get-in @entities [:room :entities target-id])
|
||||||
final-x (int final-x)
|
final-x (int final-x)
|
||||||
final-y (int final-y)
|
final-y (int final-y)
|
||||||
@@ -331,8 +331,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
(stop screen entities target-id :face face))
|
(stop screen entities target-id :face face))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
(or can-skip? false)))
|
(or skip-type :none)))
|
||||||
(do-stop entities :ego :face face))))
|
(do-stop entities :ego :face face))))
|
||||||
|
|
||||||
(defn get-text-duration [text]
|
(defn get-text-duration [text]
|
||||||
@@ -385,8 +385,8 @@
|
|||||||
(stop screen entities target-id)
|
(stop screen entities target-id)
|
||||||
entities))
|
entities))
|
||||||
entities))
|
entities))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
true))))
|
:skip))))
|
||||||
|
|
||||||
(defn something-else [zipper]
|
(defn something-else [zipper]
|
||||||
(-> zipper zip/up zip/up))
|
(-> zipper zip/up zip/up))
|
||||||
@@ -424,8 +424,8 @@
|
|||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
(screen! @(resolve 'advent.screens.scene/scene) :on-reactivate)
|
(screen! @(resolve 'advent.screens.scene/scene) :on-reactivate)
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))
|
:none))
|
||||||
|
|
||||||
(let [zipper (nth-child zipper @selected-index)
|
(let [zipper (nth-child zipper @selected-index)
|
||||||
node (zip/node zipper)]
|
node (zip/node zipper)]
|
||||||
@@ -448,8 +448,8 @@
|
|||||||
(done? [this screen entities] true)
|
(done? [this screen entities] true)
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn pause-camera [entities]
|
(defn pause-camera [entities]
|
||||||
(update-entities entities #(-> %
|
(update-entities entities #(-> %
|
||||||
@@ -468,8 +468,8 @@
|
|||||||
(done? [this screen entities] true)
|
(done? [this screen entities] true)
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -489,8 +489,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn play-sound [entities sound-file]
|
(defn play-sound [entities sound-file]
|
||||||
(let [m (music sound-file)]
|
(let [m (music sound-file)]
|
||||||
@@ -506,8 +506,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))))
|
:none))))
|
||||||
|
|
||||||
(defn give [entities item]
|
(defn give [entities item]
|
||||||
(run-action entities
|
(run-action entities
|
||||||
@@ -525,8 +525,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn remove-entity [entities entity]
|
(defn remove-entity [entities entity]
|
||||||
(run-action entities
|
(run-action entities
|
||||||
@@ -539,8 +539,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities] entities)
|
(terminate [this screen entities] entities)
|
||||||
|
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none )))
|
||||||
|
|
||||||
(defn add-entity [entities id entity]
|
(defn add-entity [entities id entity]
|
||||||
(run-action entities
|
(run-action entities
|
||||||
@@ -553,8 +553,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities] entities)
|
(terminate [this screen entities] entities)
|
||||||
|
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn get-music [music time]
|
(defn get-music [music time]
|
||||||
(if (keyword? music)
|
(if (keyword? music)
|
||||||
@@ -586,8 +586,8 @@
|
|||||||
(music! (utils/get-current-music entities) :play)
|
(music! (utils/get-current-music entities) :play)
|
||||||
entities))
|
entities))
|
||||||
|
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))))
|
:none))))
|
||||||
|
|
||||||
|
|
||||||
(defn transition-background [entities new-background [x y] & {:keys [transition-music? between time face]}]
|
(defn transition-background [entities new-background [x y] & {:keys [transition-music? between time face]}]
|
||||||
@@ -624,8 +624,8 @@
|
|||||||
(if-let [stop-fn (get-in entities [:room :stop-fn])]
|
(if-let [stop-fn (get-in entities [:room :stop-fn])]
|
||||||
(stop-fn screen entities)
|
(stop-fn screen entities)
|
||||||
entities)))
|
entities)))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))
|
:none))
|
||||||
(run-action entities
|
(run-action entities
|
||||||
(begin [this screen entities]
|
(begin [this screen entities]
|
||||||
(let [ego (get-in entities [:room :entities :ego])
|
(let [ego (get-in entities [:room :entities :ego])
|
||||||
@@ -674,8 +674,8 @@
|
|||||||
(add-timer! screen k start time))
|
(add-timer! screen k start time))
|
||||||
entities)
|
entities)
|
||||||
|
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))))
|
:none))))
|
||||||
|
|
||||||
(defn do-dialogue [entities & pairs]
|
(defn do-dialogue [entities & pairs]
|
||||||
(loop [pairs (partition 2 pairs)]
|
(loop [pairs (partition 2 pairs)]
|
||||||
@@ -739,8 +739,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))
|
:none))
|
||||||
(Thread/sleep 800)
|
(Thread/sleep 800)
|
||||||
(actions/run-action entities
|
(actions/run-action entities
|
||||||
(begin [this screen entities]
|
(begin [this screen entities]
|
||||||
@@ -759,8 +759,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
|
|
||||||
(defn in-love [entities]
|
(defn in-love [entities]
|
||||||
|
|||||||
@@ -140,8 +140,8 @@
|
|||||||
(-> entities
|
(-> entities
|
||||||
(update-in [:room :entities] dissoc :bloodclot)
|
(update-in [:room :entities] dissoc :bloodclot)
|
||||||
(assoc-in [:tweens :flash] (tween/tween :flash screen [:white-fade :opacity] 0.0 1.0 0.2 :ease tween/ease-in-cubic))))
|
(assoc-in [:tweens :flash] (tween/tween :flash screen [:white-fade :opacity] 0.0 1.0 0.2 :ease tween/ease-in-cubic))))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))
|
:none))
|
||||||
(actions/run-action entities
|
(actions/run-action entities
|
||||||
(begin [this screen entities]
|
(begin [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
@@ -154,8 +154,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))
|
:none))
|
||||||
|
|
||||||
(actions/run-action entities
|
(actions/run-action entities
|
||||||
(begin [this screen entities]
|
(begin [this screen entities]
|
||||||
@@ -169,8 +169,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
(update-in entities [:room :entities :ego] dissoc :stand-override))
|
(update-in entities [:room :entities :ego] dissoc :stand-override))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn win []
|
(defn win []
|
||||||
(actions/get-script entities
|
(actions/get-script entities
|
||||||
|
|||||||
@@ -52,8 +52,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
(defn fade-in-tools [entities]
|
(defn fade-in-tools [entities]
|
||||||
(actions/run-action entities
|
(actions/run-action entities
|
||||||
(begin [this screen entities]
|
(begin [this screen entities]
|
||||||
@@ -69,8 +69,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
|
|
||||||
(defn face-fairy [entities]
|
(defn face-fairy [entities]
|
||||||
@@ -255,8 +255,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
(actions/stop screen entities :ego))
|
(actions/stop screen entities :ego))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn return-from-island [screen entities]
|
(defn return-from-island [screen entities]
|
||||||
(when (and (not (get-in entities [:actions :script-running?]))
|
(when (and (not (get-in entities [:actions :script-running?]))
|
||||||
|
|||||||
@@ -69,8 +69,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
|
|
||||||
(defn nice-trophy-dialogue [entities]
|
(defn nice-trophy-dialogue [entities]
|
||||||
|
|||||||
@@ -72,8 +72,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false)))
|
:none)))
|
||||||
|
|
||||||
(defn swing-at-blergh [entities]
|
(defn swing-at-blergh [entities]
|
||||||
(let [jump-path (bezier (map #(apply vector-2* %) [[35 45] [110 145] [195 180]]))
|
(let [jump-path (bezier (map #(apply vector-2* %) [[35 45] [110 145] [195 180]]))
|
||||||
@@ -127,8 +127,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
(assoc-in entities [:room :entities :ego :move-pct] 0.0))
|
(assoc-in entities [:room :entities :ego :move-pct] 0.0))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))
|
:none))
|
||||||
|
|
||||||
(actions/run-action entities
|
(actions/run-action entities
|
||||||
(begin [this screen entities]
|
(begin [this screen entities]
|
||||||
@@ -153,9 +153,9 @@
|
|||||||
(-> entities
|
(-> entities
|
||||||
(assoc-in [:room :entities :ego :move-pct] 0.0)
|
(assoc-in [:room :entities :ego :move-pct] 0.0)
|
||||||
(update-in [:room :entities :ego] #(actions/start-animation screen % :pant))))
|
(update-in [:room :entities :ego] #(actions/start-animation screen % :pant))))
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
|
|
||||||
false))
|
:none))
|
||||||
(actions/run-action entities
|
(actions/run-action entities
|
||||||
(begin [this screen entities]
|
(begin [this screen entities]
|
||||||
(assoc-in entities [:tweens :flash] (tween/tween :flash screen [:white-fade :opacity] 1.0 0.0 3.0 :ease tween/ease-in-quadratic)))
|
(assoc-in entities [:tweens :flash] (tween/tween :flash screen [:white-fade :opacity] 1.0 0.0 3.0 :ease tween/ease-in-quadratic)))
|
||||||
@@ -168,8 +168,8 @@
|
|||||||
|
|
||||||
(terminate [this screen entities]
|
(terminate [this screen entities]
|
||||||
entities)
|
entities)
|
||||||
(can-skip? [this screen entities]
|
(skip-type [this screen entities]
|
||||||
false))))
|
:none))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ void main()
|
|||||||
(def default-interaction
|
(def default-interaction
|
||||||
{:get-script (fn [cursor [x y]] (if (= :main cursor)
|
{:get-script (fn [cursor [x y]] (if (= :main cursor)
|
||||||
(actions/get-script entities
|
(actions/get-script entities
|
||||||
(actions/walk-to entities :ego [x y] :can-skip? true))
|
(actions/walk-to entities :ego [x y] :skip-type :skip))
|
||||||
(actions/get-script entities
|
(actions/get-script entities
|
||||||
(actions/talk entities :ego "I don't know what to do with that."))))})
|
(actions/talk entities :ego "I don't know what to do with that."))))})
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ void main()
|
|||||||
current-action (get-in entities [:actions :current])
|
current-action (get-in entities [:actions :current])
|
||||||
|
|
||||||
;; TODO - hacky way of resetting queue
|
;; TODO - hacky way of resetting queue
|
||||||
entities (if (and current-action (actions/can-skip? current-action screen entities))
|
entities (if (and current-action (= :skip (actions/skip-type current-action screen entities)))
|
||||||
(let [terminated-entities (actions/terminate current-action screen entities)]
|
(let [terminated-entities (actions/terminate current-action screen entities)]
|
||||||
(do (put! (actions/get-channel current-action) terminated-entities)
|
(do (put! (actions/get-channel current-action) terminated-entities)
|
||||||
(-> terminated-entities
|
(-> terminated-entities
|
||||||
|
|||||||
Reference in New Issue
Block a user