steam saving is close.
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
brycecovert@brometheus.local.6703
|
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
(thread (do
|
(thread (do
|
||||||
~@forms
|
~@forms
|
||||||
(change-script-state ~entities false)
|
(change-script-state ~entities false)
|
||||||
(utils/save @~entities :autosave "Autosave"))))))))
|
(utils/save @~entities "autosave" "Autosave"))))))))
|
||||||
|
|
||||||
(defmacro get-unsaved-script [entities & forms]
|
(defmacro get-unsaved-script [entities & forms]
|
||||||
`(fn [starting-entities#]
|
`(fn [starting-entities#]
|
||||||
|
|||||||
@@ -208,7 +208,7 @@
|
|||||||
:wizard "If this is truly your quest, then I will help you. "
|
:wizard "If this is truly your quest, then I will help you. "
|
||||||
:ego "So you're my friend now, Gandarf?"
|
:ego "So you're my friend now, Gandarf?"
|
||||||
:wizard "No.")
|
:wizard "No.")
|
||||||
(utils/save @entities :autosave "Autosave"))}]})
|
(utils/save @entities "autosave" "Autosave"))}]})
|
||||||
|
|
||||||
(defn wizard-dialogue [entities]
|
(defn wizard-dialogue [entities]
|
||||||
(if (get-in @entities [:state :has-met-gandarf?])
|
(if (get-in @entities [:state :has-met-gandarf?])
|
||||||
@@ -621,7 +621,7 @@
|
|||||||
|
|
||||||
(if (get-in @entities [:state :convinced-wizard?])
|
(if (get-in @entities [:state :convinced-wizard?])
|
||||||
(do (actions/talk entities :wizard "Oh, hello there, boy.")
|
(do (actions/talk entities :wizard "Oh, hello there, boy.")
|
||||||
(utils/save @entities :autosave "Autosave"))
|
(utils/save @entities "autosave" "Autosave"))
|
||||||
(wizard-dialogue entities)))))
|
(wizard-dialogue entities)))))
|
||||||
:cursor :right}
|
:cursor :right}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
(ns advent.steam)
|
(ns advent.steam
|
||||||
|
(:require [play-clj.core :refer :all]
|
||||||
|
[clojure.edn :as edn])
|
||||||
|
(:import [java.nio ByteBuffer CharBuffer]))
|
||||||
|
|
||||||
(def has-steam?
|
(def has-steam?
|
||||||
(try
|
(try
|
||||||
(import '[com.codedisaster.steamworks SteamUserStats SteamUserStatsCallback SteamAPI])
|
(import '[com.codedisaster.steamworks SteamUserStats SteamUserStatsCallback SteamAPI SteamRemoteStorage])
|
||||||
true
|
true
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
false)))
|
false)))
|
||||||
@@ -42,3 +45,51 @@
|
|||||||
|
|
||||||
(defn clear-all-achievements []
|
(defn clear-all-achievements []
|
||||||
(doall (map clear-achievement all-achievements)))
|
(doall (map clear-achievement all-achievements)))
|
||||||
|
|
||||||
|
(defn write-file [filename edn]
|
||||||
|
(let [edn (pr-str edn)]
|
||||||
|
(if has-steam?
|
||||||
|
(eval `(let [rs# (SteamRemoteStorage. nil)
|
||||||
|
v# ~edn
|
||||||
|
bb# (ByteBuffer/allocateDirect (* 2 (count v#)))]
|
||||||
|
(-> bb# .asCharBuffer (.put v#) )
|
||||||
|
|
||||||
|
(.fileWrite rs# ~filename bb# (* 2 (count v#)))))
|
||||||
|
(let [f (files! :local filename)]
|
||||||
|
(.writeString f edn false)))))
|
||||||
|
|
||||||
|
(defn snapshot-list []
|
||||||
|
(if has-steam?
|
||||||
|
(eval `(let [rs# (SteamRemoteStorage. nil)]
|
||||||
|
(for [i# (range (.getFileCount rs#))
|
||||||
|
:let [len# (* 1024 1024)
|
||||||
|
n# (.getFileNameAndSize rs# i# (make-array Integer/TYPE 1))
|
||||||
|
bb# (ByteBuffer/allocateDirect len#)]
|
||||||
|
:when (.endsWith n# ".edn")]
|
||||||
|
(do (println n#)
|
||||||
|
(.fileRead rs# n# bb# len#)
|
||||||
|
(-> bb# .asCharBuffer .toString edn/read-string)))))
|
||||||
|
(for [save-file (.list (files! :local ".") ".edn")]
|
||||||
|
(edn/read-string (.readString save-file)))))
|
||||||
|
|
||||||
|
|
||||||
|
(defn add-screenshot [filename]
|
||||||
|
(when has-steam?
|
||||||
|
(eval `(let [rs# (SteamRemoteStorage. nil)
|
||||||
|
bytes# (.readBytes (files! :local ~filename))
|
||||||
|
bb# (ByteBuffer/allocateDirect (count bytes#))]
|
||||||
|
|
||||||
|
(.put bb# bytes#)
|
||||||
|
(.fileWrite rs# ~filename bb# (count bytes#))))))
|
||||||
|
|
||||||
|
(defn download-screenshot [filename]
|
||||||
|
(when (and has-steam? (not (.exists (files! :local filename))))
|
||||||
|
(eval `(let [rs# (SteamRemoteStorage. nil)
|
||||||
|
len# (.getFileSize rs# ~filename)
|
||||||
|
bb# (ByteBuffer/allocateDirect len#)
|
||||||
|
bytes# (make-array Byte/TYPE len#)]
|
||||||
|
(do (.fileRead rs# ~filename bb# len#)
|
||||||
|
(.get bb# bytes#)
|
||||||
|
(.writeBytes (files! :local ~filename)
|
||||||
|
bytes#
|
||||||
|
false))))))
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
[clojure.edn :as edn]
|
[clojure.edn :as edn]
|
||||||
[clojure.string :as str]
|
[clojure.string :as str]
|
||||||
[advent.saves :as saves])
|
[advent.saves :as saves]
|
||||||
|
[advent.steam :as steam])
|
||||||
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Format Pixmap$Blending Pixmap$Filter Texture Texture$TextureFilter]
|
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Format Pixmap$Blending Pixmap$Filter Texture Texture$TextureFilter]
|
||||||
[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]
|
||||||
@@ -69,15 +70,16 @@
|
|||||||
(if (= "Autosave" (:name s))
|
(if (= "Autosave" (:name s))
|
||||||
(Long/MIN_VALUE)
|
(Long/MIN_VALUE)
|
||||||
(- (Long/parseLong (:id s)))))
|
(- (Long/parseLong (:id s)))))
|
||||||
(for [save-file (.list (files! :local ".") ".edn")]
|
(steam/snapshot-list)))
|
||||||
(edn/read-string (.readString save-file)))))
|
|
||||||
|
|
||||||
(defn snapshot-screenshots []
|
(defn snapshot-screenshots []
|
||||||
(for [snapshot (snapshot-list)]
|
(doall (for [snapshot (snapshot-list)]
|
||||||
(update-in snapshot [:screenshot]
|
(do
|
||||||
#(try (Pixmap. (files! :local %) )
|
(steam/download-screenshot (:screenshot snapshot))
|
||||||
(catch Exception e
|
(update-in snapshot [:screenshot]
|
||||||
(Pixmap. 160 120 Pixmap$Format/RGB888))))))
|
#(try (Pixmap. (files! :local %) )
|
||||||
|
(catch Exception e
|
||||||
|
(Pixmap. 160 120 Pixmap$Format/RGB888))))))))
|
||||||
|
|
||||||
(defn save-chapter [entities chapter]
|
(defn save-chapter [entities chapter]
|
||||||
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")
|
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")
|
||||||
@@ -97,8 +99,9 @@
|
|||||||
saves/chapters)))
|
saves/chapters)))
|
||||||
|
|
||||||
(defn write-file [filename edn]
|
(defn write-file [filename edn]
|
||||||
(let [f (files! :local filename)]
|
(steam/write-file filename edn)
|
||||||
(.writeString f (pr-str edn) false)))
|
#_(let [f (files! :local filename)]
|
||||||
|
(.writeString f (pr-str edn) false)))
|
||||||
|
|
||||||
(defn save-file-name [id]
|
(defn save-file-name [id]
|
||||||
(str id ".edn"))
|
(str id ".edn"))
|
||||||
@@ -112,7 +115,7 @@
|
|||||||
:y (get-in entities [:room :entities :ego :y]))
|
:y (get-in entities [:room :entities :ego :y]))
|
||||||
:blurb (or blurb name)}]
|
:blurb (or blurb name)}]
|
||||||
(write-file (save-file-name id) save)
|
(write-file (save-file-name id) save)
|
||||||
(on-gl (let [f (files! :local (save-screenshot-file-name id))
|
(on-gl (let [f (files! :local (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)]
|
||||||
@@ -121,7 +124,8 @@
|
|||||||
_ (.drawPixmap resized pm 0 0 w h 0 0 160 120)
|
_ (.drawPixmap resized pm 0 0 w h 0 0 160 120)
|
||||||
png (PixmapIO$PNG. (* w h 1.5))]
|
png (PixmapIO$PNG. (* w h 1.5))]
|
||||||
(.write png f resized)
|
(.write png f resized)
|
||||||
(.dispose png)))))
|
(.dispose png)
|
||||||
|
(steam/add-screenshot (save-screenshot-file-name id))))))
|
||||||
|
|
||||||
(defn remove-save [id]
|
(defn remove-save [id]
|
||||||
(on-gl (doseq [f [(files! :local (save-screenshot-file-name id))
|
(on-gl (doseq [f [(files! :local (save-screenshot-file-name id))
|
||||||
|
|||||||
Reference in New Issue
Block a user