simple toasting.

This commit is contained in:
Bryce Covert
2015-11-04 22:06:53 -08:00
parent 917eeef526
commit ceea690cfa
3 changed files with 56 additions and 6 deletions

View File

@@ -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)))