diff --git a/desktop/resources/bg3.png b/desktop/resources/bg3.png index ff3163d3..09f89958 100644 Binary files a/desktop/resources/bg3.png and b/desktop/resources/bg3.png differ diff --git a/desktop/resources/bg4.png b/desktop/resources/bg4.png new file mode 100644 index 00000000..76cb39a2 Binary files /dev/null and b/desktop/resources/bg4.png differ diff --git a/desktop/resources/bg4.png.pxi b/desktop/resources/bg4.png.pxi new file mode 100644 index 00000000..96724bb4 Binary files /dev/null and b/desktop/resources/bg4.png.pxi differ diff --git a/desktop/resources/bg4.pxi b/desktop/resources/bg4.pxi new file mode 100644 index 00000000..96724bb4 Binary files /dev/null and b/desktop/resources/bg4.pxi differ diff --git a/desktop/resources/bg5.png b/desktop/resources/bg5.png new file mode 100644 index 00000000..3d3d380b Binary files /dev/null and b/desktop/resources/bg5.png differ diff --git a/desktop/resources/cursor.png b/desktop/resources/cursor.png new file mode 100644 index 00000000..0c56ca30 Binary files /dev/null and b/desktop/resources/cursor.png differ diff --git a/desktop/resources/cursorr.png b/desktop/resources/cursorr.png new file mode 100644 index 00000000..4f24878e Binary files /dev/null and b/desktop/resources/cursorr.png differ diff --git a/desktop/resources/left.pxa/0.pxi b/desktop/resources/left.pxa/0.pxi index f3576aa8..c90bb7ff 100644 Binary files a/desktop/resources/left.pxa/0.pxi and b/desktop/resources/left.pxa/0.pxi differ diff --git a/desktop/resources/left.pxa/1.pxi b/desktop/resources/left.pxa/1.pxi index 18579845..cd9d2910 100644 Binary files a/desktop/resources/left.pxa/1.pxi and b/desktop/resources/left.pxa/1.pxi differ diff --git a/desktop/resources/left.pxa/2.pxi b/desktop/resources/left.pxa/2.pxi index 7f72456f..c0a4db46 100644 Binary files a/desktop/resources/left.pxa/2.pxi and b/desktop/resources/left.pxa/2.pxi differ diff --git a/desktop/resources/left.pxa/3.pxi b/desktop/resources/left.pxa/3.pxi index 0b75c089..e1fa5995 100644 Binary files a/desktop/resources/left.pxa/3.pxi and b/desktop/resources/left.pxa/3.pxi differ diff --git a/desktop/resources/left.pxa/4.pxi b/desktop/resources/left.pxa/4.pxi index 64d1739f..8091cbc2 100644 Binary files a/desktop/resources/left.pxa/4.pxi and b/desktop/resources/left.pxa/4.pxi differ diff --git a/desktop/resources/left.pxa/5.pxi b/desktop/resources/left.pxa/5.pxi index b217839c..ae9168db 100644 Binary files a/desktop/resources/left.pxa/5.pxi and b/desktop/resources/left.pxa/5.pxi differ diff --git a/desktop/resources/left.pxa/6.pxi b/desktop/resources/left.pxa/6.pxi index a055f06d..9e825771 100644 Binary files a/desktop/resources/left.pxa/6.pxi and b/desktop/resources/left.pxa/6.pxi differ diff --git a/desktop/resources/left.pxa/7.pxi b/desktop/resources/left.pxa/7.pxi index c30e2643..9ae651c5 100644 Binary files a/desktop/resources/left.pxa/7.pxi and b/desktop/resources/left.pxa/7.pxi differ diff --git a/desktop/resources/lttp.pxpalette b/desktop/resources/lttp.pxpalette new file mode 100644 index 00000000..e5d26cc5 Binary files /dev/null and b/desktop/resources/lttp.pxpalette differ diff --git a/desktop/resources/pal.pxpalette b/desktop/resources/pal.pxpalette index 5734a284..5fecde14 100644 Binary files a/desktop/resources/pal.pxpalette and b/desktop/resources/pal.pxpalette differ diff --git a/desktop/resources/player.png b/desktop/resources/player.png index 6618be42..eb2cfc3a 100644 Binary files a/desktop/resources/player.png and b/desktop/resources/player.png differ diff --git a/desktop/src-common/advent/core.clj b/desktop/src-common/advent/core.clj index 10f12de2..5c626533 100644 --- a/desktop/src-common/advent/core.clj +++ b/desktop/src-common/advent/core.clj @@ -1,22 +1,52 @@ (ns advent.core (:require [play-clj.core :refer :all] [play-clj.ui :refer :all] - [play-clj.g2d :refer :all])) + [play-clj.utils :refer :all] + [play-clj.g2d :refer :all] + [clojure.pprint]) + (:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter])) + +(def scale 4) +(def +screen-width+ 320) +(def +screen-height+ 240) + +(defn cursor [filename index] + (let [base-cursor (pixmap filename) + target-width (* 16 scale) + target-height (* 16 scale) + resized (Pixmap. target-width target-height (.getFormat base-cursor))] + (Pixmap/setFilter Pixmap$Filter/NearestNeighbour) + (pixmap! resized :draw-pixmap base-cursor (* index 16) 0 16 16 + 0 0 target-width target-height) + resized )) + +(defn right-click [screen entities] + (if (= (button-code :right) (:button screen)) + (for [entity entities] + (if (= (:id entity) "cursor") + (let [entity (assoc entity :cursor-index (case (:cursor-index entity) + 0 1 + 1 0))] + (input! :set-cursor-image (cursor "cursor.png" (:cursor-index entity)) 0 0 ) + entity) + entity)))) (defscreen main-screen :on-show (fn [screen entities] (update! screen :renderer (stage) :camera (orthographic)) (let [player-sheet (texture! (texture "player.png") :split 18 36) - background (texture "bg3.png")] - [(assoc background :scale-y 1.0 :scale-x 1.0 :origin-y 0 :origin-x 0 :ego? false :x -60 :y -34) - {:right (animation 0.1 (for [i (range 8)] + _ (input! :set-cursor-image (cursor "cursor.png" 0) 0 0) + background (texture "bg5.png")] + [{:id "cursor" :cursor-index 0} + (assoc background :origin-y 0 :origin-x 0 :ego? false :x 0 :y 0 :scale-x 1 :scale-y 1) + {:right (animation 0.075 (for [i (range 8)] (texture (aget player-sheet 0 i)))) - :left (animation 0.1 (for [i (range 8)] + :left (animation 0.075 (for [i (range 8)] (texture (aget player-sheet 1 i)))) - :anim (animation 0.1 (for [i (range 8)] + :anim (animation 0.075 (for [i (range 8)] (texture (aget player-sheet 0 i)))) - :x 0 :y 25 :origin-x 0 :origin-y 0 :x-velocity 1 + :x 0 :y 75 :origin-x 0 :origin-y 0 :x-velocity 1 :ego? true}])) :on-render @@ -25,23 +55,33 @@ (render! screen (for [entity entities] (if (:ego? entity) (merge (animation->texture screen (:anim entity)) - {:ego? (:ego? entity) :x (+ (:x entity) (:x-velocity entity)) :y 0 :origin-x 0 :origin-y 0 :anim (:anim entity) :x-velocity (:x-velocity entity) :left (:left entity) :right (:right entity)} + {:ego? (:ego? entity) :x (+ (:x entity) (:x-velocity entity)) :y 75 :origin-x 0 :origin-y 0 :anim (:anim entity) :x-velocity (:x-velocity entity) :left (:left entity) :right (:right entity)} (when (> (:x entity) (width screen)) {:x-velocity -1 :anim (:left entity)}) (when (< (:x entity) 0) {:x-velocity 1 :anim (:right entity)})) entity)))) - :on-resize - (fn [screen entities] - (height! screen 135)) + :on-resize (fn [screen entities] + (size! screen 320 240)) - :on-scrolled - (fn [screen entities] + #_:on-mouse-moved #_(fn [screen entities] + (for [entity entities] + (if (= (:id entity) "cursor") + (let [{:keys [x y]} (input->screen screen (min +screen-width+ (max 0 (:input-x screen))) (max 0 (min +screen-height+ (:input-y screen))))] + (assoc entity :x x :y y)) + entity))) + + :on-touch-down (fn [screen entities] + (right-click screen entities)) + + #_:on-scrolled + #_(fn [screen entities] (set! (. (:camera screen) zoom) (min 1.5 (max (+ (.zoom (:camera screen)) (* 0.01 (:amount screen))) 1))) nil)) (defgame advent :on-create (fn [this] - (set-screen! this main-screen))) + (set-screen! this main-screen) + #_(input! :set-cursor-catched true))) diff --git a/desktop/src/advent/core/desktop_launcher.clj b/desktop/src/advent/core/desktop_launcher.clj index 483b5271..89d3c17d 100644 --- a/desktop/src/advent/core/desktop_launcher.clj +++ b/desktop/src/advent/core/desktop_launcher.clj @@ -6,5 +6,5 @@ (defn -main [] - (LwjglApplication. advent "advent" 1920 1080) + (LwjglApplication. advent "advent" 1280 960) (Keyboard/enableRepeatEvents true))