diff --git a/desktop/project.clj b/desktop/project.clj index b01b19f5..ab98ded7 100644 --- a/desktop/project.clj +++ b/desktop/project.clj @@ -21,6 +21,10 @@ :javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"] :omit-source true :aliases {"pack" ["run" "-m" "com.badlogic.gdx.tools.texturepacker.TexturePacker" "asset-work/" "resources/packed/"]} + :profiles { + :dev { + :warn-on-reflection true} + } :aot [advent.core.desktop-launcher] :main advent.core.desktop-launcher) diff --git a/desktop/src-common/advent/core.clj b/desktop/src-common/advent/core.clj index c09158fd..5562de9b 100644 --- a/desktop/src-common/advent/core.clj +++ b/desktop/src-common/advent/core.clj @@ -24,7 +24,7 @@ (defgame advent :on-create (fn [this] - (on-gl (set-screen! this title/title-screen)))) + (set-screen! this title/title-screen))) (defn reload [] diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 85eb9519..c8517e9a 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -689,11 +689,9 @@ void main() :talk-color (color 0.6 1.0 1.0 1.0) :stand-override nil :mouse-in? (fn [entities x y] - (let [{entity-x :x entity-y :y region :object scale :scale-x} (get-in entities [:room :entities :ego]) + (let [{entity-x :x entity-y :y ^TextureRegion region :object scale :scale-x} (get-in entities [:room :entities :ego]) half-width (/ (* (.getRegionWidth region) (or scale 1.0)) 2) height (* (.getRegionHeight region) (or scale 1.0))] - #_(clojure.pprint/pprint [["point" x y] - ["entity " (- entity-x half-width) entity-y (+ entity-x half-width) (+ entity-y height)]]) ((zone/box (- entity-x half-width) entity-y (+ entity-x half-width) (+ entity-y height)) x y))) :get-script get-ego-script @@ -808,8 +806,8 @@ void main() (defn animate [entity screen] (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)))) + {:current-frame-index (animation! ^Animation (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity)))) + :previous-frame-index (animation! ^Animation (: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)) @@ -954,9 +952,9 @@ void main() (fn [screen entities] (let [screen (assoc screen :total-time 0)] - (let [[cam] (utils/setup-viewport screen 320 240)] + (let [[^OrthographicCamera cam] (utils/setup-viewport screen 320 240)] (set! (. cam zoom) 0.95) - (let [shader (ShaderProgram. v-shader pix-shader) + (let [shader (ShaderProgram. ^String v-shader ^String pix-shader) _ (update! screen :shader shader) rooms {:inside-house (rooms.inside-house/make screen) :inside-stash (rooms.inside-stash/make screen) @@ -1052,7 +1050,7 @@ void main() nil) :on-render - (fn [{:keys [camera ^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} [entities]] (.apply viewport) (if (get-in entities [:closing? :value]) @@ -1132,7 +1130,7 @@ void main() entities)))) - :on-resize (fn [{:keys [viewport width height]} [entities]] + :on-resize (fn [{:keys [^FitViewport viewport width height]} [entities]] (.update viewport width height)) :on-hide (fn [screen [entities]] @@ -1148,7 +1146,7 @@ void main() mouse-moved :on-touch-down - (fn [{:keys [input-x input-y viewport] :as screen} [entities]] + (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]] (when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport) input-x input-y) @@ -1162,7 +1160,7 @@ void main() interacting-entity (get-interacting-entity entities x y)] (assoc-in entities [:cursor :down-target] (or (:id interacting-entity ) (:id interaction) nil)))))) - :on-touch-up (fn [{:keys [input-x input-y viewport] :as screen} [entities]] + :on-touch-up (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]] (when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport) @@ -1240,8 +1238,8 @@ void main() entities) :on-resize - (fn [screen entities] - (.update (:viewport screen) (:width screen) (:height screen) true)) + (fn [{:keys [^FitViewport viewport width height]} entities] + (.update viewport width height true)) ) (defscreen hud @@ -1261,7 +1259,7 @@ void main() :fps (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)})) :on-render - (fn [{:keys [viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} [entities]] (.apply viewport) (let [entities (utils/apply-tweens screen entities (:tweens entities))] #_(label! (:fps entities) :set-text (str (game :fps))) @@ -1269,8 +1267,8 @@ void main() entities)) :on-resize - (fn [screen entities] - (.update (:viewport screen) (:width screen) (:height screen) true)) + (fn [{:keys [^FitViewport viewport width height]} entities] + (.update viewport width height true)) :on-mouse-moved (fn [screen [entities]] diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index 1e0f67de..343abfeb 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -21,7 +21,6 @@ [com.badlogic.gdx Application Audio Files Game Gdx Graphics Input InputMultiplexer InputProcessor Net Preferences Screen])) - (defn get-color [e mouse-pos] (if (utils/intersects? e mouse-pos) (color :yellow) diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index 995a87ab..a58d5b8b 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -9,9 +9,10 @@ [clojure.edn :as edn] [clojure.string :as str]) (:import [com.badlogic.gdx.graphics Pixmap Pixmap$Blending Pixmap$Filter Texture Texture$TextureFilter] - [com.badlogic.gdx.graphics.g2d TextureRegion] + [com.badlogic.gdx.graphics.g2d TextureRegion Animation] [com.badlogic.gdx.utils.viewport FitViewport] [com.badlogic.gdx.scenes.scene2d Actor Stage] + [com.badlogic.gdx.math CatmullRomSpline] [com.badlogic.gdx Application Audio Files Game Gdx Graphics Input InputMultiplexer InputProcessor Net Preferences Screen] [java.lang Object])) @@ -79,7 +80,7 @@ (let [font (bitmap-font filename) tr (bitmap-font! font :get-region) tx (.getTexture tr)] - (texture! tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear) + (call! ^Texture tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear) font)) (def +screen-width+ 320) @@ -126,12 +127,12 @@ (Math/sqrt (+ (* dx dx) (* dy dy))))) -(defn flip [anim] +(defn flip [^Animation anim] (animation (animation! anim :get-frame-duration) (for [src-frame (animation! anim :get-key-frames) :let [frame (texture (texture! src-frame :get-texture))]] (do - (texture! frame :set-region src-frame) + (texture! frame :set-region ^TextureRegion src-frame) (texture! frame :flip true false) frame)))) @@ -161,7 +162,7 @@ (let [speed 0.05 pos-f (- (* (:total-time screen) speed) (int (* (:total-time screen) speed))) v (vector-2 0 0) - a (catmull-rom-spline! (:path entity) :value-at v pos-f)] + a (catmull-rom-spline! ^CatmullRomSpline (:path entity) :value-at v pos-f)] (assoc entity :x (vector-2! v :x) :y (vector-2! v :y))))))) (defn path-point [speed screen entities entity] @@ -172,7 +173,7 @@ (if (:path entity) (let [pos-f (- (path-point speed screen entities entity) (int (* (- (:total-time screen) (:path-start-time entity 0.0)) speed))) v (vector-2 0 0) - a (catmull-rom-spline! (:path entity) :value-at v pos-f)] + a (catmull-rom-spline! ^CatmullRomSpline (:path entity) :value-at v pos-f)] (assoc entity :x (vector-2! v :x) :y (vector-2! v :y))) entity)) @@ -217,8 +218,8 @@ (defn intersects? [e [x y]] (and (:object e) - (< (:x e) x (+ (:x e) (or (:width e) (.getWidth (:object e))))) - (< (:y e) y (+ (:y e) (or (:height e) (.getHeight (:object e))))))) + (< (:x e) x (+ (:x e) (or (:width e) (.getWidth ^Actor (:object e))))) + (< (:y e) y (+ (:y e) (or (:height e) (.getHeight ^Actor (:object e))))))) (defn get-current-music [entities] (let [time (get-in entities [:state :time]) @@ -263,7 +264,7 @@ (and is-script-running (= :none (get-in entities [:actions :last-skip-type]))))) -(defn update-override [{:keys [viewport] :as screen} entities] +(defn update-override [{:keys [^FitViewport viewport] :as screen} entities] (let [raw-pos (get-in entities [:cursor :last-pos]) last-pos (unproject screen raw-pos) mouse-override (find-override entities last-pos)