randomize dialogue antique.
This commit is contained in:
@@ -413,12 +413,17 @@
|
||||
(recur (inc so-far) (zip/right zipper)))))
|
||||
|
||||
(defn make-zipper [tree]
|
||||
(zip/zipper map? (comp #(map second %) #(filter first (partition 2 %)) :choices) (fn [n c] nil) tree))
|
||||
(zip/zipper map?
|
||||
#(apply concat (filter first (partition 2 (:choices %))))
|
||||
(fn [n c]
|
||||
(assoc n :choices (vec c)))
|
||||
tree))
|
||||
|
||||
(defn present-choices [entities choices]
|
||||
(loop [zipper (make-zipper choices)]
|
||||
(let [selected-index (atom nil)
|
||||
node (zip/node zipper)
|
||||
_ (clojure.pprint/pprint node)
|
||||
dialogue-choices (filter first (partition 2 (:choices node)))]
|
||||
(run-action entities
|
||||
(begin [this screen entities]
|
||||
@@ -438,16 +443,20 @@
|
||||
(skip-type [this screen entities]
|
||||
:skip))
|
||||
|
||||
(let [zipper (nth-child zipper @selected-index)
|
||||
node (zip/node zipper)]
|
||||
(let [zipper (nth-child zipper (inc (* 2 @selected-index)))
|
||||
node (zip/node zipper)
|
||||
_ (clojure.pprint/pprint node)]
|
||||
(when-let [run (:run node)]
|
||||
(run (-> dialogue-choices
|
||||
(nth @selected-index)
|
||||
first)))
|
||||
(when-let [next-choices (:choices node)]
|
||||
(when-let [next-choices (or (when-let [choice-fn (:choice-fn node)]
|
||||
(choice-fn))
|
||||
(:choices node))]
|
||||
(if (fn? next-choices)
|
||||
|
||||
(recur (next-choices zipper))
|
||||
(recur zipper)))))))
|
||||
(recur (zip/edit zipper assoc :choices next-choices))))))))
|
||||
|
||||
(defn update-entities [entities f & {:keys [use-screen?] :or {use-screen? false}}]
|
||||
(run-action entities
|
||||
|
||||
Reference in New Issue
Block a user