annotate clojure/com/aurellem/run/title.clj @ 573:40f62391db9d

implemented row and column increment logic.
author Robert McIntyre <rlm@mit.edu>
date Sat, 01 Sep 2012 03:56:30 -0500
parents abd1ca8a25cc
children
rev   line source
rlm@170 1 (ns com.aurellem.run.title
rlm@318 2 (:use (com.aurellem.gb gb-driver vbm))
rlm@318 3 (:use (com.aurellem.run util)))
rlm@81 4
rlm@87 5 (defn start [] [[] (root)])
rlm@81 6
rlm@250 7 (defn-memo title
rlm@250 8 ([] (title (start)))
rlm@250 9 ([script]
rlm@250 10 (->> script
rlm@318 11 (first-difference [] [:a] AF)
rlm@318 12 (first-difference [] [:start] AF)
rlm@318 13 (first-difference [] [:a] AF)
rlm@318 14 (first-difference [] [:start] AF))))
rlm@81 15
rlm@335 16 (defn-memo oak
rlm@250 17 ([] (oak (title)))
rlm@250 18 ([script]
rlm@250 19 (->> script
rlm@256 20 (scroll-text 13))))
rlm@81 21
rlm@250 22 (defn-memo name-entry-rlm
rlm@250 23 ([] (name-entry-rlm (oak)))
rlm@250 24 ([script]
rlm@250 25 (->> script
rlm@318 26 (first-difference [] [:a] AF)
rlm@318 27 (first-difference [] [:r] DE)
rlm@250 28 (play-moves
rlm@250 29 [[]
rlm@250 30 [:r] [] [:r] [] [:r] [] [:r] []
rlm@250 31 [:r] [] [:r] [] [:r] [] [:d] [:a]
rlm@250 32 [:l] [] [:l] [] [:l] [] [:l] []
rlm@250 33 [:l] [] [:l] [:a] [] [:r] [:a]
rlm@250 34 [:r] [] [:r] [] [:r] [] [:r] []
rlm@250 35 [:r] [] [:d] [] [:d] [] [:d] [:a]]))))
rlm@91 36
rlm@250 37 (defn-memo name-entry-ash
rlm@250 38 ([] (name-entry-ash (oak)))
rlm@250 39 ([script]
rlm@250 40 (->> script
rlm@318 41 (first-difference [] [:d] AF)
rlm@318 42 (first-difference [] [:d] AF)
rlm@318 43 (first-difference [] [:a] AF))))
rlm@91 44
rlm@250 45 (defn-memo rival-name-entry-gary
rlm@250 46 ([] (rival-name-entry-gary (name-entry-ash)))
rlm@250 47 ([script]
rlm@250 48 (->> script
rlm@256 49 (scroll-text 5)
rlm@318 50 (first-difference [] [:d] AF)
rlm@318 51 (first-difference [] [:d] AF)
rlm@318 52 (first-difference [] [:a] AF))))
rlm@250 53
rlm@250 54 (defn-memo rival-name-entry-blue
rlm@250 55 ([] (rival-name-entry-blue (name-entry-ash)))
rlm@250 56 ([script]
rlm@250 57 (->> script
rlm@256 58 (scroll-text 5)
rlm@318 59 (first-difference [] [:d] AF)
rlm@318 60 (first-difference [] [:a] AF))))
rlm@81 61
rlm@250 62 (defn-memo finish-title
rlm@250 63 ([] (finish-title (rival-name-entry-blue)))
rlm@250 64 ([script]
rlm@250 65 (->> script
rlm@256 66 (scroll-text 7))))
rlm@256 67
rlm@250 68 (def title-frames 2194)
rlm@89 69
rlm@89 70 (defn title-checkpoint! []
rlm@88 71 (let [[moves state] (finish-title)]
rlm@250 72 (assert (= title-frames (count moves)))
rlm@250 73 [(write-moves! moves "title-checkpoint")
rlm@250 74 (write-state! state "title-checkpoint")]))
rlm@88 75
rlm@88 76 (defn intro []
rlm@250 77 [(read-moves "title-checkpoint")
rlm@250 78 (read-state "title-checkpoint")])
rlm@88 79
rlm@335 80 ;;(defn test-intro []
rlm@335 81 ;; (play-vbm (moves-filename "title-checkpoint")))
rlm@88 82
rlm@87 83 ;; TODO might be able to glue these together more elegantly with monads
rlm@87 84