Saving much better!

This commit is contained in:
Bryce Covert
2015-11-04 17:07:26 -08:00
parent 3326629189
commit 6586faf583
12 changed files with 78 additions and 71 deletions

View File

@@ -67,54 +67,48 @@
(defn snapshot-list []
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")]
(if (.contains prefs "snapshot-list")
(edn/read-string (.getString prefs "snapshot-list"))
(if (.contains prefs "saves")
(edn/read-string (.getString prefs "saves"))
[])))
(defn snapshot-screenshots []
(for [snapshot (snapshot-list)]
[snapshot (try (Pixmap. (FileHandle. (save-screenshot-file-name (saves/name->save snapshot))) )
(catch Exception e
(Pixmap. 160 120 Pixmap$Format/RGB888)))]))
(update-in snapshot [:screenshot]
#(try (Pixmap. (FileHandle. %) )
(catch Exception e
(Pixmap. 160 120 Pixmap$Format/RGB888))))))
(defn snapshot-state [entities name]
(doto (.getPreferences (Gdx/app) "ticks-tales-saves")
(.putString (saves/saves name) (pr-str (entities :state)))
(.putString "snapshot-list" (pr-str (cons (saves/saves name)
(filter (complement #{(saves/saves name)})
(snapshot-list)))))
.flush)
(on-gl (let [f (FileHandle. (save-screenshot-file-name name))
_ (Pixmap/setFilter Pixmap$Filter/BiLinear)
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)]
pm (ScreenUtils/getFrameBufferPixmap x y w h)
resized (Pixmap. 160 120 Pixmap$Format/RGB888)
_ (.drawPixmap resized pm 0 0 w h 0 0 160 120)
png (PixmapIO$PNG. (* w h 1.5))]
(.write png f resized)
(.dispose png)
)))
(defn save-chapter [entities chapter]
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")
chapters (if (.contains prefs "chapters")
(edn/read-string (.getString prefs "chapters"))
saves/chapters)
chapters (assoc chapters chapter (entities :state))]
(.putString prefs "chapters" (pr-str chapters))
(.flush prefs)))
(defn save [entities]
(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 load-snapshot [key]
(let [name (saves/saves key)]
(-> (.getPreferences (Gdx/app) "ticks-tales-saves")
(.getString name)
edn/read-string
(assoc :active? true))))
(defn load []
(load-snapshot :autosave))
(defn save [entities id name]
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")
saves (if (.contains prefs "saves")
(edn/read-string (.getString prefs "saves"))
[])
saves (cons {:name name
:id id
:screenshot (save-screenshot-file-name id)
:state (entities :state)}
(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)
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)]
pm (ScreenUtils/getFrameBufferPixmap x y w h)
resized (Pixmap. 160 120 Pixmap$Format/RGB888)
_ (.drawPixmap resized pm 0 0 w h 0 0 160 120)
png (PixmapIO$PNG. (* w h 1.5))]
(.write png f resized)
(.dispose png)))))
(defn save-settings! []
(doto (.getPreferences (Gdx/app) "ticks-tales-saves")