started multiple saves.

This commit is contained in:
Bryce Covert
2015-09-28 12:49:26 -07:00
parent c732d15750
commit 1cb21ce28b
13 changed files with 81 additions and 57 deletions

View File

@@ -1,13 +1,14 @@
ART
+ Update all collisions
+ Have georgia mcgorgeous talk to you
PROGRAMMING
+ Save slots?
+ try to have dialogue for every wrong interaction
+ preload all sounds
+ behind house left direction not great
+ spying broken
+ z-index of bloodclots gem can be in front
+ still can get into dialogue deadlock somehow
IOS
+ all mp3s

1
desktop/settings.edn Normal file
View File

@@ -0,0 +1 @@
{:sound-volume 75.0, :music-volume 30.0}

View File

@@ -33,6 +33,6 @@
(set-screen-wrapper! (fn [screen screen-fn]
(try (screen-fn)
(catch Exception e
(.log Gdx/app (with-out-str (.printStackTrace e)))
(.log Gdx/app "ERROR" (with-out-str (.printStackTrace e)))
(.printStackTrace e)
(set-screen! advent title/title-screen)))))

View File

@@ -0,0 +1,11 @@
(ns advent.saves)
(def saves
{:autosave "Autosave"
:beginning "Our tale's beginning"
:after-dream "The dream is over"
:after-cat "The Cat Whisperer"
:after-strength "Pro (arm) Wrestler"
:after-wisdom "The Wise Guy"
:after-jail "Prisoner On The Loose"
:in-jail "In The Slammer"})

View File

@@ -1,6 +1,7 @@
(ns advent.screens.rooms.cat-tree
(:require [advent.screens.rooms :as rooms]
[advent.actions :as actions]
[advent.saves :as saves]
[advent.screens.items :as items]
[advent.screens.rooms.common :as common]
[advent.utils :as utils]
@@ -338,7 +339,7 @@
(actions/give entities :kiss)
(actions/do-dialogue entities :ego "A kiss for an inventory item?"
:ego "Sounds like the game designer was running out of good ideas.")
(utils/snapshot-state @entities "The Cat Whisperer"))
(utils/snapshot-state @entities :after-cat))
(actions/talk entities :ego "I guess I'm too far away.")))
:default (actions/get-script entities (actions/talk entities :ego "Kitty seems disinterested in it."))})
cat-stand)

View File

@@ -7,6 +7,7 @@
[advent.screens.items :as items]
[advent.tween :as tween]
[advent.utils :as utils]
[advent.saves :as saves]
[clojure.zip :as zip]
[clojure.set :as set]
[clojure.string :as str]
@@ -240,7 +241,7 @@
:fairy-godfather "Choose the broom or shovel, and cast it into the pit of fate."
:ego "But..."
:fairy-godfather "No buts.")
(utils/snapshot-state @entities "Our tale's beginning")
(utils/snapshot-state @entities :beginning)
(actions/update-state entities #(assoc % :seen-intro? true)))
(defn swing [entities]

View File

@@ -1,5 +1,6 @@
(ns advent.screens.rooms.inside-cafeteria
(:require [advent.screens.rooms :as rooms]
(:require [advent.saves :as saves]
[advent.screens.rooms :as rooms]
[advent.screens.items :as items]
[advent.actions :as actions]
[advent.utils :as utils]
@@ -81,7 +82,7 @@
:warriors "Take thy servant's medal of strength.")
(actions/give entities :medal)
(actions/glad entities)
(utils/snapshot-state @entities "Pro (arm) Wrestler"))
(utils/snapshot-state @entities :after-strength))
(do
(play-battle entities :lose)
(actions/do-dialogue entities

View File

@@ -1,6 +1,7 @@
(ns advent.screens.rooms.inside-castle
(:require [advent.screens.rooms :as rooms]
[advent.actions :as actions]
[advent.saves :as saves]
[advent.screens.rooms.common :as common]
[advent.screens.items :as items]
[advent.utils :as utils]
@@ -576,7 +577,7 @@
(actions/remove-entity entities :trophy)
(actions/glad entities)
(actions/talk entities :ego "Thanks!")
(utils/snapshot-state @entities "The Wise Guy"))
(utils/snapshot-state @entities :after-wisdom))
(actions/do-dialogue entities :ego "What about this?" :game-player "No, that's not the solution. Keep looking."))
(brian-get-to-work entities))
:trophy (actions/get-script entities

View File

@@ -2,6 +2,7 @@
(:require [clojure.core.async :refer [chan]]
[advent.screens.rooms :as rooms]
[advent.screens.rooms.common :as common]
[advent.saves :as saves]
[advent.actions :as actions]
[advent.screens.items :as items]
[advent.utils :as utils]
@@ -196,7 +197,7 @@
:ego "But what now?"
:ego "I have till sunrise before Bloodclot comes and destroys the town."
:ego "Maybe Gandarf can help me!")
(utils/snapshot-state @entities "Prisoner On The Loose"))
(utils/snapshot-state @entities :after-jail))
(do
(actions/do-dialogue entities :ego "Yes I made it!"
:guard "Hmm?"

View File

@@ -2,6 +2,7 @@
(:require [advent.screens.rooms :as rooms]
[advent.screens.rooms.common :as common]
[advent.screens.rooms.held :as held]
[advent.saves :as saves]
[advent.actions :as actions]
[advent.screens.items :as items]
[advent.utils :as utils]
@@ -270,7 +271,7 @@
(bloodclot-disappear entities)
(common/go-to-jail entities 5.0)
(actions/do-dialogue entities :ego "Hey!" :ego "What's going on? I was just about to teach Bloodclot a lesson!")
(utils/snapshot-state @entities "In The Slammer"))))
(utils/snapshot-state @entities :in-jail))))
:magic-slingshot (actions/get-script entities
(actions/do-dialogue entities
:ego "Hey Bloodclot!"

View File

@@ -13,6 +13,7 @@
[advent.actions :as actions]
[advent.zone :as zone]
[advent.utils :as utils]
[advent.saves :as saves]
[advent.tween :as tween]
[advent.screens.rooms :as rooms]
[advent.screens.fade :refer [fade-screen]]
@@ -768,9 +769,9 @@ void main()
((get-in entities [:state :time]) layers)
layers)))
(defn get-state []
(if (utils/has-save?)
(utils/load)
(defn get-state [selected-save]
(if selected-save
(utils/load-snapshot selected-save)
{:object nil
:active? true
:last-room :dream
@@ -934,7 +935,7 @@ void main()
:night (utils/make-music "music/night.ogg")
:dream (utils/make-music "dream/music.ogg")
:secret-hideout (utils/make-music "music/secret-hideout.ogg")}
:state (get-state)
:state (get-state @utils/selected-save)
:time-profiles {:object nil
:default utils/default-night-merge
:sprite utils/default-night-merge-sprite
@@ -973,7 +974,7 @@ void main()
:all-items (assoc items/items :object nil)
:started? {:value false
:object nil}
:room (as-> (get rooms (:last-room (get-state))) room
:room (as-> (get rooms (:last-room (get-state @utils/selected-save))) room
(assoc-in room [:entities :ego] (get-ego screen (:start-pos room) ((:scale-fn room) (:start-pos room)))))}]
(doseq [[k [start time fn]] (get-in entities [:room :timers])]

View File

@@ -5,6 +5,7 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
[advent.utils :as utils]
[advent.saves :as saves]
[advent.tween :as tween]
[advent.screens.scene :as scene]
[advent.screens.dialogue :as dialogue]
@@ -89,7 +90,7 @@
flipped))
(defn quest-label []
(if (:seen-intro? (scene/get-state))
(if (:seen-intro? (utils/load-snapshot :autosave))
"Continue quest"
"Begin quest"))
@@ -100,6 +101,7 @@
(tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0
:finish (fn [entities]
(utils/stop-sound (:music entities))
(reset! utils/selected-save save)
(set-screen! @(resolve 'advent.core/advent) scene/scene scene/demo scene/hud dialogue/talking-screen dialogue/choice-screen inventory/inventory-screen safe/safe-screen fade/fade-screen
)
entities)
@@ -160,17 +162,24 @@
(stack-y 280 6)
(assoc :z 8 :interactable true))})
(defn get-selected-save [entities [x y]]
(first (filter
(every-pred :save #(utils/intersects? % [x y]))
(vals entities))))
(defn saves-menu []
{"Where we left off" (-> (make-label "Where we left off")
(stack-y 280 0)
(assoc :z 8
:interactable true
:save "Where we left off"))
"Our tale's beginning" (-> (make-label "Our tale's beginning")
(stack-y 280 1)
(assoc :z 8
:interactable true
:save "Our tale's beginning"))})
(doto
(into {}
(for [[save index] (map #(vector %1 %2)
(filter utils/has-save? (keys saves/saves))
(range))
:let [name (saves/saves save)]]
[name (-> (make-label name)
(stack-y 280 index)
(assoc :z 8
:interactable true
:save save))]))
println))
(defscreen title-screen
:on-show
@@ -281,9 +290,9 @@
entities)
:on-touch-up (fn [screen [entities]]
(println "HERE")
(when-not (get-in entities [:tweens :fade-out])
(let [[x y] (utils/unproject screen)]
(let [[x y] (utils/unproject screen)
selected-save (get-selected-save entities [x y])]
(cond
(utils/intersects? (:start-playing entities) [x y])
(-> (apply dissoc entities (keys (:main-menu entities)))
@@ -295,12 +304,9 @@
(utils/intersects? (:fullscreen entities) [x y])
(utils/toggle-fullscreen!)
(utils/intersects? (entities "Where we left off") [x y])
(start-playing screen entities "Where we left off")
selected-save
(start-playing screen entities (:save selected-save))
(utils/intersects? (entities "Our tale's beginning") [x y])
(start-playing screen entities "Our tale's beginning")
:else
nil))))

View File

@@ -8,7 +8,8 @@
[play-clj.entities :refer [->TextureEntity]]
[clojure.java.io :as io]
[clojure.edn :as edn]
[clojure.string :as str])
[clojure.string :as str]
[advent.saves :as saves])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Blending Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion Animation]
[com.badlogic.gdx.utils.viewport FitViewport]
@@ -27,6 +28,8 @@
(def settings (atom {:music-volume 50.0
:sound-volume 75.0}))
(def selected-save (atom nil))
(defn current-music-volume [& [factor]]
(* (Math/pow (/ (:music-volume @settings) 100.0) 2)
0.25
@@ -57,28 +60,31 @@
(defn snapshot-state [entities name]
(doto (.getPreferences (Gdx/app) "ticks-tales-saves")
(.putString name (pr-str (entities :state)))
(.putString (saves/saves name) (pr-str (entities :state)))
.flush))
(defn save [entities]
(snapshot-state entities "Autosave"))
(snapshot-state entities :autosave))
(defn has-save?
([] (has-save? :autosave))
([key]
(let [name (saves/saves key)]
(-> (.getPreferences (Gdx/app) "ticks-tales-saves")
(.contains name)))))
(defn has-save? []
(-> (.getPreferences (Gdx/app) "ticks-tales-saves")
(.contains "Autosave")))
(defn load-snapshot [name]
(-> (.getPreferences (Gdx/app) "ticks-tales-saves")
(.getString name)
edn/read-string
(assoc :active? true)))
(defn load-snapshot [key]
(doto (let [name (saves/saves key)]
(-> (.getPreferences (Gdx/app) "ticks-tales-saves")
(.getString name)
edn/read-string
(assoc :active? true)))
println))
(defn load []
(load-snapshot "Autosave"))
(load-snapshot :autosave))
(defn save-settings [entities]
(defn save-settings! [entities]
(doto (.getPreferences (Gdx/app) "ticks-tales-saves")
(.putString "settings" (pr-str @settings))
.flush))
@@ -87,20 +93,12 @@
(-> (.getPreferences (Gdx/app) "ticks-tales-saves")
(.contains "settings")))
(defn load-settings []
(reset! settings
(defn load-settings! []
#_(reset! settings
(-> (.getPreferences (Gdx/app) "ticks-tales-saves")
(.getString "settings")
edn/read-string)))
(defn load-settings! []
(when (.exists (io/file "settings.edn"))
(reset! settings (edn/read-string (slurp "settings.edn")))))
(defn save-settings! []
(spit "settings.edn" @settings))
(defn get-font [filename]
(let [font (bitmap-font filename)
tr (bitmap-font! font :get-region)