progress on autosave
This commit is contained in:
@@ -33,6 +33,13 @@
|
||||
(label! e :set-style (style :label font (get-color e mouse-pos))))
|
||||
e)
|
||||
|
||||
(defn sliding-window [i size xs]
|
||||
(if (<= (count xs) size)
|
||||
xs
|
||||
(let [drop-count (min (max 0 (- i (/ size 2)))
|
||||
(- (count xs) size))]
|
||||
(take size (drop drop-count xs)))))
|
||||
|
||||
(defn style-slider [s mouse-pos]
|
||||
(if (utils/intersects? s mouse-pos)
|
||||
(slider! s :set-style (:hover s))
|
||||
@@ -176,7 +183,8 @@
|
||||
|
||||
(defn saves-menu [entities [save screenshot]]
|
||||
(let [last? (= save (-> (:saves-list entities) last first))
|
||||
first? (= save (-> (:saves-list entities) first first))]
|
||||
first? (= save (-> (:saves-list entities) first first))
|
||||
window (sliding-window (:save-index entities) 5 (:saves-list entities))]
|
||||
(into
|
||||
{:back (-> (make-label "Back")
|
||||
(stack-y 305 7)
|
||||
@@ -186,8 +194,16 @@
|
||||
(assoc :z 8
|
||||
:interactable true
|
||||
:save (saves/name->save save)))
|
||||
:screenshot (-> (texture screenshot)
|
||||
(assoc :z 8 :x (/ 1280 2) :y 214 :origin-y 60 :origin-x 80 :height 120 :width 160
|
||||
:screenshot-backdrop (-> (utils/get-texture "title/screenshot-backdrop.png")
|
||||
(assoc :x (/ 1280 2)
|
||||
:y 214
|
||||
:scale-x 4
|
||||
:scale-y 4
|
||||
:origin-y 19
|
||||
:origin-x 24
|
||||
:z 8))
|
||||
:screenshot (-> (image (texture screenshot))
|
||||
(assoc :z 9 :x (- (/ 1280 2) 80) :y (- 214 60) :height 120 :width 160
|
||||
:save (saves/name->save save)))
|
||||
|
||||
:next (-> (make-label "Next >" (when last? (color :gray)))
|
||||
@@ -196,14 +212,15 @@
|
||||
:prev (as-> (make-label "< Prev" (when first? (color :gray))) prev
|
||||
(assoc prev :x (- 500 (.getWidth (:object prev))) :y 203
|
||||
:interactable (not first?)))}
|
||||
(for [[[save-l] index] (map vector (:saves-list entities) (range))
|
||||
(for [[[save-l] index] (map vector window (range))
|
||||
:let [image (if (= save-l save)
|
||||
(utils/get-texture "title/save-indicator-active.png")
|
||||
(utils/get-texture "title/save-indicator.png"))]]
|
||||
|
||||
[[:save-indicator save-l] (assoc image
|
||||
:y 124 :x (- (+ 640 (* index 7 4))
|
||||
(/ (* (dec (count (:saves-list entities))) 7 4) 2)) :z 15 :scale-x 4 :scale-y 4)]))))
|
||||
:y 116 :x (- (+ 640 (* index 7 4))
|
||||
(/ (* (dec (count window)) 7 4) 2))
|
||||
:z 8 :scale-x 4 :scale-y 4)]))))
|
||||
|
||||
(defn style-ui [entities]
|
||||
(doseq [entity (vals entities)
|
||||
@@ -353,20 +370,20 @@
|
||||
|
||||
(and (:back entities) (utils/intersects? (:back entities) [x y]))
|
||||
(as-> entities entities
|
||||
(dissoc entities :screenshot :back :title :prev :next)
|
||||
(dissoc entities :screenshot :back :title :prev :next :screenshot-backdrop)
|
||||
(apply dissoc entities (map #(vector :save-indicator (first %))
|
||||
(:saves-list entities)))
|
||||
(merge entities(: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)))))
|
||||
(as-> entities entities
|
||||
(update-in entities [:save-index] inc)
|
||||
(merge entities (saves-menu entities (nth saves-list (:save-index entities)))))
|
||||
|
||||
(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)))))
|
||||
(as-> entities entities
|
||||
(update-in entities [:save-index] dec)
|
||||
(merge entities (saves-menu entities (nth saves-list (:save-index entities)))))
|
||||
|
||||
selected-save
|
||||
(start-playing screen entities (:save selected-save))
|
||||
|
||||
Reference in New Issue
Block a user