saving retries if it fails.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user