fixed inventory and junk.

This commit is contained in:
2015-02-19 16:09:07 -08:00
parent 163f5b9376
commit 473f4ea638
2 changed files with 70 additions and 46 deletions

View File

@@ -62,42 +62,34 @@
(defn left-click [screen entities]
(let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})]
(cond
((:mouse-in? (:inventory entities)) x y)
(click-inventory screen entities)
(utils/intersects? (:close entities) [x y])
(assoc-in entities [:tweens :fade-out] (tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0 :finish #(do (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen))
%)))
(let [interaction (first (filter #((:mouse-in? %) entities x y)
(get-in entities [:room :interactions])))
interacting-entity (first (sort-by (comp - :baseline) (filter #(and (:mouse-in? %)
(:get-script %)
((:mouse-in? %) entities x y))
(vals (get-in entities [:room :entities])))))
current-action (get-in entities [:actions :current])
;; TODO - hacky way of resetting queue
entities (if (and current-action (actions/can-skip? current-action screen entities))
(let [terminated-entities (actions/terminate current-action screen entities)]
(do (put! (actions/get-channel current-action) terminated-entities)
(-> terminated-entities
(assoc-in [:actions :current] nil)
(assoc-in [:actions :started?] false))))
entities)]
:else
(let [interaction (first (filter #((:mouse-in? %) entities x y)
(get-in entities [:room :interactions])))
interacting-entity (first (sort-by (comp - :baseline) (filter #(and (:mouse-in? %)
(:get-script %)
((:mouse-in? %) entities x y))
(vals (get-in entities [:room :entities])))))
current-action (get-in entities [:actions :current])
;; TODO - hacky way of resetting queue
entities (if (and current-action (actions/can-skip? current-action screen entities))
(let [terminated-entities (actions/terminate current-action screen entities)]
(do (put! (actions/get-channel current-action) terminated-entities)
(-> terminated-entities
(assoc-in [:actions :current] nil)
(assoc-in [:actions :started?] false))))
entities)]
(if (get-in entities [:actions :script-running?])
entities
((or (when interacting-entity
((:get-script interacting-entity) (get-in entities [:cursor :current]) [x y]))
(when interaction
((:get-script interaction) (or (when (:cursor interaction) :main)
(get-in entities [:cursor :current]))
[x y]))
((:get-script default-interaction) (get-in entities [:cursor :current]) [x y])) entities))
entities))))
(if (get-in entities [:actions :script-running?])
entities
((or (when interacting-entity
((:get-script interacting-entity) (get-in entities [:cursor :current]) [x y]))
(when interaction
((:get-script interaction) (or (when (:cursor interaction) :main)
(get-in entities [:cursor :current]))
[x y]))
((:get-script default-interaction) (get-in entities [:cursor :current]) [x y])) entities))
entities)))
(defn drink-blergh [entities]
(actions/walk-straight-to entities :ego [205 45])
@@ -441,8 +433,6 @@
:value 0.0}
:music-override {:object nil
:value nil}
:close (assoc (texture "close.png") :x 304 :y 224 :width 16 :height 16 :baseline 9000)
:cursor {:id "cursor"
:current :main
:last :main
@@ -452,10 +442,7 @@
:fade-in-music (tween/tween :fade-in-music screen [:volume :value] 0.0 1.0 1.5 :ease tween/ease-in-cubic)}
:all-items (assoc items/items :object nil)
:room (as-> (get rooms (:last-room (get-state))) room
(assoc-in room [:entities :ego] (get-ego screen (:start-pos room) ((:scale-fn room) (:start-pos room)))))
:inventory (assoc (texture "inventory.png") :x 278 :y 0 :baseline 9000
:mouse-in? (zone/box 278 0 320 42))
:fps (assoc (label "0" (color :white) ) :x 5 :baseline 0)}]
(assoc-in room [:entities :ego] (get-ego screen (:start-pos room) ((:scale-fn room) (:start-pos room)))))}]
(music! (utils/get-current-music entities) :set-volume (get-in entities [:volume :value]))
(utils/play-sound (get-in entities [:musics (actions/get-music (get-in entities [:room :music]) (get-in entities [:state :time]))]))
@@ -513,11 +500,7 @@
(doseq [m (vals (get-in entities [:musics]))]
(when m
(music! m :set-volume (get-in entities [:volume :value]))))
(label! (:fps entities) :set-text (str (game :fps)))
(render! screen (sort-by :baseline all-entities))
(render! screen [(:fps entities)])
entities))
:on-resize (fn [screen entities]
@@ -552,6 +535,47 @@
:on-chose-item (fn [{:keys [item]} [entities]]
(assoc-in entities [:cursor :current] item))
:on-show-inventory (fn [screen [entities]]
(click-inventory screen entities))
:on-close (fn [screen [entities]]
(assoc-in entities [:tweens :fade-out] (tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0 :finish #(do (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen))
%))))
:on-start-script (fn [{:keys [script]} [entities]]
(script entities)
entities))
(defscreen hud
:on-show
(fn [screen entities]
(let [screen (assoc screen :total-time 0)]
(update! screen :renderer (stage) :camera (orthographic))
{:close (assoc (texture "close.png") :x 304 :y 224 :width 16 :height 16 :baseline 9000)
:inventory (assoc (texture "inventory.png") :x 278 :y 0 :baseline 9000
:mouse-in? (zone/box 278 0 320 42))
:fps (assoc (label "0" (color :white) ) :x 5 :baseline 0)}))
:on-render
(fn [screen [entities]]
(label! (:fps entities) :set-text (str (game :fps)))
(render! screen [(:fps entities) (:inventory entities) (:close entities)])
entities)
:on-resize
(fn [screen entities]
(size! screen 320 240))
:on-touch-up
(fn [screen [entities]]
(if (= (button-code :left) (:button screen))
(let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})]
(cond ((:mouse-in? (:inventory entities)) x y)
(screen! scene :on-show-inventory)
(utils/intersects? (:close entities) [x y])
(screen! scene :on-menu)
:else
nil)))))

View File

@@ -83,7 +83,7 @@
(tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0
:finish (fn [entities]
(utils/stop-sound (:music entities))
(set-screen! @(resolve 'advent.core/advent) scene/scene dialogue/talking-screen dialogue/choice-screen inventory/inventory-screen safe/safe-screen)
(set-screen! @(resolve 'advent.core/advent) scene/scene scene/hud dialogue/talking-screen dialogue/choice-screen inventory/inventory-screen safe/safe-screen )
entities)
:ease tween/ease-in-cubic))
(assoc-in [:tweens :fade-out-music]