diff --git a/desktop/src-common/advent/saves.clj b/desktop/src-common/advent/saves.clj index 5723e314..53c27136 100644 --- a/desktop/src-common/advent/saves.clj +++ b/desktop/src-common/advent/saves.clj @@ -9,3 +9,6 @@ :after-wisdom "The Wise Guy" :after-jail "Prisoner On The Loose" :in-jail "In The Slammer"}) + +(def name->save + (into {} (map vector (vals saves) (keys saves)))) diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index dbd475af..d5bcd057 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -170,15 +170,13 @@ (defn saves-menu [] (doto (into {} - (for [[save index] (map #(vector %1 %2) - (filter utils/has-save? (keys saves/saves)) - (range)) - :let [name (saves/saves save)]] + (for [[name index] (map #(vector %1 %2) + (utils/snapshot-list) (range))] [name (-> (make-label name) (stack-y 280 index) (assoc :z 8 :interactable true - :save save))])) + :save (saves/name->save name)))])) println)) (defscreen title-screen diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index cb0db95a..9f2a8e82 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -58,9 +58,17 @@ atlas (texture-atlas "packed/pack.atlas")] (texture (texture-atlas! atlas :find-region atlas-name)))) + +(defn snapshot-list [] + (let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")] + (if (.contains prefs "snapshot-list") + (edn/read-string (.getString prefs "snapshot-list")) + []))) + (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)) (defn save [entities]