Start UI code and allow multiple screens to be displayed
This commit is contained in:
@@ -3,7 +3,8 @@
|
||||
(:import [com.badlogic.gdx Game Gdx Input$Keys Screen]
|
||||
[com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera
|
||||
PerspectiveCamera Texture]
|
||||
[com.badlogic.gdx.graphics.g2d Animation SpriteBatch TextureRegion]
|
||||
[com.badlogic.gdx.graphics.g2d Animation BitmapFont SpriteBatch
|
||||
TextureRegion]
|
||||
[com.badlogic.gdx.maps MapLayer MapLayers]
|
||||
[com.badlogic.gdx.maps.tiled TiledMap TiledMapTileLayer TmxMapLoader]
|
||||
[com.badlogic.gdx.maps.tiled.renderers
|
||||
@@ -12,11 +13,13 @@
|
||||
IsometricStaggeredTiledMapRenderer
|
||||
IsometricTiledMapRenderer
|
||||
OrthogonalTiledMapRenderer]
|
||||
[com.badlogic.gdx.scenes.scene2d Actor Stage]))
|
||||
[com.badlogic.gdx.scenes.scene2d Actor Stage]
|
||||
[com.badlogic.gdx.scenes.scene2d.ui Label Label$LabelStyle]))
|
||||
|
||||
(load "core_2d")
|
||||
(load "core_global")
|
||||
(load "core_render")
|
||||
(load "core_ui")
|
||||
|
||||
(defn- dummy [& args])
|
||||
|
||||
@@ -34,24 +37,24 @@
|
||||
(reset! entities)))
|
||||
create-renderer-fn! #(swap! screen assoc :renderer (renderer %))
|
||||
create-camera-fn! #(swap! screen assoc :camera (camera %))]
|
||||
(proxy [Screen] []
|
||||
(show []
|
||||
(->> (swap! screen assoc
|
||||
:total-time 0
|
||||
:delta-time 0
|
||||
:create-renderer create-renderer-fn!
|
||||
:create-camera create-camera-fn!)
|
||||
(execute-fn! on-show)))
|
||||
(render [delta-time]
|
||||
(->> (swap! screen (fn [val]
|
||||
(assoc val
|
||||
:total-time (+ (:total-time val) delta-time)
|
||||
:delta-time delta-time)))
|
||||
(execute-fn! on-render)))
|
||||
(hide [] (execute-fn! on-hide @screen))
|
||||
(pause [] (execute-fn! on-pause @screen))
|
||||
(resize [w h] (execute-fn! on-resize @screen))
|
||||
(resume [] (execute-fn! on-resume @screen)))))
|
||||
{:show (fn []
|
||||
(->> (swap! screen assoc
|
||||
:total-time 0
|
||||
:delta-time 0
|
||||
:create-renderer create-renderer-fn!
|
||||
:create-camera create-camera-fn!)
|
||||
(execute-fn! on-show)))
|
||||
:render (fn [delta-time]
|
||||
(->> (fn [val]
|
||||
(assoc val
|
||||
:total-time (+ (:total-time val) delta-time)
|
||||
:delta-time delta-time))
|
||||
(swap! screen)
|
||||
(execute-fn! on-render)))
|
||||
:hide #(execute-fn! on-hide @screen)
|
||||
:pause #(execute-fn! on-pause @screen)
|
||||
:resize #(execute-fn! on-resize @screen)
|
||||
:resume #(execute-fn! on-resume @screen)}))
|
||||
|
||||
(defmacro defscreen
|
||||
[n & {:keys [] :as options}]
|
||||
@@ -72,8 +75,17 @@
|
||||
`(defonce ~name (defgame* ~options)))
|
||||
|
||||
(defn set-screen!
|
||||
[^Game game ^Screen screen]
|
||||
(.setScreen game screen))
|
||||
[^Game game & screens]
|
||||
(let [run-fn! (fn [key & args]
|
||||
(doseq [screen screens]
|
||||
(apply (get screen key) args)))]
|
||||
(.setScreen game (proxy [Screen] []
|
||||
(show [] (run-fn! :show))
|
||||
(render [delta-time] (run-fn! :render delta-time))
|
||||
(hide [] (run-fn! :hide))
|
||||
(pause [] (run-fn! :pause))
|
||||
(resize [w h] (run-fn! :resize))
|
||||
(resume [] (run-fn! :resume))))))
|
||||
|
||||
(defn create-renderer!
|
||||
[{:keys [create-renderer]} & {:keys [] :as args}]
|
||||
|
||||
Reference in New Issue
Block a user