diff --git a/desktop/resources/ego/swing-shovel.png b/desktop/resources/ego/swing-shovel.png new file mode 100644 index 00000000..1de2de5e Binary files /dev/null and b/desktop/resources/ego/swing-shovel.png differ diff --git a/desktop/resources/ego/swingshovel.pxa/0.pxi b/desktop/resources/ego/swingshovel.pxa/0.pxi index 091cca71..e7f76a2b 100644 Binary files a/desktop/resources/ego/swingshovel.pxa/0.pxi and b/desktop/resources/ego/swingshovel.pxa/0.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/1.pxi b/desktop/resources/ego/swingshovel.pxa/1.pxi index fe22d84d..7930ee45 100644 Binary files a/desktop/resources/ego/swingshovel.pxa/1.pxi and b/desktop/resources/ego/swingshovel.pxa/1.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/2.pxi b/desktop/resources/ego/swingshovel.pxa/2.pxi index e3072364..0a85d0b3 100644 Binary files a/desktop/resources/ego/swingshovel.pxa/2.pxi and b/desktop/resources/ego/swingshovel.pxa/2.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/3.pxi b/desktop/resources/ego/swingshovel.pxa/3.pxi index da0a6c2f..771c7fbb 100644 Binary files a/desktop/resources/ego/swingshovel.pxa/3.pxi and b/desktop/resources/ego/swingshovel.pxa/3.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/4.pxi b/desktop/resources/ego/swingshovel.pxa/4.pxi new file mode 100644 index 00000000..bd44f94a Binary files /dev/null and b/desktop/resources/ego/swingshovel.pxa/4.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/5.pxi b/desktop/resources/ego/swingshovel.pxa/5.pxi new file mode 100644 index 00000000..571395ff Binary files /dev/null and b/desktop/resources/ego/swingshovel.pxa/5.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/6.pxi b/desktop/resources/ego/swingshovel.pxa/6.pxi new file mode 100644 index 00000000..6940f693 Binary files /dev/null and b/desktop/resources/ego/swingshovel.pxa/6.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/7.pxi b/desktop/resources/ego/swingshovel.pxa/7.pxi new file mode 100644 index 00000000..b8e688f5 Binary files /dev/null and b/desktop/resources/ego/swingshovel.pxa/7.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/8.pxi b/desktop/resources/ego/swingshovel.pxa/8.pxi new file mode 100644 index 00000000..a68375d7 Binary files /dev/null and b/desktop/resources/ego/swingshovel.pxa/8.pxi differ diff --git a/desktop/resources/ego/swingshovel.pxa/CelData.plist b/desktop/resources/ego/swingshovel.pxa/CelData.plist index f0b74d60..9088485c 100644 --- a/desktop/resources/ego/swingshovel.pxa/CelData.plist +++ b/desktop/resources/ego/swingshovel.pxa/CelData.plist @@ -18,5 +18,25 @@ duration 1 + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + diff --git a/desktop/src-common/advent/screens/rooms/dream.clj b/desktop/src-common/advent/screens/rooms/dream.clj index 84c180f4..84f85526 100644 --- a/desktop/src-common/advent/screens/rooms/dream.clj +++ b/desktop/src-common/advent/screens/rooms/dream.clj @@ -225,7 +225,10 @@ :sword (assoc (texture "dream/sword.png") :x 144 :y 122 :baseline 139 :script (actions/get-script entities - (read-sword-plaque entities))) + (read-sword-plaque entities)) + :scripts {:shovel (actions/get-script entities + (actions/walk-to entities :ego [148 76] :face :right) + (actions/play-animation entities :ego :swing-shovel))}) :broom (assoc (texture "dream/broom.png") :x 286 :y 122 :path (catmull-rom-spline (map #(apply vector-2* %) [[286 122] [286 128]]) true) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 62b6d02a..59d51af5 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -200,6 +200,7 @@ glad (utils/make-anim "ego/glad.png" [20 46] 0.04 (flatten [0 1 2 3 4 (repeat 8 [5 5 5]) (repeat 20 0)])) milk (utils/make-anim "ego/squat.png" [18 36] 0.05 [0 1 2 2 3 3 3 3 3 3 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 3 3 3 3 3 3 3 3 3 3 3 2 1 0]) throw (utils/make-anim "ego/throw.png" [18 36] 0.04 (flatten [[(repeat 5 0) (repeat 10 1)] (repeat 3 [2 2 2 3 3 3 4 4 4 5 5 5]) (repeat 5 [2 2 3 3 4 4 5 5]) (repeat 10 [2 3 4 5]) [2 3 3] (repeat 15 6)])) + swing-shovel (utils/make-anim "ego/swing-shovel.png" [70 70] 0.1 (range 9)) ego {:right {:walk walk-right :stand stand-anim @@ -237,7 +238,9 @@ :sigh sigh :glad glad :milk milk - :throw throw} + :throw throw + :swing-shovel swing-shovel + } :left {:walk (utils/flip walk-right) :stand (utils/flip stand-anim) :talk (utils/flip talk-anim) @@ -265,7 +268,8 @@ :sigh (utils/flip sigh) :glad (utils/flip glad) :milk (utils/flip milk) - :throw (utils/flip throw)} + :throw (utils/flip throw) + :swing-shovel (utils/flip swing-shovel)} :baseline (- 240 (last start-pos)) :facing :right :origin-x 9 @@ -324,6 +328,7 @@ nil)) :x (first start-pos) :y (last start-pos) :id "ego"} + ego (assoc ego :anim-sound-frames {(get-in ego [:left :walk]) {2 [:step-sound-1 1.0] 6 [:step-sound-2 0.8]} (get-in ego [:right :walk]) {2 [:step-sound-1 1.0] @@ -350,6 +355,8 @@ (get-in ego [:right :milk]) {8 [:milk-sound 1.0]} } :anim-merges {(get-in ego [:right :shock]) {:origin-x 15} + (get-in ego [:left :swing-shovel]) {:origin-x 26} + (get-in ego [:right :swing-shovel]) {:origin-x 26} :default {:origin-x 9}})] (actions/start-animation screen (merge (animation->texture screen (:stand (:right ego))) ego) @@ -395,7 +402,13 @@ (merge entity (animation->texture (update-in screen [:total-time] #(- % (:anim-start entity))) (:anim entity)) {:current-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity)))) - :previous-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity) (or (:delta-time screen) 0))))} + :previous-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity) (or (:delta-time screen) 0)))) + :origin-x (or (get-in entity [:anim-origins (:anim entity) 0]) + (:base-origin-x entity) + (:origin-x entity)) + :origin-y (or (get-in entity [:anim-origins (:anim entity) 1]) + (:base-origin-y entity) + (:origin-y entity))} (or (get-in entity [:anim-merges (:anim entity)]) (get-in entity [:anim-merges :default]))))