From ca6cb94c5491677851927e04e421026963cc10cb Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Mon, 12 Dec 2016 08:34:29 -0800 Subject: [PATCH] labels stay on screen. --- .../src-common/advent/screens/dialogue.clj | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/desktop/src-common/advent/screens/dialogue.clj b/desktop/src-common/advent/screens/dialogue.clj index eec2d587..15c75695 100644 --- a/desktop/src-common/advent/screens/dialogue.clj +++ b/desktop/src-common/advent/screens/dialogue.clj @@ -25,11 +25,11 @@ maximum-x (- 1280 margin-width) label-width (label! talk :get-width) label-right (+ (:x talk) label-width) - y (min (- 900 (label! talk :get-height)) (:y talk)) - talk (assoc (cond (> label-right maximum-x) (assoc talk :x (- maximum-x label-width)) - (< (:x talk) minimum-x) (assoc talk :x minimum-x) - :else talk) - :y y)] + y (max 30 (min (- 900 (label! talk :get-height)) (:y talk))) + talk (cond-> talk + (> label-right maximum-x) (assoc :x (- maximum-x label-width)) + (< (:x talk) minimum-x) (assoc :x minimum-x) + true (assoc :y y))] (doto talk (label! :set-x (:x talk)) (label! :set-y (:y talk))))) @@ -48,39 +48,39 @@ :on-render (fn [{:keys [camera ^FitViewport viewport] :as screen} entities options] (.apply viewport) - + (render! screen (vals entities)) entities) :on-talk (fn [screen entities {:keys [create-talk target-id color text x y scale scene-viewport id]}] (let [font (doto (bitmap-font "ego/font.fnt" ) - (bitmap-font! :set-use-integer-positions false)) - p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg")) + (bitmap-font! :set-use-integer-positions false)) + p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg")) _ (nine-patch! p :set-padding 25 25 5 15) - + tr (bitmap-font! font :get-region) scale (* scale (/ utils/ui-scale 2)) scale (or (min (max scale (/ utils/ui-scale 5) 0.4) (/ utils/ui-scale 4)) (/ utils/ui-scale 4)) _ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear) style (style :label font color) [source-x source-y] [x y] - + [x y] (scene-world->talk-world scene-viewport [source-x source-y]) talk (-> (label text style :set-font-scale scale :set-alignment Align/bottom) (assoc :source-x source-x :source-y source-y) - (doto + (doto (label! :set-wrap true) (#(label! % :set-width (min (* (+ 1 (* 0.5 (- utils/ui-scale 1))) 700) (+ 50 (label! % :get-width)))))) (#(utils/add-actor-to-stage screen %))) x (- x (/ (label! talk :get-width) 2)) talk (assoc talk :x x :y y :id id) talk (ensure-on-screen talk)] - + (assoc entities id talk))) - :on-update-camera + :on-update-camera (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [scene-viewport scene-camera]}] (reduce-kv (fn [entities id e] (if (:id e) @@ -99,7 +99,7 @@ (utils/remove-actor-from-stage entities (or id :fg-actions)) (dissoc entities (or id :fg-actions))) - + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height))) @@ -120,12 +120,12 @@ e) (defn mouse-moved [screen entities options] - (let [[x y] (utils/unproject screen options) + (let [[x y] (utils/unproject screen options) entities (assoc-in entities [:state :last-pos] [x y]) choice-count (dec (count entities))] - (when-let [table (get-in entities [:state :table])] + (when-let [table (get-in entities [:state :table])] (doseq [e (get-in entities [:state :labels])] - + (style-label e (get-in entities [:state :font]) [x y]))) entities)) @@ -133,10 +133,10 @@ :on-show (fn [screen entities options] (utils/setup-viewport screen 1280 960) - (let [font (bitmap-font "ego/font.fnt" ) + (let [font (bitmap-font "ego/font.fnt" ) tr (bitmap-font! font :get-region) - scale 1 - p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg")) + scale 1 + p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg")) _ (nine-patch! p :set-padding 25 25 5 15) _ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear)] {:state {:object nil @@ -169,7 +169,7 @@ (label text (style :label font (color 0.6 1.0 1.0 1.0)) :set-wrap true :set-alignment Align/bottomLeft :set-font-scale (* utils/ui-scale 0.25) :set-width 1240) - + :index i :width 1240)) (map (fn [l] (assoc (table [[ l :width 1240]]) @@ -183,18 +183,18 @@ (assoc-in [:state :table] (doto (-> labels (vertical :align Align/bottomLeft :pad 20 :space 24) - + (#(utils/add-actor-to-stage screen %)) (assoc :x 0 :y 0 :width 1240) - (#(assoc % :height (vertical! % :get-pref-height))) + (#(assoc % :height (vertical! % :get-pref-height))) )))))) :on-touch-up (fn [screen entities options] (let [[x y] (utils/unproject screen options)] (when (seq (get-in entities [:state :choices])) - (when-let [choice (first (filter #(utils/intersects? % [x y]) (get-in entities [:state :labels])))] + (when-let [choice (first (filter #(utils/intersects? % [x y]) (get-in entities [:state :labels])))] (utils/clear-stage screen) - ((get-in entities [:state :callback]) (:index choice)) + ((get-in entities [:state :callback]) (:index choice)) (-> entities (assoc-in [:state :callback] nil) (assoc-in [:state :choices] []) @@ -202,10 +202,10 @@ (assoc-in [:state :table] nil) (select-keys [:state])))))) - :on-mouse-moved mouse-moved + :on-mouse-moved mouse-moved :on-touch-dragged mouse-moved - :on-touch-down mouse-moved - + :on-touch-down mouse-moved + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height))) @@ -226,23 +226,23 @@ :on-toast (fn [screen entities {:keys [message]}] - (let [font (bitmap-font "ego/font.fnt" ) + (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) - + tr (bitmap-font! font :get-region) - + _ (.setFilter (.getTexture tr) 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 :set-font-scale 0.25) x (- x (/ (label! talk :get-width) 2)) talk (assoc talk :x x :y y :opacity 1.0) #_#_talk (ensure-on-screen talk)] (utils/add-actor-to-stage screen talk) - - (-> entities + + (-> entities (assoc :dialogue talk) (assoc-in [:tweens :fade-out-toast] (tween/tween :fade-out-toast screen [:dialogue :opacity] 1.0 0.0 1.0 @@ -255,7 +255,7 @@ (utils/remove-actor-from-stage entities :dialogue) (dissoc entities :dialogue)) - + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height))) @@ -265,7 +265,7 @@ (fn [screen entities options] (let [screen (utils/setup-viewport screen 1280 960)] (let [font (doto (bitmap-font "label-font.fnt" ) - (bitmap-font! :set-use-integer-positions false)) + (bitmap-font! :set-use-integer-positions false)) tr (bitmap-font! font :get-region) _ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear) style (doto (style :label font (color :white)) @@ -306,14 +306,14 @@ (assoc-in [:action-icon] (assoc (texture (aget all-icons 0 (.indexOf utils/+all-cursors+ (or item-cursor action-cursor)))) - :x 4 :y 4 + :x 4 :y 4 :width (* 18 4) :height (* 16 4))) (not utils/mobile?) (update-in [:label] assoc :x scene-x :y scene-y) true (update-in [:label] ensure-on-screen)))) - #_#_:on-update-camera + #_#_:on-update-camera (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [scene-viewport scene-camera]}] (reduce-kv (fn [entities id e] (if (:id e) @@ -332,6 +332,6 @@ (utils/remove-actor-from-stage entities (or id :fg-actions)) (dissoc entities (or id :fg-actions))) - + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height)))