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)))
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
[advent.screens.rooms.space :as rooms.space]
|
||||
[advent.screens.rooms.held :as rooms.held]
|
||||
[advent.screens.rooms.cat-tree :as rooms.cat-tree]
|
||||
[advent.screens.dialogue :refer [talking-screen]]
|
||||
[advent.screens.dialogue :refer [talking-screen toast-screen]]
|
||||
[advent.screens.inventory :refer [inventory-screen]]
|
||||
[clojure.core.async :refer [put! <! <!! >! chan go thread take! alts!! dropping-buffer]])
|
||||
(:import [com.badlogic.gdx.graphics Pixmap$Format Pixmap Pixmap$Filter Texture Texture$TextureFilter GL20 GL30]
|
||||
@@ -1247,11 +1247,13 @@ void main ()
|
||||
(click-inventory screen entities))
|
||||
:on-save (fn [screen [entities]]
|
||||
(when-not (get-in entities [:actions :script-running?])
|
||||
(let [date (.format (java.text.SimpleDateFormat. "MM/dd/YY") (java.util.Date.))]
|
||||
(let [date (.format (java.text.SimpleDateFormat. "MM/dd/YY") (java.util.Date.))
|
||||
save-name (str (-> entities :room :name) " - " date)]
|
||||
(utils/save entities
|
||||
(str (java.util.UUID/randomUUID))
|
||||
(str (-> entities :room :name) " - " date)
|
||||
date))))
|
||||
save-name
|
||||
date)
|
||||
(screen! toast-screen :on-toast :message (str "Saved \"" save-name "\"")))))
|
||||
|
||||
:on-menu (fn [{:keys [viewport] :as screen} [entities]]
|
||||
(when-not (or (get-in entities [:tweens :fade-out])
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
:finish (fn [entities]
|
||||
(utils/stop-music (:music entities))
|
||||
(reset! utils/selected-save save)
|
||||
(set-screen! @(resolve 'advent.core/advent) scene/scene scene/demo scene/hud dialogue/talking-screen dialogue/choice-screen inventory/inventory-screen safe/safe-screen fade/fade-screen
|
||||
(set-screen! @(resolve 'advent.core/advent) scene/scene scene/demo scene/hud dialogue/talking-screen dialogue/choice-screen dialogue/toast-screen inventory/inventory-screen safe/safe-screen fade/fade-screen
|
||||
)
|
||||
entities)
|
||||
:ease tween/ease-in-cubic))
|
||||
@@ -179,7 +179,7 @@
|
||||
(defn main-menu []
|
||||
(let [start-playing-label (quest-label)
|
||||
is-starting? (= "Begin quest" start-playing-label)]
|
||||
(make-table [[ (make-button start-playing-label :key :continue-or-start) :height 32]
|
||||
(make-table [[(make-button start-playing-label :key :continue-or-start) :height 32]
|
||||
:row
|
||||
[(doto (make-button "Load" :key :load)
|
||||
(text-button! :set-disabled (not (seq (utils/snapshot-list))))) :height 32]
|
||||
|
||||
Reference in New Issue
Block a user