Saving much better!
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user