From ceea690cfac224125d8c426d328c0d52330b2060 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Wed, 4 Nov 2015 22:06:53 -0800 Subject: [PATCH] simple toasting. --- .../src-common/advent/screens/dialogue.clj | 48 +++++++++++++++++++ desktop/src-common/advent/screens/scene.clj | 10 ++-- desktop/src-common/advent/screens/title.clj | 4 +- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/desktop/src-common/advent/screens/dialogue.clj b/desktop/src-common/advent/screens/dialogue.clj index 4bc73f3a..37a03f1a 100644 --- a/desktop/src-common/advent/screens/dialogue.clj +++ b/desktop/src-common/advent/screens/dialogue.clj @@ -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))) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 8bc0cf6e..d5a34702 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -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]) diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index 5bc640e8..94e424e2 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -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]