save images.
This commit is contained in:
@@ -140,7 +140,7 @@
|
|||||||
(stack-y 305 0)
|
(stack-y 305 0)
|
||||||
(assoc :z 8
|
(assoc :z 8
|
||||||
:interactable true))
|
:interactable true))
|
||||||
:rewind (-> (make-label "Previous chapter" (when is-starting? (color :white)))
|
:rewind (-> (make-label "Previous chapter" (when is-starting? (color :gray)))
|
||||||
(stack-y 305 1)
|
(stack-y 305 1)
|
||||||
(assoc :z 8
|
(assoc :z 8
|
||||||
:interactable (not is-starting?)))
|
:interactable (not is-starting?)))
|
||||||
@@ -174,18 +174,27 @@
|
|||||||
(every-pred :save #(utils/intersects? % [x y]))
|
(every-pred :save #(utils/intersects? % [x y]))
|
||||||
(vals entities))))
|
(vals entities))))
|
||||||
|
|
||||||
(defn saves-menu []
|
(defn saves-menu [entities [save screenshot]]
|
||||||
(into {:back (-> (make-label "Back")
|
(let [last? (= save (-> (:saves-list entities) last first))
|
||||||
(stack-y 305 7)
|
first? (= save (-> (:saves-list entities) first first))]
|
||||||
(assoc :z 8
|
{:back (-> (make-label "Back")
|
||||||
:interactable true))}
|
(stack-y 305 7)
|
||||||
(for [[name index] (map #(vector %1 %2)
|
(assoc :z 8 :interactable true))
|
||||||
(utils/snapshot-list) (range))]
|
:title (-> (make-label (str save))
|
||||||
[name (-> (make-label name)
|
(stack-y 305 0)
|
||||||
(stack-y 305 index)
|
(assoc :z 8
|
||||||
(assoc :z 8
|
:interactable true
|
||||||
:interactable true
|
:save (saves/name->save save)))
|
||||||
:save (saves/name->save name)))])))
|
:screenshot (-> (texture screenshot)
|
||||||
|
(assoc :z 8 :x (/ 1280 2) :y (- 305 5) :origin-y 180 :origin-x 120 :height 180 :width 240
|
||||||
|
:save (saves/name->save save)))
|
||||||
|
|
||||||
|
:next (-> (make-label "Next >" (when last? (color :gray)))
|
||||||
|
(assoc :x 780 :y 203
|
||||||
|
:interactable (not last?)))
|
||||||
|
:prev (as-> (make-label "< Prev" (when first? (color :gray))) prev
|
||||||
|
(assoc prev :x (- 500 (.getWidth (:object prev))) :y 203
|
||||||
|
:interactable (not first?)))}))
|
||||||
|
|
||||||
(defn style-ui [entities]
|
(defn style-ui [entities]
|
||||||
(doseq [entity (vals entities)
|
(doseq [entity (vals entities)
|
||||||
@@ -250,7 +259,8 @@
|
|||||||
:z 7)
|
:z 7)
|
||||||
center)
|
center)
|
||||||
:main-menu (main-menu)
|
:main-menu (main-menu)
|
||||||
:saves-menu (saves-menu)
|
:saves-list (utils/snapshot-screenshots)
|
||||||
|
:save-index 0
|
||||||
:font font
|
:font font
|
||||||
:music music
|
:music music
|
||||||
:volume 1.0
|
:volume 1.0
|
||||||
@@ -310,7 +320,7 @@
|
|||||||
(utils/save-settings!)
|
(utils/save-settings!)
|
||||||
entities)
|
entities)
|
||||||
|
|
||||||
:on-touch-up (fn [screen [entities]]
|
:on-touch-up (fn [screen [{:keys [prev next saves-list save-index] :as entities}]]
|
||||||
(when-not (get-in entities [:tweens :fade-out])
|
(when-not (get-in entities [:tweens :fade-out])
|
||||||
(let [[x y] (utils/unproject screen)
|
(let [[x y] (utils/unproject screen)
|
||||||
selected-save (get-selected-save entities [x y])]
|
selected-save (get-selected-save entities [x y])]
|
||||||
@@ -324,7 +334,7 @@
|
|||||||
(and (utils/intersects? (:rewind entities) [x y])
|
(and (utils/intersects? (:rewind entities) [x y])
|
||||||
(-> entities :rewind :interactable))
|
(-> entities :rewind :interactable))
|
||||||
(-> (apply dissoc entities (keys (:main-menu entities)))
|
(-> (apply dissoc entities (keys (:main-menu entities)))
|
||||||
(merge (:saves-menu entities)))
|
(merge (saves-menu entities (nth saves-list save-index))))
|
||||||
|
|
||||||
(utils/intersects? (:quit entities) [x y])
|
(utils/intersects? (:quit entities) [x y])
|
||||||
(quit screen entities)
|
(quit screen entities)
|
||||||
@@ -333,9 +343,19 @@
|
|||||||
(utils/toggle-fullscreen!)
|
(utils/toggle-fullscreen!)
|
||||||
|
|
||||||
(and (:back entities) (utils/intersects? (:back entities) [x y]))
|
(and (:back entities) (utils/intersects? (:back entities) [x y]))
|
||||||
(-> (apply dissoc entities (keys (:saves-menu entities)))
|
(-> entities (dissoc :screenshot :back :title :prev :next)
|
||||||
(merge (:main-menu entities)))
|
(merge (:main-menu entities)))
|
||||||
|
|
||||||
|
(and next (:interactable next) (utils/intersects? next [x y]))
|
||||||
|
(-> entities
|
||||||
|
(update-in [:save-index] inc)
|
||||||
|
(merge (saves-menu entities (nth saves-list (inc save-index)))))
|
||||||
|
|
||||||
|
(and prev (:interactable prev) (utils/intersects? prev [x y]))
|
||||||
|
(-> entities
|
||||||
|
(update-in [:save-index] dec)
|
||||||
|
(merge (saves-menu entities (nth saves-list (dec save-index)))))
|
||||||
|
|
||||||
selected-save
|
selected-save
|
||||||
(start-playing screen entities (:save selected-save))
|
(start-playing screen entities (:save selected-save))
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,8 @@
|
|||||||
atlas (texture-atlas "packed/pack.atlas")]
|
atlas (texture-atlas "packed/pack.atlas")]
|
||||||
(texture (texture-atlas! atlas :find-region atlas-name))))
|
(texture (texture-atlas! atlas :find-region atlas-name))))
|
||||||
|
|
||||||
|
(defn save-screenshot-file-name [name]
|
||||||
|
(str "screenshot-" (clojure.core/name name) ".png" ))
|
||||||
|
|
||||||
(defn snapshot-list []
|
(defn snapshot-list []
|
||||||
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")]
|
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")]
|
||||||
@@ -69,22 +71,26 @@
|
|||||||
(edn/read-string (.getString prefs "snapshot-list"))
|
(edn/read-string (.getString prefs "snapshot-list"))
|
||||||
[])))
|
[])))
|
||||||
|
|
||||||
|
(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)))]))
|
||||||
|
|
||||||
(defn snapshot-state [entities name]
|
(defn snapshot-state [entities name]
|
||||||
(doto (.getPreferences (Gdx/app) "ticks-tales-saves")
|
(doto (.getPreferences (Gdx/app) "ticks-tales-saves")
|
||||||
(.putString (saves/saves name) (pr-str (entities :state)))
|
(.putString (saves/saves name) (pr-str (entities :state)))
|
||||||
(.putString "snapshot-list" (pr-str (filter (complement #{"Autosave"})
|
(.putString "snapshot-list" (pr-str (cons (saves/saves name)
|
||||||
(cons (saves/saves name)
|
(filter (complement #{(saves/saves name)})
|
||||||
(filter (complement #{(saves/saves name)})
|
(snapshot-list)))))
|
||||||
(snapshot-list))))))
|
|
||||||
.flush)
|
.flush)
|
||||||
(on-gl (let [f (FileHandle. (str "screenshot-" (clojure.core/name name) ".png" ))
|
(on-gl (let [f (FileHandle. (save-screenshot-file-name name))
|
||||||
_ (Pixmap/setFilter Pixmap$Filter/BiLinear)
|
_ (Pixmap/setFilter Pixmap$Filter/BiLinear)
|
||||||
#_#_[x y w h g-l g-r] [(.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport)]
|
viewport (-> @(resolve 'advent.screens.scene/scene) :screen deref :viewport)
|
||||||
[x y w h] [0 0 1400 900]
|
[x y w h g-l g-r] [(.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport)]
|
||||||
pm (ScreenUtils/getFrameBufferPixmap x y w h)
|
pm (ScreenUtils/getFrameBufferPixmap x y w h)
|
||||||
|
resized (Pixmap. 160 120 Pixmap$Format/RGB888)
|
||||||
resized (Pixmap. 128 96 Pixmap$Format/RGB888)
|
_ (.drawPixmap resized pm 0 0 w h 0 0 160 120)
|
||||||
_ (.drawPixmap resized pm 0 0 w h 0 0 128 96)
|
|
||||||
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)
|
||||||
@@ -289,8 +295,8 @@
|
|||||||
|
|
||||||
(defn intersects? [e [x y]]
|
(defn intersects? [e [x y]]
|
||||||
(and (:object e)
|
(and (:object e)
|
||||||
(< (:x e) x (+ (:x e) (or (:width e) (.getWidth ^Actor (:object e)))))
|
(< (:x e) x (+ (:x e) (or (:width e) (when (actor? e) (.getWidth ^Actor (:object e))))))
|
||||||
(< (:y e) y (+ (:y e) (or (:height e) (.getHeight ^Actor (:object e)))))))
|
(< (:y e) y (+ (:y e) (or (:height e) (when (actor? e) (.getHeight ^Actor (:object e))))))))
|
||||||
|
|
||||||
(defn get-current-music [entities]
|
(defn get-current-music [entities]
|
||||||
(let [time (get-in entities [:state :time])
|
(let [time (get-in entities [:state :time])
|
||||||
|
|||||||
Reference in New Issue
Block a user