rlm@170: (ns com.aurellem.run.title rlm@318: (:use (com.aurellem.gb gb-driver vbm)) rlm@318: (:use (com.aurellem.run util))) rlm@81: rlm@87: (defn start [] [[] (root)]) rlm@81: rlm@250: (defn-memo title rlm@250: ([] (title (start))) rlm@250: ([script] rlm@250: (->> script rlm@318: (first-difference [] [:a] AF) rlm@318: (first-difference [] [:start] AF) rlm@318: (first-difference [] [:a] AF) rlm@318: (first-difference [] [:start] AF)))) rlm@81: rlm@335: (defn-memo oak rlm@250: ([] (oak (title))) rlm@250: ([script] rlm@250: (->> script rlm@256: (scroll-text 13)))) rlm@81: rlm@250: (defn-memo name-entry-rlm rlm@250: ([] (name-entry-rlm (oak))) rlm@250: ([script] rlm@250: (->> script rlm@318: (first-difference [] [:a] AF) rlm@318: (first-difference [] [:r] DE) rlm@250: (play-moves rlm@250: [[] rlm@250: [:r] [] [:r] [] [:r] [] [:r] [] rlm@250: [:r] [] [:r] [] [:r] [] [:d] [:a] rlm@250: [:l] [] [:l] [] [:l] [] [:l] [] rlm@250: [:l] [] [:l] [:a] [] [:r] [:a] rlm@250: [:r] [] [:r] [] [:r] [] [:r] [] rlm@250: [:r] [] [:d] [] [:d] [] [:d] [:a]])))) rlm@91: rlm@250: (defn-memo name-entry-ash rlm@250: ([] (name-entry-ash (oak))) rlm@250: ([script] rlm@250: (->> script rlm@318: (first-difference [] [:d] AF) rlm@318: (first-difference [] [:d] AF) rlm@318: (first-difference [] [:a] AF)))) rlm@91: rlm@250: (defn-memo rival-name-entry-gary rlm@250: ([] (rival-name-entry-gary (name-entry-ash))) rlm@250: ([script] rlm@250: (->> script rlm@256: (scroll-text 5) rlm@318: (first-difference [] [:d] AF) rlm@318: (first-difference [] [:d] AF) rlm@318: (first-difference [] [:a] AF)))) rlm@250: rlm@250: (defn-memo rival-name-entry-blue rlm@250: ([] (rival-name-entry-blue (name-entry-ash))) rlm@250: ([script] rlm@250: (->> script rlm@256: (scroll-text 5) rlm@318: (first-difference [] [:d] AF) rlm@318: (first-difference [] [:a] AF)))) rlm@81: rlm@250: (defn-memo finish-title rlm@250: ([] (finish-title (rival-name-entry-blue))) rlm@250: ([script] rlm@250: (->> script rlm@256: (scroll-text 7)))) rlm@256: rlm@250: (def title-frames 2194) rlm@89: rlm@89: (defn title-checkpoint! [] rlm@88: (let [[moves state] (finish-title)] rlm@250: (assert (= title-frames (count moves))) rlm@250: [(write-moves! moves "title-checkpoint") rlm@250: (write-state! state "title-checkpoint")])) rlm@88: rlm@88: (defn intro [] rlm@250: [(read-moves "title-checkpoint") rlm@250: (read-state "title-checkpoint")]) rlm@88: rlm@335: ;;(defn test-intro [] rlm@335: ;; (play-vbm (moves-filename "title-checkpoint"))) rlm@88: rlm@87: ;; TODO might be able to glue these together more elegantly with monads rlm@87: