a way of doing dialogue trees, but meh.

This commit is contained in:
2014-09-25 17:07:39 -07:00
parent a5cd9fcea9
commit 51be2e0e14

View File

@@ -145,17 +145,16 @@
(merge params {:collision (advent.pathfind/map-from-resource collision)
:interactions interactions-as-list})))
(defn make-dialogue-tree [entities target-id tree]
(let [[e-line t-line options] tree
option-scripts (when options (for [option options]
[(first option) (actions/get-script entities
(make-dialogue-tree entities target-id option))]))]
(actions/talk entities :ego e-line)
(if (string? t-line)
(actions/talk entities target-id t-line)
(t-line))
(when options
(apply actions/present-choices entities option-scripts))))
(defn run-dialogue-tree [entities command-pairs & [previous-line]]
(let [commands (partition 2 command-pairs)]
(doseq [[subject arg] commands]
(if (= :choices subject)
(apply actions/present-choices entities (for [choice (partition 2 arg)]
[(first choice) (actions/get-script entities
(run-dialogue-tree entities (second choice) (first choice)))]))
(if (= :line arg)
(actions/talk entities subject previous-line)
(actions/talk entities subject arg))))))
(defn backgrounds [screen]
(let [sheep-sheet (texture! (texture "outsidehouse/sheep-anim.png") :split 33 21)
@@ -180,18 +179,28 @@
:cursor :down}
:wizard {:box [228 80 248 126]
:script (actions/get-script entities
(make-dialogue-tree entities :wizard ["Hello there Mr. Fangald!"
"Oh no, not you again!"
[["You're not my friend, Mr. Fangald?"
"No, you are a rascally little boy who is nothing but a cheat!"
[["Oh come on, I'm not that bad."
"Yes you are. Shoo!"]
["I'm sorry I stole your magic cowboy hat."
#(do (actions/talk entities :wizard "Go.")
(actions/talk entities :wizard "Away.")
(actions/transition-background entities :outside-house [262 88]))]]]
["What do you mean, 'not you again'?"
"I mean get lost kid."]]]))}}
(run-dialogue-tree entities [:ego "Hello there Mr. Fangald!"
:wizard "Oh no, not you again!"
:choices ["You're not happy to see me?" [:ego :line
:wizard "Of course not!"
:wizard "Not after all the hell you've put me through."
:choices ["You mean the time I set your rabbit loose?" [:ego :line
:wizard "Fluffy was my best rabbit!"]
"You're not still sore about my stealing your magic cowboy hat." [:ego :line
:ego "Are you?"
:wizard "That cowboy hat was one of a kind!"
:wizard "Truly unique."
:wizard "It accented my unique facial physique."
:wizard "And now it's gone forever."
:wizard "Leave me to die in peace."]
"You mean the time I set your house on fire with a fire mint?" [:ego :line
:wizard "That was you? I spent a fortune cleaning up the mess you made!"
:wizard "You ruined my life work!"]
"An old hoot like you needs a kick the pants every now and again!" [:ego :line
:wizard "Maybe so, but not from a cheating little boy like you!"]]]
"What do you mean, 'not you again'?" [:ego :line
:wizard "I mean get lost kid."]]]))}}
:layers [(assoc (texture "inside-house/background.png") :x 0 :y 0 :baseline 0)
(assoc (texture "inside-house/desk.png") :x 0 :y 0 :baseline 200)
(assoc (texture "inside-house/sillhoute.png") :x 0 :y 0 :baseline 240)]