simple toasting.
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
[clojure.pprint]
|
||||
[clojure.set :as set]
|
||||
[advent.pathfind]
|
||||
[advent.tween :as tween]
|
||||
[advent.utils :as utils]
|
||||
[clojure.core.async :refer [put! <! <!! >! >!! chan go thread take! alts!!]]
|
||||
#_[advent.screens.scene :as scene])
|
||||
@@ -171,3 +172,50 @@
|
||||
|
||||
:on-resize (fn [{:keys [width height viewport]} entities]
|
||||
(.update viewport width height)))
|
||||
|
||||
(defscreen toast-screen
|
||||
:on-show
|
||||
(fn [screen entities]
|
||||
(utils/setup-viewport screen 1280 960)
|
||||
{})
|
||||
|
||||
:on-render
|
||||
(fn [{:keys [camera ^FitViewport viewport] :as screen} [entities]]
|
||||
(.apply viewport)
|
||||
(let [entities (utils/apply-tweens screen entities (:tweens entities))]
|
||||
(render! screen (vals entities))
|
||||
entities))
|
||||
|
||||
:on-toast
|
||||
(fn [{:keys [message] :as screen} [entities]]
|
||||
(let [font (bitmap-font "ego/font.fnt" )
|
||||
p (nine-patch {:region (:object (utils/get-texture "talk-bg-2.png")) :left 9 :top 9 :right 9 :bottom 9})
|
||||
_ (nine-patch! p :set-padding 25 25 5 15)
|
||||
|
||||
bg (drawable :nine-patch (:object p))
|
||||
_ (bitmap-font! font :set-markup-enabled true)
|
||||
tr (bitmap-font! font :get-region)
|
||||
|
||||
tx (.getTexture tr)
|
||||
_ (texture! tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
|
||||
style (style :label font (color :red))
|
||||
|
||||
[x y] [(/ 1280 2) (/ 960 2)]
|
||||
talk (label message style :set-alignment Align/center)
|
||||
x (- x (/ (label! talk :get-width) 2))
|
||||
talk (assoc talk :x x :y y :opacity 1.0)
|
||||
talk (ensure-on-screen talk)]
|
||||
|
||||
(-> entities
|
||||
(assoc :dialogue talk)
|
||||
(assoc-in [:tweens :fade-out-toast]
|
||||
(tween/tween :fade-out-toast screen [:dialogue :opacity] 1.0 0.0 1.0
|
||||
:finish #(dissoc % :dialogue))))))
|
||||
|
||||
:stop-talk
|
||||
(fn [{:keys [target-id] } [entities]]
|
||||
(dissoc entities :dialogue))
|
||||
|
||||
|
||||
:on-resize (fn [{:keys [viewport width height]} entities]
|
||||
(.update viewport width height)))
|
||||
|
||||
Reference in New Issue
Block a user