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

View File

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

View File

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