progress on autosave

This commit is contained in:
Bryce Covert
2015-11-03 09:43:23 -08:00
parent bb30635c01
commit 19ac21fe0a
9 changed files with 103 additions and 79 deletions

View File

@@ -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))