From a3024fd1284bc6c75f5ff38d69c683cf484da4ac Mon Sep 17 00:00:00 2001 From: Remington Covert Date: Thu, 19 Mar 2015 07:28:49 -0700 Subject: [PATCH] added pausing the camera. --- desktop/settings.edn | 2 +- desktop/src-common/advent/actions.clj | 8 ++++++++ .../advent/screens/rooms/inside_cafeteria.clj | 4 +++- .../advent/screens/rooms/inside_castle.clj | 2 ++ desktop/src-common/advent/screens/scene.clj | 15 ++++++++------- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/desktop/settings.edn b/desktop/settings.edn index 3922b2b0..767db683 100644 --- a/desktop/settings.edn +++ b/desktop/settings.edn @@ -1 +1 @@ -{:sound-volume 56.0, :music-volume 30.0} \ No newline at end of file +{:sound-volume 56.0, :music-volume 56.0} \ No newline at end of file diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj index 03f25f34..48e29208 100644 --- a/desktop/src-common/advent/actions.clj +++ b/desktop/src-common/advent/actions.clj @@ -432,6 +432,14 @@ (can-skip? [this screen entities] false))) +(defn pause-camera [entities] + (update-entities entities #(-> % + (assoc-in [:cam :paused? ] true) + (update-in [:tweens] dissoc :cam-x :cam-y)))) + +(defn resume-camera [entities] + (update-entities entities #(assoc-in % [:cam :paused? ] false))) + (defn begin-animation [entities target-id anim] (run-action entities (begin [this screen entities] diff --git a/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj b/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj index 4649bd29..29c7de35 100644 --- a/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj +++ b/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj @@ -17,12 +17,14 @@ (defn play-battle [entities anim] (actions/transition-music entities :fight) + (actions/pause-camera entities) (actions/add-entity entities :fight (get-in @entities [:room :fight])) (actions/add-entity entities :hands-fight (get-in @entities [:room :hands-fight])) (actions/play-animation entities :hands-fight anim) (actions/transition-music entities nil) (actions/remove-entity entities :hands-fight) - (actions/remove-entity entities :fight)) + (actions/remove-entity entities :fight) + (actions/resume-camera entities)) (defn do-warrior-dialogue [entities] (actions/walk-to entities :ego [150 45] :face :left) diff --git a/desktop/src-common/advent/screens/rooms/inside_castle.clj b/desktop/src-common/advent/screens/rooms/inside_castle.clj index 7416e91d..40973c64 100644 --- a/desktop/src-common/advent/screens/rooms/inside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/inside_castle.clj @@ -142,6 +142,7 @@ (defn pull-sword [entities] (actions/play-animation entities :ego :reach) + (actions/pause-camera entities) (actions/transition-music entities :pull-sword) (actions/add-entity entities :blackout (get-in @entities [:room :blackout])) (actions/add-entity entities :pull-sword (get-in @entities [:room :pull-sword])) @@ -151,6 +152,7 @@ (actions/remove-entity entities :pull-sword) (actions/remove-entity entities :blackout) (particle-effect! (get-in @entities [:room :entities :magic]) :allow-completion) + (actions/resume-camera entities) (actions/transition-music entities nil) (actions/do-dialogue entities :ego "That was weird." :ego "I have to go show my friends!") diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 1de551b0..dcfd14ba 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -541,6 +541,7 @@ entities {:rooms rooms :step-particles (assoc (particle-effect "ego/step") :x 100 :y 100 :baseline 241) :cam {:zoom 0.95 + :paused? false :object nil} :musics {:object nil :inside-antique (utils/make-music "inside-antique.ogg") @@ -619,8 +620,9 @@ [id ((:update-fn entity) screen entities entity)] [id entity]))))) - entities (if (and (nil? (get-in entities [:tweens :cam-x])) - (= 1 (rand-int 20))) + entities (if (and (not (get-in entities [:cam :paused?])) + (nil? (get-in entities [:tweens :cam-x])) + (= 1 (rand-int 20))) (if (= (rand-int 2) 1) (actions/pan-to screen entities (get-in entities [:room :entities :ego :x]) @@ -642,12 +644,11 @@ layers (get-layers entities) all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))] - (when (nil? (:zoom (:cam entities))) - (println entities)) (screen! talking-screen :on-update-camera :scene-viewport (:viewport screen) :scene-camera (:camera screen)) - (set! (. camera zoom) (:zoom (:cam entities))) - (set! (.. camera position x) (:x (:cam entities) 160.0)) - (set! (.. camera position y) (:y (:cam entities) 120.0)) + (when (not (get-in entities [:cam :paused?])) + (set! (. camera zoom) (:zoom (:cam entities))) + (set! (.. camera position x) (:x (:cam entities) 160.0)) + (set! (.. camera position y) (:y (:cam entities) 120.0))) (let [entities (utils/update-override screen entities)]