randomize dialogue antique.

This commit is contained in:
Bryce Covert
2015-08-21 09:39:34 -07:00
parent 746b1130c4
commit e956b11dba
3 changed files with 64 additions and 37 deletions

View File

@@ -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