diff --git a/desktop/asset-work/title/save-indicator-active.png b/desktop/asset-work/title/save-indicator-active.png index aab6e6d3..0871da02 100644 Binary files a/desktop/asset-work/title/save-indicator-active.png and b/desktop/asset-work/title/save-indicator-active.png differ diff --git a/desktop/asset-work/title/save-indicator.png b/desktop/asset-work/title/save-indicator.png index 4f3a64bc..dda5fe2d 100644 Binary files a/desktop/asset-work/title/save-indicator.png and b/desktop/asset-work/title/save-indicator.png differ diff --git a/desktop/resources/packed/pack.atlas b/desktop/resources/packed/pack.atlas index 2aa452c7..9c953665 100644 --- a/desktop/resources/packed/pack.atlas +++ b/desktop/resources/packed/pack.atlas @@ -703,9 +703,16 @@ castle-gate/coinflip orig: 50, 10 offset: 0, 0 index: -1 +castle-gate/goon-2 + rotate: false + xy: 997, 742 + size: 24, 32 + orig: 24, 32 + offset: 0, 0 + index: -1 castle-gate/goon-2-flip rotate: false - xy: 973, 873 + xy: 973, 833 size: 48, 32 orig: 48, 32 offset: 0, 0 @@ -789,7 +796,7 @@ dream/background index: -1 dream/case rotate: false - xy: 1005, 741 + xy: 729, 4 size: 15, 38 orig: 15, 38 offset: 0, 0 @@ -976,13 +983,6 @@ inside-cafeteria/ladder orig: 29, 38 offset: 0, 0 index: -1 -inside-cafeteria/ladder-guard-2 - rotate: false - xy: 973, 741 - size: 30, 73 - orig: 30, 73 - offset: 0, 0 - index: -1 inside-cafeteria/warriors-stand rotate: false xy: 754, 83 @@ -1083,18 +1083,11 @@ outside-castle/note index: -1 outside-jail/axe rotate: false - xy: 729, 9 + xy: 973, 741 size: 22, 33 orig: 22, 33 offset: 0, 0 index: -1 -outside-jail/bent-bar-window - rotate: false - xy: 1005, 781 - size: 17, 33 - orig: 17, 33 - offset: 0, 0 - index: -1 outside-jail/candle-aura2 rotate: false xy: 324, 453 @@ -1214,9 +1207,16 @@ talk-bg-2 orig: 21, 40 offset: 0, 0 index: -1 +title/screenshot-backdrop + rotate: false + xy: 973, 867 + size: 48, 38 + orig: 48, 38 + offset: 0, 0 + index: -1 wizard/experiment-2 rotate: false - xy: 973, 816 + xy: 973, 776 size: 45, 55 orig: 45, 55 offset: 0, 0 @@ -1241,13 +1241,6 @@ black orig: 32, 24 offset: 0, 0 index: -1 -castle-gate/goon-2 - rotate: false - xy: 986, 81 - size: 24, 32 - orig: 24, 32 - offset: 0, 0 - index: -1 castle-gate/stash-closed rotate: false xy: 853, 192 @@ -1306,7 +1299,7 @@ dream/fairy-godfather-magic index: -1 dream/island rotate: false - xy: 986, 115 + xy: 992, 492 size: 30, 20 orig: 30, 20 offset: 0, 0 @@ -1425,7 +1418,7 @@ held/bloodclot-head-6 index: -1 held/flesh rotate: false - xy: 975, 11 + xy: 986, 40 size: 20, 20 orig: 20, 20 offset: 0, 0 @@ -1451,6 +1444,13 @@ inside-cafeteria/ladder-guard orig: 74, 87 offset: 0, 0 index: -1 +inside-cafeteria/ladder-guard-2 + rotate: false + xy: 986, 62 + size: 30, 73 + orig: 30, 73 + offset: 0, 0 + index: -1 inside-castle/background rotate: false xy: 2, 416 @@ -1458,13 +1458,6 @@ inside-castle/background orig: 320, 240 offset: 0, 0 index: -1 -inside-castle/magic - rotate: false - xy: 997, 11 - size: 20, 20 - orig: 20, 20 - offset: 0, 0 - index: -1 inside-house/background rotate: false xy: 646, 615 @@ -1486,13 +1479,6 @@ inside-jail/chest-top orig: 44, 32 offset: 0, 0 index: -1 -inside-jail/chest-top-open - rotate: false - xy: 973, 480 - size: 44, 32 - orig: 44, 32 - offset: 0, 0 - index: -1 inside-jail/moveable-bars rotate: false xy: 958, 861 @@ -1502,14 +1488,14 @@ inside-jail/moveable-bars index: -1 inside-jail/window rotate: false - xy: 935, 2 + xy: 945, 82 size: 18, 29 orig: 18, 29 offset: 0, 0 index: -1 inside-jail/window-bent rotate: false - xy: 955, 2 + xy: 965, 82 size: 18, 29 orig: 18, 29 offset: 0, 0 @@ -1556,6 +1542,20 @@ outside-jail/background orig: 320, 240 offset: 0, 0 index: -1 +outside-jail/bent-bar-window + rotate: false + xy: 973, 479 + size: 17, 33 + orig: 17, 33 + offset: 0, 0 + index: -1 +outside-jail/candle + rotate: false + xy: 935, 6 + size: 80, 25 + orig: 80, 25 + offset: 0, 0 + index: -1 outside-jail/closed-stash rotate: false xy: 968, 829 @@ -1654,20 +1654,6 @@ wizard/experiment-7 orig: 45, 55 offset: 0, 0 index: -1 -wizard/stand - rotate: false - xy: 986, 33 - size: 20, 46 - orig: 20, 46 - offset: 0, 0 - index: -1 -wizard - rotate: false - xy: 986, 33 - size: 20, 46 - orig: 20, 46 - offset: 0, 0 - index: -1 pack4.png size: 1024,1024 @@ -1697,7 +1683,7 @@ castle-gate/goon-2-search index: -1 castle-gate/goon-2-talk rotate: false - xy: 598, 942 + xy: 968, 2 size: 24, 32 orig: 24, 32 offset: 0, 0 @@ -1856,6 +1842,13 @@ inside-cafeteria/knights-stand orig: 490, 80 offset: 0, 0 index: -1 +inside-castle/magic + rotate: false + xy: 994, 14 + size: 20, 20 + orig: 20, 20 + offset: 0, 0 + index: -1 inside-house/candle rotate: false xy: 494, 942 @@ -1877,6 +1870,13 @@ inside-jail/bars- orig: 320, 240 offset: 0, 0 index: -1 +inside-jail/chest-top-open + rotate: false + xy: 598, 942 + size: 44, 32 + orig: 44, 32 + offset: 0, 0 + index: -1 outside-castle/blanket rotate: false xy: 876, 976 @@ -1886,7 +1886,7 @@ outside-castle/blanket index: -1 outside-castle/peddler rotate: false - xy: 623, 178 + xy: 623, 130 size: 18, 36 orig: 18, 36 offset: 0, 0 @@ -1954,6 +1954,20 @@ wizard/magic-hands orig: 40, 50 offset: 0, 0 index: -1 +wizard/stand + rotate: false + xy: 623, 168 + size: 20, 46 + orig: 20, 46 + offset: 0, 0 + index: -1 +wizard + rotate: false + xy: 623, 168 + size: 20, 46 + orig: 20, 46 + offset: 0, 0 + index: -1 pack5.png size: 1024,1024 @@ -2121,13 +2135,6 @@ inside-jail/fg orig: 320, 240 offset: 0, 0 index: -1 -outside-jail/candle - rotate: false - xy: 202, 3 - size: 80, 25 - orig: 80, 25 - offset: 0, 0 - index: -1 outsidehouse/fence rotate: false xy: 2, 56 diff --git a/desktop/resources/packed/pack.png b/desktop/resources/packed/pack.png index ffa009bc..fa82edda 100644 Binary files a/desktop/resources/packed/pack.png and b/desktop/resources/packed/pack.png differ diff --git a/desktop/resources/packed/pack2.png b/desktop/resources/packed/pack2.png index 3afb8921..ea9a7070 100644 Binary files a/desktop/resources/packed/pack2.png and b/desktop/resources/packed/pack2.png differ diff --git a/desktop/resources/packed/pack3.png b/desktop/resources/packed/pack3.png index 4a6d76b2..a5c7e40d 100644 Binary files a/desktop/resources/packed/pack3.png and b/desktop/resources/packed/pack3.png differ diff --git a/desktop/resources/packed/pack4.png b/desktop/resources/packed/pack4.png index 7c10cc67..fbb35609 100644 Binary files a/desktop/resources/packed/pack4.png and b/desktop/resources/packed/pack4.png differ diff --git a/desktop/resources/packed/pack5.png b/desktop/resources/packed/pack5.png index 34d50307..3b7c245a 100644 Binary files a/desktop/resources/packed/pack5.png and b/desktop/resources/packed/pack5.png differ diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index 61c08cfd..689b21b8 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -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))