From 6419638b5e947d3d05dcb6af96e99aa96fd064d7 Mon Sep 17 00:00:00 2001 From: Remington Covert Date: Sat, 21 Feb 2015 01:18:07 -0800 Subject: [PATCH] resizing is well on its way to working. --- desktop/project.clj | 16 +-- desktop/src-common/advent/actions.clj | 2 - .../src-common/advent/screens/dialogue.clj | 16 +-- .../src-common/advent/screens/inventory.clj | 7 +- .../advent/screens/rooms/outside_house.clj | 2 +- desktop/src-common/advent/screens/safe.clj | 10 +- desktop/src-common/advent/screens/scene.clj | 104 ++++++++++++------ desktop/src-common/advent/screens/title.clj | 70 +++++++----- desktop/src-common/advent/utils.clj | 20 ++++ desktop/src/advent/core/desktop_launcher.clj | 11 +- 10 files changed, 165 insertions(+), 93 deletions(-) diff --git a/desktop/project.clj b/desktop/project.clj index 4b4dc789..c5941e2a 100644 --- a/desktop/project.clj +++ b/desktop/project.clj @@ -1,16 +1,16 @@ (defproject advent "0.0.1-SNAPSHOT" :description "FIXME: write description" - :dependencies [[com.badlogicgames.gdx/gdx "1.5.0"] - [com.badlogicgames.gdx/gdx-backend-lwjgl "1.5.0"] - [com.badlogicgames.gdx/gdx-box2d "1.5.0"] - [com.badlogicgames.gdx/gdx-tools "1.5.0"] - [com.badlogicgames.gdx/gdx-box2d-platform "1.5.0" + :dependencies [[com.badlogicgames.gdx/gdx "1.5.3"] + [com.badlogicgames.gdx/gdx-backend-lwjgl "1.5.3"] + [com.badlogicgames.gdx/gdx-box2d "1.5.3"] + [com.badlogicgames.gdx/gdx-tools "1.5.3"] + [com.badlogicgames.gdx/gdx-box2d-platform "1.5.3" :classifier "natives-desktop"] - [com.badlogicgames.gdx/gdx-bullet "1.5.0"] - [com.badlogicgames.gdx/gdx-bullet-platform "1.5.0" + [com.badlogicgames.gdx/gdx-bullet "1.5.3"] + [com.badlogicgames.gdx/gdx-bullet-platform "1.5.3" :classifier "natives-desktop"] - [com.badlogicgames.gdx/gdx-platform "1.5.0" + [com.badlogicgames.gdx/gdx-platform "1.5.3" :classifier "natives-desktop"] [org.clojure/clojure "1.6.0"] [org.clojure/tools.nrepl "0.2.7"] diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj index 4643f276..5204d7ba 100644 --- a/desktop/src-common/advent/actions.clj +++ b/desktop/src-common/advent/actions.clj @@ -566,8 +566,6 @@ (assoc-in e [:cursor :current] :main))) (continue [this screen entities] - (when music-changed? - (music! (get-in entities [:musics old-music]) :set-volume (max (- 1.0 (get-in entities [:fade :opacity])) 0.0))) entities) (done? [this screen entities] diff --git a/desktop/src-common/advent/screens/dialogue.clj b/desktop/src-common/advent/screens/dialogue.clj index c4c08688..21f1c17d 100644 --- a/desktop/src-common/advent/screens/dialogue.clj +++ b/desktop/src-common/advent/screens/dialogue.clj @@ -27,7 +27,7 @@ (defscreen talking-screen :on-show (fn [screen entities] - (update! screen :renderer (stage) :camera (orthographic)) + (utils/setup-viewport screen 1280 960) {}) :on-render (fn [screen [entities]] @@ -60,8 +60,8 @@ (dissoc entities target-id)) - :on-resize (fn [screen entities] - (size! screen 1280 960))) + :on-resize (fn [{:keys [viewport width height]} entities] + (.update viewport width height))) (def choice-height 30) @@ -81,7 +81,7 @@ (defscreen choice-screen :on-show (fn [screen entities] - (update! screen :renderer (stage) :camera (orthographic)) + (utils/setup-viewport screen 1280 960) (let [font (bitmap-font "ego/font.fnt" ) tr (bitmap-font! font :get-region) scale 1 @@ -117,7 +117,7 @@ (assoc-in [:state :np :height] (* 30 (inc choice-count)))))) :on-touch-up (fn [screen [entities]] - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] + (let [[x y] (utils/unproject screen)] (when (seq (get-in entities [:state :choices])) (when-let [choice (first (filter #(utils/intersects? % [x y]) (vals entities)))] ((get-in entities [:state :callback]) (:index choice)) @@ -127,7 +127,7 @@ (select-keys [:state])))))) :on-mouse-moved (fn [screen [entities]] - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)}) + (let [[x y] (utils/unproject screen) entities (assoc-in entities [:state :last-pos] [x y]) choice-count (dec (count entities))] (doseq [e (vals entities) @@ -135,5 +135,5 @@ (style-label e (get-in entities [:state :font]) [x y])) entities)) - :on-resize (fn [screen entities] - (size! screen 1280 960))) + :on-resize (fn [{:keys [width height viewport]} entities] + (.update viewport width height))) diff --git a/desktop/src-common/advent/screens/inventory.clj b/desktop/src-common/advent/screens/inventory.clj index 6916e4e2..c2b86d74 100644 --- a/desktop/src-common/advent/screens/inventory.clj +++ b/desktop/src-common/advent/screens/inventory.clj @@ -24,7 +24,8 @@ (defscreen inventory-screen :on-show (fn [screen entities] - (update! screen :renderer (stage) :camera (orthographic)) + (utils/setup-viewport screen 1280 960) + (let [highlighted-text (assoc (label "Hello" (style :label (utils/get-font "ego/font.fnt") (color :white))) :x 0 :y 850 :width 1280)] (label! highlighted-text :set-alignment Align/center) {:overlay (assoc (texture "inventory-overlay.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0) @@ -78,7 +79,7 @@ :box (zone/box (- offset-x padding) (- offset-y padding) (+ offset-x item-width padding) (+ offset-y item-width padding)))))) :on-mouse-moved (fn [screen [entities]] - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)}) + (let [[x y] (utils/unproject screen) selected-entity (first (filter #((:box %) x y) (:items entities)))] (if selected-entity (assoc entities :highlighted-item (:item selected-entity)) @@ -101,4 +102,4 @@ (close entities))))) :on-resize (fn [screen entities] - (size! screen 1280 960))) + (.update (:viewport screen) (:width screen) (:height screen) true))) diff --git a/desktop/src-common/advent/screens/rooms/outside_house.clj b/desktop/src-common/advent/screens/rooms/outside_house.clj index 9c87bfdb..c2d00400 100644 --- a/desktop/src-common/advent/screens/rooms/outside_house.clj +++ b/desktop/src-common/advent/screens/rooms/outside_house.clj @@ -255,7 +255,7 @@ (wizard-dialogue entities))))) :cursor :right} - :right-dir {:box [220 141 320 224] + :right-dir {:box [220 141 320 204] :script (actions/get-script entities (actions/walk-to entities :ego [244 150]) diff --git a/desktop/src-common/advent/screens/safe.clj b/desktop/src-common/advent/screens/safe.clj index 0f48dfd2..8ccece6b 100644 --- a/desktop/src-common/advent/screens/safe.clj +++ b/desktop/src-common/advent/screens/safe.clj @@ -39,7 +39,8 @@ (defscreen safe-screen :on-show (fn [screen entities] - (update! screen :renderer (stage) :camera (orthographic)) + (utils/setup-viewport screen 320 240) + (let [inputed-key (texture "inside-house/inputed-key.png")] {:fade (assoc (texture "black.png") :scale-x 80 @@ -79,7 +80,7 @@ :on-touch-up (fn [screen [entities]] (when (:shown? entities) - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] + (let [[x y] (utils/unproject screen)] (if-let [button (get-button [x y])] (do (sound! (:sound button) :play) (let [new-state (update-in entities [:button-choices] #(conj % (:id button)))] @@ -103,6 +104,7 @@ (< y start-y) (> y (+ start-y 75))) (close entities)))))) + + :on-resize (fn [{:keys [width height viewport]} entities] + (.update viewport width height))) - :on-resize (fn [screen entities] - (size! screen 320 240))) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 44f34573..030a8136 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -3,6 +3,7 @@ (:require [play-clj.core :refer :all] [play-clj.ui :refer :all] [play-clj.utils :refer :all] + [play-clj.math :refer :all] [play-clj.entities :as entities] [play-clj.g2d :refer :all] [clojure.zip :as zip] @@ -35,9 +36,13 @@ [clojure.core.async :refer [put! ! chan go thread take! alts!!]]) (:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter GL20 GL30] [com.badlogic.gdx.graphics.g2d TextureRegion Animation] + [com.badlogic.gdx.utils.viewport FitViewport] + [com.badlogic.gdx.scenes.scene2d Actor Stage] [java.lang Object] [com.badlogic.gdx Gdx])) +(declare hud) + (def default-interaction {:get-script (fn [cursor [x y]] (if (= :main cursor) @@ -61,7 +66,7 @@ (defn left-click [screen entities] - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] + (let [[x y] (utils/unproject screen)] (let [interaction (first (filter #((:mouse-in? %) entities x y) (get-in entities [:room :interactions]))) interacting-entity (first (sort-by (comp - :baseline) (filter #(and (:mouse-in? %) @@ -387,6 +392,17 @@ :mints-eaten 0 :seen-intro? false})) +(defn fade-in-first-time-if-necessary [screen entities] + (if (not (get-in entities [:started? :value])) + (do (music! (utils/get-current-music entities) :set-volume (get-in entities [:volume :value])) + (utils/play-sound (get-in entities [:musics (actions/get-music (get-in entities [:room :music]) (get-in entities [:state :time]))])) + (assoc entities + :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0 :ease tween/ease-in-cubic) + :fade-in-music (tween/tween :fade-in-music screen [:volume :value] 0.0 1.0 1.0 :ease tween/ease-in-cubic)} + :started? {:value true + :object nil})) + entities)) + (defn play-key-sounds [entities] (doseq [[target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e}] entities] (when (and (not= previous-frame-index current-frame-index) @@ -402,9 +418,9 @@ :y-sign 2.0 :x-sign (/ 1.0 (get-in entities [:ego :scale-x]))) 175.0)))) - vol (* vol vol-scale)] - (when (> vol 0.05) - (sound! (snd e) :play vol))))))) + vol (* vol vol-scale) + vol (max vol 0.005)] + (sound! (snd e) :play vol)))))) (defscreen scene @@ -415,9 +431,8 @@ :on-show (fn [screen entities] (let [screen (assoc screen :total-time 0)] - (let [cam (orthographic)] + (let [[cam] (utils/setup-viewport screen 320 240)] (set! (. cam zoom) 0.95) - (update! screen :renderer (stage) :camera cam) (let [_ (input! :set-cursor-image (utils/cursor "cursor.png" :main) 0 0) rooms {:inside-house (rooms.inside-house/make screen) :inside-stash (rooms.inside-stash/make screen) @@ -434,7 +449,8 @@ :outside-jail (rooms.outside-jail/make screen) :outside-castle (rooms.outside-castle/make screen)} entities {:rooms rooms - :cam {:value cam + + :cam {:zoom 0.95 :object nil} :musics {:object nil :inside-antique (utils/make-music "inside-antique.ogg") @@ -469,27 +485,29 @@ :last :main :override nil :last-pos [0 0]} - :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.5 :ease tween/ease-in-cubic) - :fade-in-music (tween/tween :fade-in-music screen [:volume :value] 0.0 1.0 1.5 :ease tween/ease-in-cubic)} + :all-items (assoc items/items :object nil) + :started? {:value false + :object nil} :room (as-> (get rooms (:last-room (get-state))) room (assoc-in room [:entities :ego] (get-ego screen (:start-pos room) ((:scale-fn room) (:start-pos room)))))}] - (music! (utils/get-current-music entities) :set-volume (get-in entities [:volume :value])) - - (utils/play-sound (get-in entities [:musics (actions/get-music (get-in entities [:room :music]) (get-in entities [:state :time]))])) (doseq [[k [start time fn]] (get-in entities [:room :timers])] (add-timer! screen k start time)) #_(when (not (get-in entities [:state :seen-intro?])) ((actions/get-script entities (rooms.dream/do-intro entities)) entities)) + + (if-let [apply-state (get-in entities [:room :apply-state])] (apply-state entities) entities))))) :on-render - (fn [screen [entities]] - (clear!) - (let [entities (utils/apply-tweens screen entities (:tweens entities)) + (fn [{:keys [camera] :as screen} [entities]] + (clear!) + + (let [entities (fade-in-first-time-if-necessary screen entities) + entities (utils/apply-tweens screen entities (:tweens entities)) entities (update-cursor screen entities) entities (update-from-script screen entities) entities (update-from-hotspots screen entities) @@ -523,9 +541,9 @@ layers (get-layers entities) all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))] - (set! (. (:value (:cam entities)) zoom) (:zoom (:cam entities) 1.0)) - (set! (.. (:value (:cam entities)) position x) (:x (:cam entities) 160.0)) - (set! (.. (:value (:cam entities)) position y) (:y (:cam entities) 120.0)) + (set! (. camera zoom) (:zoom (:cam entities))) + (set! (.. camera position x) (:x (:cam entities) 160.0)) + (set! (.. camera position y) (:y (:cam entities) 120.0)) (when (= (get-in entities [:fade :opacity]) 0.0) @@ -536,8 +554,8 @@ (render! screen (sort-by :baseline all-entities)) entities)) - :on-resize (fn [screen entities] - (size! screen 320 240)) + :on-resize (fn [{:keys [viewport width height]} [entities]] + (.update viewport width height)) :on-hide (fn [screen [entities]] (doseq [snd (->> (get-in entities [:musics]) @@ -546,16 +564,24 @@ (utils/stop-sound snd))) :on-mouse-moved - (fn [screen [entities]] - (let [pos (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] - (utils/update-override (assoc-in entities [:cursor :last-pos] [(:x pos) (:y pos)])))) + (fn [{:keys [input-x input-y viewport] :as screen} [entities]] + (if (utils/contains? (.getScreenX viewport) (.getScreenY viewport) + (.getScreenWidth viewport) (.getScreenHeight viewport) + input-x input-y) + + (let [[x y] (utils/unproject screen)] + (utils/update-override (assoc-in entities [:cursor :last-pos] [x y]))) + (assoc-in entities [:cursor :override] nil))) - :on-touch-up (fn [screen [entities]] - (if (= (button-code :right) - (:button screen)) - (assoc-in entities [:cursor :current] :main) - (when (get-in entities [:state :active?]) - (left-click screen entities)))) + :on-touch-up (fn [{:keys [input-x input-y viewport] :as screen} [entities]] + (when (utils/contains? (.getScreenX viewport) (.getScreenY viewport) + (.getScreenWidth viewport) (.getScreenHeight viewport) + input-x input-y) + (if (= (button-code :right) + (:button screen)) + (assoc-in entities [:cursor :current] :main) + (when (get-in entities [:state :active?]) + (left-click screen entities))))) :on-deactivate (fn [screen [entities]] (assoc-in entities [:state :active?] false)) @@ -571,8 +597,14 @@ :on-show-inventory (fn [screen [entities]] (click-inventory screen entities)) :on-menu (fn [screen [entities]] - (assoc-in entities [:tweens :fade-out] (tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0 :finish #(do (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen)) - %)))) + (-> entities + (assoc-in [:cursor :override] nil) + (assoc-in [:tweens :fade-out-music] + (tween/tween :fade-out-music screen [:volume :value] 1.0 0.0 1.0)) + (assoc-in [:tweens :fade-out] + (tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0 + :finish #(do (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen)) + %))))) :on-start-script (fn [{:keys [script]} [entities]] (script entities) @@ -581,8 +613,9 @@ (defscreen hud :on-show (fn [screen entities] - (let [screen (assoc screen :total-time 0)] - (update! screen :renderer (stage) :camera (orthographic)) + (let [screen (assoc screen :total-time 0)] + (utils/setup-viewport screen 320 240) + {:close (assoc (texture "close.png") :x 304 :y 224 :width 16 :height 16 :baseline 9000) :inventory (assoc (texture "inventory.png") :x 278 :y 0 :baseline 9000 :mouse-in? (zone/box 278 0 320 42)) @@ -596,14 +629,13 @@ :on-resize (fn [screen entities] - (size! screen 320 240)) + (.update (:viewport screen) (:width screen) (:height screen) true)) - :on-touch-up (fn [screen [entities]] (if (= (button-code :left) (:button screen)) - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] + (let [[x y] (utils/unproject screen)] (cond ((:mouse-in? (:inventory entities)) x y) (screen! scene :on-show-inventory) diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index c4ee8423..2c6f1c7d 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -13,6 +13,7 @@ ) (:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter] [com.badlogic.gdx.graphics.g2d TextureRegion] + [com.badlogic.gdx.utils.viewport FitViewport] [com.badlogic.gdx.scenes.scene2d.utils Align] [com.badlogic.gdx Application Audio Files Game Gdx Graphics Input InputMultiplexer InputProcessor Net Preferences Screen])) @@ -33,33 +34,42 @@ (defscreen title-screen :on-show (fn [screen entities] - (update! screen :renderer (stage) :camera (orthographic)) - (let [font (utils/get-font "ego/font.fnt") - start-playing (assoc (label "Embark on thy adventure" (style :label font (color 0.6 1.0 1.0 1.0))) :x 0 :y 100) - start-playing (center start-playing) - quit (assoc (label "Quit thy adventure" (style :label font (color 0.6 1.0 1.0 1.0))) :x 0 :y 50) - quit (center quit) - music (utils/make-music "intro.ogg")] - (label! start-playing :set-alignment Align/center) - - {:overlay (assoc (texture "title-overlay.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0) - :fade (assoc (texture "black.png") - :scale-x 80 - :scale-y 80 - :opacity 1.0) - :font font - :music music - :volume 1.0 - :start-showing? false - :start-playing start-playing - :quit quit - :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0 - :finish #(do (utils/play-sound (:music %)) %) - :ease tween/ease-in-quadratic)} - })) + (let [cam (orthographic) + viewport (FitViewport. 1280 960 cam)] + (update! screen :renderer (stage) :camera cam :viewport viewport) + (.apply viewport) + (let [font (utils/get-font "ego/font.fnt") + start-playing (assoc (label "Embark on thy adventure" (style :label font (color 0.6 1.0 1.0 1.0))) :x 0 :y 100) + start-playing (center start-playing) + quit (assoc (label "Quit thy adventure" (style :label font (color 0.6 1.0 1.0 1.0))) :x 0 :y 50) + quit (center quit) + music (utils/make-music "intro.ogg")] + (label! start-playing :set-alignment Align/center) + + {:overlay (assoc (texture "title-overlay.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0) + :fade (assoc (texture "black.png") + :scale-x 80 + :scale-y 80 + :opacity 1.0) + :viewport viewport + :font font + :music music + :volume 1.0 + :start-showing? false + :start-playing start-playing + :quit quit + :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0 + :finish #(do (utils/play-sound (:music %)) %) + :ease tween/ease-in-quadratic)} + }))) :on-render (fn [screen [entities]] + (.update (:camera screen)) + (.apply (:viewport screen)) + + + (clear!) (let [entities (utils/apply-tweens screen entities (:tweens entities))] (music! (:music entities) :set-volume 0.0 #_(:volume entities)) (render! screen [(:overlay entities) (:start-playing entities) (:quit entities) (:fade entities)]) @@ -69,13 +79,13 @@ entities) :on-mouse-moved (fn [screen [entities]] - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] + (let [[x y] (utils/unproject screen)] (style-label (:start-playing entities) (get-in entities [:font]) [x y]) (style-label (:quit entities) (get-in entities [:font]) [x y]) entities)) :on-touch-up (fn [screen [entities]] - (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] + (let [[x y] (utils/unproject screen)] (cond (utils/intersects? (:start-playing entities) [x y]) (-> entities @@ -83,7 +93,7 @@ (tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0 :finish (fn [entities] (utils/stop-sound (:music entities)) - (set-screen! @(resolve 'advent.core/advent) scene/scene scene/hud dialogue/talking-screen dialogue/choice-screen inventory/inventory-screen safe/safe-screen ) + (set-screen! @(resolve 'advent.core/advent) scene/scene scene/hud dialogue/talking-screen dialogue/choice-screen inventory/inventory-screen safe/safe-screen) entities) :ease tween/ease-in-cubic)) (assoc-in [:tweens :fade-out-music] @@ -100,5 +110,7 @@ :else nil))) - :on-resize (fn [screen entities] - (size! screen 1280 960))) + :on-resize (fn [screen [entities]] + (println (game :width) (game :height) (:width screen) (:height screen)) + (.update (:viewport entities) (game :width) (game :height) true) + nil)) diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index c0910aed..5e71b4f3 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -8,6 +8,8 @@ [clojure.edn :as edn]) (:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter] [com.badlogic.gdx.graphics.g2d TextureRegion] + [com.badlogic.gdx.utils.viewport FitViewport] + [com.badlogic.gdx.scenes.scene2d Actor Stage] [java.lang Object])) (defn log-coords [screen entities] @@ -148,3 +150,21 @@ current-time-music (musics (get-in entities [:room :music time]))] (or override-music current-music current-time-music))) + +(defn setup-viewport [screen width height] + (let [cam (orthographic) + viewport (FitViewport. width height cam) + stage (Stage. viewport)] + (update! screen :renderer stage :viewport viewport :camera cam) + (.apply viewport) + [cam viewport stage])) + +(defn unproject [screen] + (let [pj (.unproject (:viewport screen) (vector-2 (:input-x screen) (:input-y screen))) + x (.x pj) + y (.y pj)] + [x y])) + +(defn contains? [x1 y1 width height x y] + (and (< x1 x (+ x1 width)) + (< y1 y (+ y1 height)))) diff --git a/desktop/src/advent/core/desktop_launcher.clj b/desktop/src/advent/core/desktop_launcher.clj index 5454d0cd..78040ff4 100644 --- a/desktop/src/advent/core/desktop_launcher.clj +++ b/desktop/src/advent/core/desktop_launcher.clj @@ -1,7 +1,7 @@ (ns advent.core.desktop-launcher (:require [advent.core :refer :all] [clojure.tools.nrepl.server]) - (:import [com.badlogic.gdx.backends.lwjgl LwjglApplication] + (:import [com.badlogic.gdx.backends.lwjgl LwjglApplication LwjglApplicationConfiguration] [org.lwjgl.input Keyboard]) (:gen-class)) @@ -17,6 +17,13 @@ (defn -main [& [port]] (when port (start-nrepl-expr (Integer/parseInt port))) - (LwjglApplication. advent "advent" 1280 960) + (if false + (let [cfg (LwjglApplicationConfiguration.)] + (set! (.width cfg) (doto (.width (LwjglApplicationConfiguration/getDesktopDisplayMode)) println)) + (set! (.height cfg) (doto (.height (LwjglApplicationConfiguration/getDesktopDisplayMode)) println)) + (set! (.fullscreen cfg) true) + (LwjglApplication. advent cfg)) + (LwjglApplication. advent "advent" 1280 960)) + (Keyboard/enableRepeatEvents true))