(ns advent.core.desktop-launcher (:require [advent.core :refer :all] [clojure.tools.nrepl.server]) (:import [com.badlogic.gdx.backends.lwjgl LwjglApplication LwjglApplicationConfiguration] [org.lwjgl.input Keyboard] [com.badlogic.gdx Gdx]) (:gen-class)) (defmacro start-nrepl-expr [port] `(let [{port# :port} (clojure.tools.nrepl.server/start-server :port ~port)] (doseq [port-file# ["target/repl-port" ".nrepl-port"]] (-> port-file# java.io.File. (doto .deleteOnExit) (spit port#))) (println "Started nREPL server on port" port#))) (defn -main [& [port]] (try (when port (start-nrepl-expr (Integer/parseInt port))) (catch Exception e)) (let [cfg (LwjglApplicationConfiguration.)] (if false (do (set! (.width cfg) (doto (.width (LwjglApplicationConfiguration/getDesktopDisplayMode)) println)) (set! (.height cfg) (doto (.height (LwjglApplicationConfiguration/getDesktopDisplayMode)) println)) (set! (.resizable cfg) true) (set! (.useHDPI cfg) false) (set! (.fullscreen cfg) true)) (do (set! (.width cfg) 1280) (set! (.height cfg) 960))) (set! (.foregroundFPS cfg) 60) (set! (.backgroundFPS cfg) 60) (System/setProperty "org.lwjgl.opengl.Display.enableHighDPI" "false") (System/setProperty "org.lwjgl.opengl.Display.disableOSXFullscreenModeAPI" "true") #_(System/setProperty "org.lwjgl.opengl.Window.undecorated", "true") (LwjglApplication. advent cfg)) (Keyboard/enableRepeatEvents true))