new screen stuff.

This commit is contained in:
2014-10-09 19:23:46 -07:00
parent 0d9b49a688
commit 396ff1320c
4 changed files with 21 additions and 3 deletions

View File

@@ -36,7 +36,7 @@
:y y :y y
:baseline (- 240 y))] :baseline (- 240 y))]
(if (:scaled entity) (if (:scaled entity)
(assoc entity :scale-x (scale-fn y) :scale-y (scale-fn y)) (assoc entity :scale-x (scale-fn [x y]) :scale-y (scale-fn [x y]))
entity))) entity)))
(defn start-animation [screen entity anim] (defn start-animation [screen entity anim]
@@ -169,8 +169,9 @@
(begin [this screen entities] (begin [this screen entities]
(let [_ (swap! initial-time #(or % (:total-time screen))) (let [_ (swap! initial-time #(or % (:total-time screen)))
target-y (get-in entities [:room :entities target-id :y]) target-y (get-in entities [:room :entities target-id :y])
target-x (get-in entities [:room :entities target-id :x])
scale-fn (get-in entities [:room :scale-fn]) scale-fn (get-in entities [:room :scale-fn])
scale (scale-fn target-y) scale (scale-fn [target-x target-y])
height (* scale 36)] height (* scale 36)]
(run! dialogue/talking-screen :on-talk :text text (run! dialogue/talking-screen :on-talk :text text
:x (get-in entities [:room :entities target-id :x]) :y (+ (get-in entities [:room :entities target-id :y]) height) :x (get-in entities [:room :entities target-id :x]) :y (+ (get-in entities [:room :entities target-id :y]) height)

View File

@@ -21,6 +21,11 @@
(actions/walk-to entities :ego [310 80]) (actions/walk-to entities :ego [310 80])
(actions/transition-background entities :outside-house [0 80])) (actions/transition-background entities :outside-house [0 80]))
:cursor :right} :cursor :right}
:door {:box [66 180 85 195]
:script (actions/get-script
entities
(actions/walk-to entities :ego [82 180])
(actions/transition-background entities :inside-castle [280 145]))}
:garden {:box [103 170 178 200] :garden {:box [103 170 178 200]
:script (actions/get-script :script (actions/get-script
entities entities

View File

@@ -13,6 +13,7 @@
[advent.screens.rooms :as rooms] [advent.screens.rooms :as rooms]
[advent.screens.rooms.outside-house :as rooms.outside-house] [advent.screens.rooms.outside-house :as rooms.outside-house]
[advent.screens.rooms.inside-house :as rooms.inside-house] [advent.screens.rooms.inside-house :as rooms.inside-house]
[advent.screens.rooms.inside-castle :as rooms.inside-castle]
[advent.screens.rooms.behind-house :as rooms.behind-house] [advent.screens.rooms.behind-house :as rooms.behind-house]
[advent.screens.rooms.outside-castle :as rooms.outside-castle] [advent.screens.rooms.outside-castle :as rooms.outside-castle]
[advent.screens.rooms.cat-tree :as rooms.cat-tree] [advent.screens.rooms.cat-tree :as rooms.cat-tree]
@@ -138,6 +139,7 @@
:outside-house (rooms.outside-house/make screen) :outside-house (rooms.outside-house/make screen)
:behind-house (rooms.behind-house/make screen) :behind-house (rooms.behind-house/make screen)
:cat-tree (rooms.cat-tree/make screen) :cat-tree (rooms.cat-tree/make screen)
:inside-castle (rooms.inside-castle/make screen)
:outside-castle (rooms.outside-castle/make screen)}] :outside-castle (rooms.outside-castle/make screen)}]
{:rooms rooms {:rooms rooms
:state {:object nil :state {:object nil

View File

@@ -38,12 +38,22 @@
(defn scaler-fn-with-baseline [baseline minimum-size & [maximum-size]] (defn scaler-fn-with-baseline [baseline minimum-size & [maximum-size]]
(let [maximum-size (or maximum-size 1.0)] (let [maximum-size (or maximum-size 1.0)]
(fn [y] (fn [[_ y]]
(if (< y baseline) maximum-size (if (< y baseline) maximum-size
(let [percent-complete (- 1.0 (/ (- y baseline) (- +screen-height+ baseline))) (let [percent-complete (- 1.0 (/ (- y baseline) (- +screen-height+ baseline)))
range (+ (* percent-complete (- maximum-size minimum-size)) minimum-size)] range (+ (* percent-complete (- maximum-size minimum-size)) minimum-size)]
range))))) range)))))
(defn scaler-fn-from-image [image minimum-size maximum-size]
(let [image (pixmap image)
maximum-size (or maximum-size 1.0)]
(fn [[x y]]
(let [percent-complete (-> image
(pixmap! :get-pixel x (- 240 y))
color
(.r))]
(+ (* percent-complete (- maximum-size minimum-size)) minimum-size)))))
(defn dist [x1 y1 x2 y2] (defn dist [x1 y1 x2 y2]
(let [dx (- x1 x2) (let [dx (- x1 x2)
dy (- y1 y2)] dy (- y1 y2)]