(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]] (when port (start-nrepl-expr (Integer/parseInt port))) (let [cfg (LwjglApplicationConfiguration.)] (if false (do (set! (.width cfg) (doto (.width (LwjglApplicationConfiguration/getDesktopDisplayMode)) println)) (set! (.height cfg) (doto (.height (LwjglApplicationConfiguration/getDesktopDisplayMode)) println)) (set! (.fullscreen cfg) true)) (do (set! (.width cfg) 1280) (set! (.height cfg) 960))) (set! (.foregroundFPS cfg) 60) (set! (.backgroundFPS cfg) 60) (LwjglApplication. advent cfg)) (Keyboard/enableRepeatEvents true))