saving retries if it fails.

This commit is contained in:
Bryce Covert
2016-02-16 09:19:28 -08:00
parent f446dfd2bf
commit 2eef8e63a9

View File

@@ -100,24 +100,34 @@
(edn/read-string (.getString prefs "chapters")) (edn/read-string (.getString prefs "chapters"))
saves/chapters))) saves/chapters)))
(defn save [entities id name & [blurb]] (defn try-times [fn times]
(log/info "Saving " id name) (first (drop-while #{:fail}
(let [save {:name name (repeatedly times
:id id #(try (fn)
:screenshot (steam/save-screenshot-file-name id) (catch Exception e
:state (assoc (entities :state) (log/error "Could not save!" e)
:x (get-in entities [:room :entities :ego :x]) :fail))))))
:y (get-in entities [:room :entities :ego :y]))
:blurb (or blurb name)}]
(steam/write-bytes (steam/save-file-name id) (.getBytes (pr-str save) "UTF-8")) (defn save [entities id name & [blurb]]
(on-gl (let [_ (Pixmap/setFilter Pixmap$Filter/BiLinear) (let [save-fn (fn []
viewport (-> @ (resolve 'advent.screens.scene/scene) :screen deref :viewport) (log/info "Saving " id name)
[x y w h g-l g-r] [(.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport)] (let [save {:name name
pm (ScreenUtils/getFrameBufferPixmap x y w h) :id id
resized (Pixmap. 160 120 Pixmap$Format/RGB888) :screenshot (steam/save-screenshot-file-name id)
_ (.drawPixmap resized pm 0 0 w h 0 0 160 120)] :state (assoc (entities :state)
(steam/save-screenshot resized (steam/save-screenshot-file-name id)))))) :x (get-in entities [:room :entities :ego :x])
:y (get-in entities [:room :entities :ego :y]))
:blurb (or blurb name)}]
(steam/write-bytes (steam/save-file-name id) (.getBytes (pr-str save) "UTF-8"))
(on-gl (let [_ (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)]
(steam/save-screenshot resized (steam/save-screenshot-file-name id))))))]
(try-times save-fn 3)))
(defn remove-save [id] (defn remove-save [id]
(doseq [f [(steam/save-screenshot-file-name id) (doseq [f [(steam/save-screenshot-file-name id)