saving and loading starting room.

This commit is contained in:
2014-11-28 11:57:37 -08:00
parent befdb44d29
commit a34ae1dbd2
11 changed files with 36 additions and 22 deletions

View File

@@ -16,7 +16,7 @@
#_[play-clj "0.3.9"] #_[play-clj "0.3.9"]
[org.clojure/data.priority-map "0.0.5"] [org.clojure/data.priority-map "0.0.5"]
[org.clojure/core.async "0.1.338.0-5c5012-alpha"]] [org.clojure/core.async "0.1.338.0-5c5012-alpha"]]
:repl-options {:init-ns advent.core}
:source-paths ["src" "src-common"] :source-paths ["src" "src-common"]
:javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"] :javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]
:aot [advent.core.desktop-launcher] :aot [advent.core.desktop-launcher]

View File

@@ -413,7 +413,8 @@
old-music (get-in entities [:room :music]) old-music (get-in entities [:room :music])
entities (-> entities entities (-> entities
(assoc-in [:room] (get-in entities [:rooms new-background])) (assoc-in [:room] (get-in entities [:rooms new-background]))
(assoc-in [:room :entities :ego] ego)) (assoc-in [:room :entities :ego] ego)
(assoc-in [:state :last-room] new-background))
new-music (get-in entities [:room :music]) new-music (get-in entities [:room :music])
apply-state (get-in entities [:room :apply-state]) apply-state (get-in entities [:room :apply-state])
entities (if apply-state entities (if apply-state

View File

@@ -76,4 +76,5 @@
entities) entities)
(if (actions/has-one-of? entities [:stick :cat-toy]) (if (actions/has-one-of? entities [:stick :cat-toy])
(update-in entities [:room :entities] #(dissoc % :stick)) (update-in entities [:room :entities] #(dissoc % :stick))
entities))))) entities)))
:start-pos [172 122]))

View File

@@ -77,4 +77,5 @@
(as-> entities entities (as-> entities entities
(if (actions/has-item? entities :certificate) (if (actions/has-item? entities :certificate)
(update-in entities [:room :entities] #(dissoc % :cat)) (update-in entities [:room :entities] #(dissoc % :cat))
entities)))))) entities)))
:start-pos [203 1])))

View File

@@ -144,4 +144,5 @@
(actions/talk entities :shopkeep "You brat! You ate the last mint.") (actions/talk entities :shopkeep "You brat! You ate the last mint.")
(actions/talk entities :shopkeep "Since you ate the last one, you have to go tell Gandarf to bring me some more."))))))} (actions/talk entities :shopkeep "Since you ate the last one, you have to go tell Gandarf to bring me some more."))))))}
:collision "inside-antique/collision.png" :collision "inside-antique/collision.png"
:scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.50)))) :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.50)
:start-pos [222 3])))

View File

@@ -152,4 +152,5 @@
(as-> entities entities (as-> entities entities
(if (actions/has-item? entities :ladder) (if (actions/has-item? entities :ladder)
(update-in entities [:room :entities] #(dissoc % :ladder)) (update-in entities [:room :entities] #(dissoc % :ladder))
entities)))))) entities)))
:start-pos [300 55])))

View File

@@ -171,4 +171,5 @@
(as-> entities entities (as-> entities entities
(if (actions/has-item? entities :ladder) (if (actions/has-item? entities :ladder)
(update-in entities [:room :entities] #(dissoc % :ladder)) (update-in entities [:room :entities] #(dissoc % :ladder))
entities)))))) entities)))
:start-pos [245 90])))

View File

@@ -87,4 +87,5 @@
(as-> entities entities (as-> entities entities
(if (actions/has-one-of? entities [:flask-1 :flask-1-with-cream-of-mushroom :flask-1-strength :flask-1-with-mushrooms :flask-1-with-milk]) (if (actions/has-one-of? entities [:flask-1 :flask-1-with-cream-of-mushroom :flask-1-strength :flask-1-with-mushrooms :flask-1-with-milk])
(update-in entities [:room :entities] #(dissoc % :flask)) (update-in entities [:room :entities] #(dissoc % :flask))
entities)))))) entities)))
:start-pos [237 0])))

View File

@@ -128,4 +128,5 @@
(actions/talk entities :ego "Eww! He slobbered on my hand.") (actions/talk entities :ego "Eww! He slobbered on my hand.")
(actions/give entities :slobber))})} (actions/give entities :slobber))})}
:collision "outside-castle/collision.png" :collision "outside-castle/collision.png"
:scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00)))) :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00)
:start-pos [310 80])))

View File

@@ -203,4 +203,5 @@
(as-> entities entities (as-> entities entities
(if (get-in entities [:state :coaxed-sheep?]) (if (get-in entities [:state :coaxed-sheep?])
(update-in entities [:room :entities :sheep] #(assoc % :x 95 :y 150 :baseline 40)) (update-in entities [:room :entities :sheep] #(assoc % :x 95 :y 150 :baseline 40))
entities)))))) entities)))
:start-pos [0 80])))

View File

@@ -78,7 +78,7 @@
entities)))) entities))))
(defn get-ego [screen] (defn get-ego [screen start-pos]
(let [player-sheet (texture! (texture "player.png") :split 18 36) (let [player-sheet (texture! (texture "player.png") :split 18 36)
talk-sheet (texture! (texture "ego/talk.png") :split 18 36) talk-sheet (texture! (texture "ego/talk.png") :split 18 36)
stand-sheet (texture! (texture "ego/stand.png") :split 18 36) stand-sheet (texture! (texture "ego/stand.png") :split 18 36)
@@ -135,7 +135,7 @@
[:fire 1] (utils/flip fire-1-anim) [:fire 1] (utils/flip fire-1-anim)
[:fire 2] (utils/flip fire-2-anim) [:fire 2] (utils/flip fire-2-anim)
[:fire 3] (utils/flip fire-3-anim)} [:fire 3] (utils/flip fire-3-anim)}
:baseline 95 :baseline (- 240 (last start-pos))
:facing :right :facing :right
:origin-x 9 :origin-x 9
:origin-y 0 :origin-y 0
@@ -166,7 +166,7 @@
:ego "'Not more than that do drink,'" :ego "'Not more than that do drink,'"
:ego "'Or you'll push your body to the brink.'")) :ego "'Or you'll push your body to the brink.'"))
nil)) nil))
:x 150 :y 95 :x (first start-pos) :y (last start-pos)
:id "ego"}] :id "ego"}]
(actions/start-animation screen (actions/start-animation screen
(merge (animation->texture screen (:stand (:right ego))) ego) (merge (animation->texture screen (:stand (:right ego))) ego)
@@ -203,6 +203,7 @@
(music! snd :play)) (music! snd :play))
(defn stop-sound [snd] (defn stop-sound [snd]
(println "here")
(music! snd :stop)) (music! snd :stop))
(defn make-music [r] (defn make-music [r]
@@ -213,6 +214,7 @@
(utils/load) (utils/load)
{:object nil {:object nil
:active? true :active? true
:last-room :outside-house
:inventory [] :inventory []
:clues #{} :clues #{}
:mints-eaten 0})) :mints-eaten 0}))
@@ -246,12 +248,15 @@
:last :main :last :main
:override nil} :override nil}
:all-items (assoc items/items :object nil) :all-items (assoc items/items :object nil)
:room (assoc-in (:outside-house rooms) :room (as-> (get rooms (:last-room (get-state))) room
[:entities :ego] (get-ego screen)) (assoc-in room [:entities :ego] (get-ego screen (:start-pos room))))
:inventory (assoc (texture "inventory.png") :x 278 :y 0 :baseline 9000 :inventory (assoc (texture "inventory.png") :x 278 :y 0 :baseline 9000
:mouse-in? (zone/box 278 0 320 42)) :mouse-in? (zone/box 278 0 320 42))
:fps (assoc (label "0" (color :white) ) :x 5 :baseline 0)}] :fps (assoc (label "0" (color :white) ) :x 5 :baseline 0)}]
((get-in entities [:room :apply-state]) entities))))
(if-let [apply-state (get-in entities [:room :apply-state])]
(apply-state entities)
entities))))
:on-render :on-render
(fn [screen [entities]] (fn [screen [entities]]
@@ -272,12 +277,12 @@
:on-resize (fn [screen entities] :on-resize (fn [screen entities]
(size! screen 320 240)) (size! screen 320 240))
:on-hide (fn [screen entities] :on-hide (fn [screen [entities]]
(doall (->> (get-in entities [:room :entities :musics]) (println (keys entities))
vals (doseq [snd (->> (doto (get-in entities [:musics]) println)
(map identity) vals
(map stop-sound) (filter identity))]
))) (stop-sound snd)))
:on-mouse-moved :on-mouse-moved
(fn [screen [entities]] (fn [screen [entities]]