hourglass when script cannot be ended.

This commit is contained in:
Bryce Covert
2015-08-13 22:16:31 -07:00
parent ac3b8665ef
commit ffa264eb7b
14 changed files with 109 additions and 68 deletions

View File

@@ -54,12 +54,17 @@
(reify IAction
(get-channel [_] c#)
~@forms))
(reset! ~entities (<!! c#)))))
(let [result# (<!! c#)]
(if (= :end result#)
(do
(println "ending script")
(throw (ex-info "User quit script" {:type :end-script})))
(reset! ~entities result#))))))
(defn change-script-state [entities state]
(run-action entities
(begin [this screen entities]
(assoc-in entities [:actions :script-running?] state))
(update-in entities [:actions] assoc :script-running? state :last-skip-type (if state :end nil)))
(continue [this screen entities] entities)
@@ -69,7 +74,7 @@
(terminate [this screen entities]
entities)
(skip-type [this screen entities]
:none)))
:skip)))
(defmacro get-script [entities & forms]
`(fn [starting-entities#]
@@ -172,7 +177,7 @@
(terminate [this screen entities]
entities)
(skip-type [this screen entities]
:none)))
:skip)))
@@ -271,7 +276,7 @@
(terminate [this screen entities] entities)
(skip-type [this screen entities] :none)))
(defn walk-to [entities target-id [final-x final-y] & {:keys [skip-type face force-dir]}]
(defn walk-to [entities target-id [final-x final-y] & {:keys [skip-type face force-dir stop?] :or {stop? true}}]
(let [{start-x :x start-y :y} (get-in @entities [:room :entities target-id])
final-x (int final-x)
final-y (int final-y)
@@ -330,7 +335,9 @@
(< (utils/dist final-x final-y from-x from-y) 1)))
(terminate [this screen entities]
(stop screen entities target-id :face face))
(if stop?
(stop screen entities target-id :face face)
entities))
(skip-type [this screen entities]
(or skip-type :none)))
(do-stop entities :ego :face face))))
@@ -425,7 +432,7 @@
(screen! @(resolve 'advent.screens.scene/scene) :on-reactivate)
entities)
(skip-type [this screen entities]
:none))
:skip))
(let [zipper (nth-child zipper @selected-index)
node (zip/node zipper)]