should be a fullscreen that pleases everyone.
This commit is contained in:
@@ -432,19 +432,73 @@
|
||||
(dotimes [_ 160]
|
||||
(particle-effect! p :update 0.2)))
|
||||
|
||||
(defn os->key []
|
||||
(let [os-name (System/getProperty "os.name")]
|
||||
(cond
|
||||
(or (.startsWith os-name "Linux") (.startsWith os-name "LINUX")) :linux
|
||||
(.startsWith os-name "Mac") :mac
|
||||
:else :windows)))
|
||||
|
||||
(defmulti make-windowed os->key)
|
||||
(defmulti make-fullscreen os->key)
|
||||
(defmulti is-fullscreen? os->key)
|
||||
|
||||
|
||||
(defmethod make-windowed :linux []
|
||||
(do
|
||||
(log/info "Making windowed 800x600 decorated window")
|
||||
(System/setProperty "org.lwjgl.opengl.Window.undecorated", "false")
|
||||
(.setDisplayMode Gdx/graphics 800 600 false)))
|
||||
|
||||
(defmethod make-fullscreen :linux []
|
||||
(let [width (-> Gdx/graphics .getDesktopDisplayMode .width)
|
||||
height (-> Gdx/graphics .getDesktopDisplayMode .height)]
|
||||
(log/info "Making fullscreen " width "x" height " as undecorated window")
|
||||
(System/setProperty "org.lwjgl.opengl.Window.undecorated", "true")
|
||||
(.setDisplayMode Gdx/graphics
|
||||
width
|
||||
height
|
||||
false)))
|
||||
|
||||
(defmethod is-fullscreen? :linux []
|
||||
(= "true" (System/getProperty "org.lwjgl.opengl.Window.undecorated")))
|
||||
|
||||
(defn make-fullscreen-normal []
|
||||
(let [width (-> Gdx/graphics .getDesktopDisplayMode .width)
|
||||
height (-> Gdx/graphics .getDesktopDisplayMode .height)]
|
||||
(log/info "Making fullscreen " width "x" height " as true fullscreen")
|
||||
(.setDisplayMode Gdx/graphics
|
||||
width
|
||||
height
|
||||
true)
|
||||
(set! (.foregroundFPS (-> (class Gdx/graphics)
|
||||
(.getDeclaredField (name "config"))
|
||||
(doto (.setAccessible true))
|
||||
(.get Gdx/graphics))) 60)))
|
||||
|
||||
(defn make-windowed-normal []
|
||||
(do
|
||||
(log/info "Making windowed 1280x960 decorated window")
|
||||
(System/setProperty "org.lwjgl.opengl.Window.undecorated", "false")
|
||||
(.setDisplayMode Gdx/graphics 1280 960 false)))
|
||||
|
||||
(defn is-fullscreen?-normal []
|
||||
(.isFullscreen Gdx/graphics))
|
||||
|
||||
|
||||
(defmethod make-windowed :mac [] (make-windowed-normal))
|
||||
(defmethod make-fullscreen :mac [] (make-fullscreen-normal))
|
||||
(defmethod is-fullscreen? :mac [] (is-fullscreen?-normal))
|
||||
|
||||
(defmethod make-windowed :windows [] (make-windowed-normal))
|
||||
(defmethod make-fullscreen :windows [] (make-fullscreen-normal))
|
||||
(defmethod is-fullscreen? :windows [] (is-fullscreen?-normal))
|
||||
|
||||
(defn set-fullscreen! [val]
|
||||
(try
|
||||
(if val
|
||||
(on-gl (.setDisplayMode Gdx/graphics
|
||||
(doto (.width (.getDesktopDisplayMode Gdx/graphics)) log/info)
|
||||
(doto (.height (.getDesktopDisplayMode Gdx/graphics)) log/info)
|
||||
true)
|
||||
(set! (.foregroundFPS (-> (class Gdx/graphics)
|
||||
(.getDeclaredField (name "config"))
|
||||
(doto (.setAccessible true))
|
||||
(.get Gdx/graphics))) 60))
|
||||
(on-gl (.setDisplayMode Gdx/graphics 1280 960 false)))
|
||||
(on-gl (make-fullscreen))
|
||||
(on-gl (make-windowed)))
|
||||
(on-gl
|
||||
(swap! settings assoc :fullscreen val)
|
||||
(save-settings!))
|
||||
@@ -453,7 +507,7 @@
|
||||
(log/error e))))
|
||||
|
||||
(defn toggle-fullscreen! []
|
||||
(if (.isFullscreen Gdx/graphics)
|
||||
(if (is-fullscreen?)
|
||||
(set-fullscreen! false)
|
||||
(set-fullscreen! true)))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user