simple toasting.
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
[clojure.pprint]
|
[clojure.pprint]
|
||||||
[clojure.set :as set]
|
[clojure.set :as set]
|
||||||
[advent.pathfind]
|
[advent.pathfind]
|
||||||
|
[advent.tween :as tween]
|
||||||
[advent.utils :as utils]
|
[advent.utils :as utils]
|
||||||
[clojure.core.async :refer [put! <! <!! >! >!! chan go thread take! alts!!]]
|
[clojure.core.async :refer [put! <! <!! >! >!! chan go thread take! alts!!]]
|
||||||
#_[advent.screens.scene :as scene])
|
#_[advent.screens.scene :as scene])
|
||||||
@@ -171,3 +172,50 @@
|
|||||||
|
|
||||||
:on-resize (fn [{:keys [width height viewport]} entities]
|
:on-resize (fn [{:keys [width height viewport]} entities]
|
||||||
(.update viewport width height)))
|
(.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.space :as rooms.space]
|
||||||
[advent.screens.rooms.held :as rooms.held]
|
[advent.screens.rooms.held :as rooms.held]
|
||||||
[advent.screens.rooms.cat-tree :as rooms.cat-tree]
|
[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]]
|
[advent.screens.inventory :refer [inventory-screen]]
|
||||||
[clojure.core.async :refer [put! <! <!! >! chan go thread take! alts!! dropping-buffer]])
|
[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]
|
(: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))
|
(click-inventory screen entities))
|
||||||
:on-save (fn [screen [entities]]
|
:on-save (fn [screen [entities]]
|
||||||
(when-not (get-in entities [:actions :script-running?])
|
(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
|
(utils/save entities
|
||||||
(str (java.util.UUID/randomUUID))
|
(str (java.util.UUID/randomUUID))
|
||||||
(str (-> entities :room :name) " - " date)
|
save-name
|
||||||
date))))
|
date)
|
||||||
|
(screen! toast-screen :on-toast :message (str "Saved \"" save-name "\"")))))
|
||||||
|
|
||||||
:on-menu (fn [{:keys [viewport] :as screen} [entities]]
|
:on-menu (fn [{:keys [viewport] :as screen} [entities]]
|
||||||
(when-not (or (get-in entities [:tweens :fade-out])
|
(when-not (or (get-in entities [:tweens :fade-out])
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
:finish (fn [entities]
|
:finish (fn [entities]
|
||||||
(utils/stop-music (:music entities))
|
(utils/stop-music (:music entities))
|
||||||
(reset! utils/selected-save save)
|
(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)
|
entities)
|
||||||
:ease tween/ease-in-cubic))
|
:ease tween/ease-in-cubic))
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
(defn main-menu []
|
(defn main-menu []
|
||||||
(let [start-playing-label (quest-label)
|
(let [start-playing-label (quest-label)
|
||||||
is-starting? (= "Begin quest" start-playing-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
|
:row
|
||||||
[(doto (make-button "Load" :key :load)
|
[(doto (make-button "Load" :key :load)
|
||||||
(text-button! :set-disabled (not (seq (utils/snapshot-list))))) :height 32]
|
(text-button! :set-disabled (not (seq (utils/snapshot-list))))) :height 32]
|
||||||
|
|||||||
Reference in New Issue
Block a user