totally different save format

This commit is contained in:
Bryce Covert
2015-11-20 17:06:21 -08:00
parent 20d343291d
commit e08a3955f1
2 changed files with 27 additions and 31 deletions

View File

@@ -1296,7 +1296,7 @@ void main ()
(let [date (.format (java.text.SimpleDateFormat. "MM/dd/YY") (java.util.Date.)) (let [date (.format (java.text.SimpleDateFormat. "MM/dd/YY") (java.util.Date.))
save-name (str (-> entities :room :name) " - " date)] save-name (str (-> entities :room :name) " - " date)]
(utils/save entities (utils/save entities
(str (java.util.UUID/randomUUID)) (str (.getTime (java.util.Date.)))
save-name save-name
date) date)
(screen! toast-screen :on-toast :message (str "Saved \"" save-name "\""))))) (screen! toast-screen :on-toast :message (str "Saved \"" save-name "\"")))))

View File

@@ -14,7 +14,6 @@
[com.badlogic.gdx.graphics.g2d TextureRegion Animation] [com.badlogic.gdx.graphics.g2d TextureRegion Animation]
[com.badlogic.gdx.utils.viewport FitViewport] [com.badlogic.gdx.utils.viewport FitViewport]
[com.badlogic.gdx.utils ScreenUtils] [com.badlogic.gdx.utils ScreenUtils]
[com.badlogic.gdx.files FileHandle]
[com.badlogic.gdx.graphics PixmapIO$PNG] [com.badlogic.gdx.graphics PixmapIO$PNG]
[com.badlogic.gdx.scenes.scene2d Actor Stage] [com.badlogic.gdx.scenes.scene2d Actor Stage]
[com.badlogic.gdx.math CatmullRomSpline] [com.badlogic.gdx.math CatmullRomSpline]
@@ -66,15 +65,17 @@
(str "screenshot-" (clojure.core/name name) ".png" )) (str "screenshot-" (clojure.core/name name) ".png" ))
(defn snapshot-list [] (defn snapshot-list []
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")] (sort-by (fn [s]
(if (.contains prefs "saves") (if (= "Autosave" (:name s))
(edn/read-string (.getString prefs "saves")) (Long/MIN_VALUE)
[]))) (- (Long/parseLong (:id s)))))
(for [save-file (.list (files! :local ".") ".edn")]
(edn/read-string (.readString save-file)))))
(defn snapshot-screenshots [] (defn snapshot-screenshots []
(for [snapshot (snapshot-list)] (for [snapshot (snapshot-list)]
(update-in snapshot [:screenshot] (update-in snapshot [:screenshot]
#(try (Pixmap. (FileHandle. %) ) #(try (Pixmap. (files! :local %) )
(catch Exception e (catch Exception e
(Pixmap. 160 120 Pixmap$Format/RGB888)))))) (Pixmap. 160 120 Pixmap$Format/RGB888))))))
@@ -95,22 +96,23 @@
(edn/read-string (.getString prefs "chapters")) (edn/read-string (.getString prefs "chapters"))
saves/chapters))) saves/chapters)))
(defn write-file [filename edn]
(let [f (files! :local filename)]
(.writeString f (pr-str edn) false)))
(defn save-file-name [id]
(str id ".edn"))
(defn save [entities id name & [blurb]] (defn save [entities id name & [blurb]]
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves") (let [save {:name name
saves (if (.contains prefs "saves") :id id
(edn/read-string (.getString prefs "saves")) :screenshot (save-screenshot-file-name id)
[]) :state (assoc (entities :state)
saves (cons {:name name :x (get-in entities [:room :entities :ego :x])
:id id :y (get-in entities [:room :entities :ego :y]))
:screenshot (save-screenshot-file-name id) :blurb (or blurb name)}]
:state (assoc (entities :state) (write-file (save-file-name id) save)
:x (get-in entities [:room :entities :ego :x]) (on-gl (let [f (files! :local (save-screenshot-file-name id))
:y (get-in entities [:room :entities :ego :y]))
:blurb (or blurb name)}
(filter (comp (complement #{id}) :id) saves))]
(.putString prefs "saves" (pr-str saves))
(.flush prefs)
(on-gl (let [f (FileHandle. (save-screenshot-file-name id))
_ (Pixmap/setFilter Pixmap$Filter/BiLinear) _ (Pixmap/setFilter Pixmap$Filter/BiLinear)
viewport (-> @ (resolve 'advent.screens.scene/scene) :screen deref :viewport) viewport (-> @ (resolve 'advent.screens.scene/scene) :screen deref :viewport)
[x y w h g-l g-r] [(.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport)] [x y w h g-l g-r] [(.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport)]
@@ -122,15 +124,9 @@
(.dispose png))))) (.dispose png)))))
(defn remove-save [id] (defn remove-save [id]
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves") (on-gl (doseq [f [(files! :local (save-screenshot-file-name id))
saves (if (.contains prefs "saves") (files! :local (save-file-name id))]]
(edn/read-string (.getString prefs "saves")) (.delete f))))
[])
saves (filter (comp (complement #{id}) :id) saves)]
(.putString prefs "saves" (pr-str saves))
(.flush prefs)
(on-gl (let [f (FileHandle. (save-screenshot-file-name id))]
(.delete f)))))
(defn save-settings! [] (defn save-settings! []
(doto (.getPreferences (Gdx/app) "ticks-tales-saves") (doto (.getPreferences (Gdx/app) "ticks-tales-saves")