almost everything is functional again.

This commit is contained in:
Bryce Covert
2016-08-10 08:58:39 -07:00
parent 130d9e1b1f
commit ee59cbbbe8
6 changed files with 63 additions and 34 deletions

View File

@@ -134,12 +134,15 @@
(= 0.0 (get-in entities [:fade :opacity]))) (= 0.0 (get-in entities [:fade :opacity])))
(let [[[logo & msg] & remaining-messages] (:remaining-messages entities)] (let [[[logo & msg] & remaining-messages] (:remaining-messages entities)]
(if msg (if msg
(-> entities (do
(fade-logo-if-necessary screen logo) (utils/clear-stage screen)
(assoc :credit-table (msg->table msg entities)) (-> entities
(assoc-in [:tweens [:fade :in]] (chain-tweens screen entities)) (fade-logo-if-necessary screen logo)
(assoc :remaining-messages remaining-messages) (assoc :credit-table (->> (msg->table msg entities)
(assoc :last-logo logo)) (utils/add-actor-to-stage screen)))
(assoc-in [:tweens [:fade :in]] (chain-tweens screen entities))
(assoc :remaining-messages remaining-messages)
(assoc :last-logo logo)))
(do (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen)) (do (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen))
entities))) entities)))
entities)) entities))
@@ -147,7 +150,7 @@
(defscreen credits (defscreen credits
:on-show :on-show
(fn [screen entities] (fn [screen entities options]
(utils/setup-viewport screen 1280 960) (utils/setup-viewport screen 1280 960)
(graphics! :set-cursor (utils/cursor "cursor.png" :main)) (graphics! :set-cursor (utils/cursor "cursor.png" :main))
(let [font (bitmap-font "ego/font.fnt" )] (let [font (bitmap-font "ego/font.fnt" )]
@@ -185,24 +188,24 @@
:tweens {:fade-in :tweens {:fade-in
(tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 5.0 :ease tween/ease-out-cubic)}})) (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 5.0 :ease tween/ease-out-cubic)}}))
:on-key-up :on-key-up
(fn [screen entities] (fn [screen entities options]
(when (= (key-code :escape) (:key screen)) (when (= (key-code :escape) (:key screen))
(utils/toggle-fullscreen!)) (utils/toggle-fullscreen!))
nil) nil)
:on-render :on-render
(fn [{:keys [^FitViewport viewport] :as screen} entities] (fn [{:keys [^FitViewport viewport] :as screen} entities options]
(.apply viewport) (.apply viewport)
(let [entities (utils/apply-tweens screen entities (:tweens entities)) (let [entities (start-message-if-necessary screen entities)
entities (start-message-if-necessary screen entities)] entities (utils/apply-tweens screen entities (:tweens entities))]
(clear!) (clear!)
(render! screen [(:bg entities) (:credit-table entities) (:fade entities) (:dbh entities) (:pos entities)]) (render! screen [(:bg entities) (:credit-table entities) (:fade entities) (:dbh entities) (:pos entities)])
entities)) entities))
:on-touch-up (fn [screen entities] :on-touch-up (fn [screen entities options]
(set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen))) (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen)))
:on-resize (fn [{:keys [width height ^FitViewport viewport]} entities] :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height))) (.update viewport width height)))

View File

@@ -70,8 +70,8 @@
(assoc :source-x source-x :source-y source-y) (assoc :source-x source-x :source-y source-y)
(doto (doto
(label! :set-wrap true) (label! :set-wrap true)
(#(label! % :set-width (min 700 (+ 50 (label! % :get-width))))) (#(label! % :set-width (min 700 (+ 50 (label! % :get-width))))))
)) (#(utils/add-actor-to-stage screen %)))
x (- x (/ (label! talk :get-width) 2)) x (- x (/ (label! talk :get-width) 2))
talk (assoc talk :x x :y y :id id) talk (assoc talk :x x :y y :id id)
talk (ensure-on-screen talk)] talk (ensure-on-screen talk)]
@@ -94,6 +94,7 @@
:stop-talk :stop-talk
(fn [screen entities {:keys [id]}] (fn [screen entities {:keys [id]}]
(utils/remove-actor-from-stage entities (or id :fg-actions))
(dissoc entities (or id :fg-actions))) (dissoc entities (or id :fg-actions)))
@@ -154,7 +155,8 @@
(label! :set-x (:x e)) (label! :set-x (:x e))
(label! :set-y (:y e)) (label! :set-y (:y e))
(label! :set-height (:height e)) (label! :set-height (:height e))
(label! :set-font-scale 0.25))])) (label! :set-font-scale 0.25)
(#(utils/add-actor-to-stage screen %)))]))
(assoc-in [:state :choices] choices) (assoc-in [:state :choices] choices)
(assoc-in [:state :callback] callback) (assoc-in [:state :callback] callback)
(assoc-in [:state :np :height] (* choice-height (inc choice-count)))))) (assoc-in [:state :np :height] (* choice-height (inc choice-count))))))
@@ -163,6 +165,7 @@
(let [[x y] (utils/unproject screen options)] (let [[x y] (utils/unproject screen options)]
(when (seq (get-in entities [:state :choices])) (when (seq (get-in entities [:state :choices]))
(when-let [choice (first (filter #(utils/intersects? % [x y]) (vals entities)))] (when-let [choice (first (filter #(utils/intersects? % [x y]) (vals entities)))]
(utils/clear-stage screen)
((get-in entities [:state :callback]) (:index choice)) ((get-in entities [:state :callback]) (:index choice))
(-> entities (-> entities
(assoc-in [:state :callback] nil) (assoc-in [:state :callback] nil)
@@ -211,16 +214,20 @@
talk (label message style :set-alignment Align/center :set-font-scale 0.25) talk (label message style :set-alignment Align/center :set-font-scale 0.25)
x (- x (/ (label! talk :get-width) 2)) x (- x (/ (label! talk :get-width) 2))
talk (assoc talk :x x :y y :opacity 1.0) talk (assoc talk :x x :y y :opacity 1.0)
talk (ensure-on-screen talk)] #_#_talk (ensure-on-screen talk)]
(utils/add-actor-to-stage screen talk)
(-> entities (-> entities
(assoc :dialogue talk) (assoc :dialogue talk)
(assoc-in [:tweens :fade-out-toast] (assoc-in [:tweens :fade-out-toast]
(tween/tween :fade-out-toast screen [:dialogue :opacity] 1.0 0.0 1.0 (tween/tween :fade-out-toast screen [:dialogue :opacity] 1.0 0.0 1.0
:finish #(dissoc % :dialogue)))))) :finish #(do
(utils/remove-actor-from-stage entities :dialogue)
(dissoc % :dialogue)))))))
:stop-talk :stop-talk
(fn [_ entities {:keys [target-id]}] (fn [_ entities {:keys [target-id]}]
(utils/remove-actor-from-stage entities :dialogue)
(dissoc entities :dialogue)) (dissoc entities :dialogue))

View File

@@ -111,10 +111,10 @@
(defscreen inventory-screen (defscreen inventory-screen
:on-show :on-show
(fn [screen entities options] (fn [screen entities options]
(utils/setup-viewport screen 1280 960) (let [screen (utils/setup-viewport screen 1280 960)
hovered-text (assoc (label "Hello" (style :label (utils/get-font "ego/font.fnt") (color :white)) :set-font-scale 0.25) :x 0 :y 850 :width 1280 )]
(let [hovered-text (assoc (label "Hello" (style :label (utils/get-font "ego/font.fnt") (color :white)) :set-font-scale 0.25) :x 0 :y 850 :width 1280 )]
(label! hovered-text :set-alignment Align/bottom) (label! hovered-text :set-alignment Align/bottom)
(utils/add-actor-to-stage screen hovered-text)
{:overlay (assoc (utils/get-texture "inventory-overlay.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :opacity 0.0) {:overlay (assoc (utils/get-texture "inventory-overlay.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :opacity 0.0)
:fade (assoc (utils/get-texture "black.png") :fade (assoc (utils/get-texture "black.png")
:scale-x 80 :scale-x 80

View File

@@ -895,7 +895,7 @@ void main ()
(let [t (double total-time)] (let [t (double total-time)]
(rem t (animation! animation :get-animation-duration)))) (rem t (animation! animation :get-animation-duration))))
(defn animate [{:keys [anim anim-loop? anim-merges anim-start] :or {anim-loop? true} :as entity} {:keys [delta-time total-time] :or {delta-time 0} :as screen}] (defn animate [{:keys [anim anim-loop? anim-merges anim-start] :or {anim-loop? true anim-start 0} :as entity} {:keys [delta-time total-time] :or {delta-time 0} :as screen}]
(let [delta-time (double delta-time) (let [delta-time (double delta-time)
total-time (double total-time) total-time (double total-time)
anim-start (double anim-start) anim-start (double anim-start)
@@ -1754,8 +1754,9 @@ void main ()
(defscreen hud (defscreen hud
:on-show :on-show
(fn [screen entities options] (fn [screen entities options]
(let [screen (assoc screen :total-time 0)] (let [screen (assoc screen :total-time 0)
(utils/setup-viewport screen 320 240) screen (utils/setup-viewport screen 320 240)]
{:inv-fsm {:state :none {:inv-fsm {:state :none
:state-data {} :state-data {}
@@ -1788,7 +1789,8 @@ void main ()
:mouse-in? (zone/box 278 0 320 42) :mouse-in? (zone/box 278 0 320 42)
:opacity 0.8) :opacity 0.8)
:all-items (texture! (texture (pixmap "cursor.png")) :split 18 16) :all-items (texture! (texture (pixmap "cursor.png")) :split 18 16)
#_#_:fps (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)})) :fps (->> (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)
(utils/add-actor-to-stage screen))}))
:on-render :on-render
(fn [{:keys [^FitViewport viewport] :as screen} entities options] (fn [{:keys [^FitViewport viewport] :as screen} entities options]
@@ -1818,13 +1820,14 @@ void main ()
(grow-hud screen entities :save false))) (grow-hud screen entities :save false)))
entities (or (process-fsm screen entities) entities)] entities (or (process-fsm screen entities) entities)]
#_(label! (:fps entities) :set-text (str (game :fps))) (label! (:fps entities) :set-text (str (game :fps)))
(render! screen [ (if (and hud-interactable? (not (:already-saved? entities))) (render! screen [ (if (and hud-interactable? (not (:already-saved? entities)))
(:save entities) (:save entities)
(assoc (:save entities) :opacity 0.5)) (assoc (:save entities) :opacity 0.5))
(:fps entities)
(if hud-interactable? (if hud-interactable?
(:inventory entities) (:inventory entities)
(assoc (:inventory entities) :opacity 0.5)) (assoc (:inventory entities) :opacity 0.5))
@@ -1869,7 +1872,6 @@ void main ()
:on-start-script :on-start-script
(fn [_ entities _] (fn [_ entities _]
(println "here")
(-> entities (-> entities
(update-in [:inv-fsm :pending-states] conj [:none nil]) (update-in [:inv-fsm :pending-states] conj [:none nil])
(assoc-in [:already-saved?] false))) (assoc-in [:already-saved?] false)))

View File

@@ -481,27 +481,32 @@
(dissoc :save-menu) (dissoc :save-menu)
(dissoc :chapters-menu) (dissoc :chapters-menu)
(dissoc :settings-menu) (dissoc :settings-menu)
(assoc :main-menu (main-menu screen))) (assoc :main-menu (->> (main-menu screen)
(utils/add-actor-to-stage screen))))
(#{:dont-delete-button } actor-key) (#{:dont-delete-button } actor-key)
(as-> entities entities (as-> entities entities
(dissoc entities :confirm-delete) (dissoc entities :confirm-delete)
(assoc entities :save-menu (saves-menu entities (:renderer screen)))) (assoc entities :save-menu (->> (saves-menu entities (:renderer screen))
(utils/add-actor-to-stage screen))))
(= :load actor-key) (= :load actor-key)
(as-> entities entities (as-> entities entities
(dissoc entities :main-menu) (dissoc entities :main-menu)
(assoc entities :save-menu (saves-menu entities (:renderer screen)))) (assoc entities :save-menu (->> (saves-menu entities (:renderer screen))
(utils/add-actor-to-stage screen))))
(= :chapters actor-key) (= :chapters actor-key)
(-> entities (-> entities
(dissoc :main-menu) (dissoc :main-menu)
(assoc :chapters-menu (chapters-menu ))) (assoc :chapters-menu (->> (chapters-menu )
(utils/add-actor-to-stage screen))))
(= :settings actor-key) (= :settings actor-key)
(-> entities (-> entities
(dissoc :main-menu) (dissoc :main-menu)
(assoc :settings-menu (settings-menu))) (assoc :settings-menu (->> (settings-menu)
(utils/add-actor-to-stage screen))))
(= :toggle-fullscreen actor-key) (= :toggle-fullscreen actor-key)
(utils/toggle-fullscreen!) (utils/toggle-fullscreen!)
@@ -522,7 +527,8 @@
(= :delete actor-key) (= :delete actor-key)
(as-> entities entities (as-> entities entities
(dissoc entities :save-menu) (dissoc entities :save-menu)
(assoc entities :confirm-delete (confirm-delete entities))) (assoc entities :confirm-delete (->> (confirm-delete entities)
(utils/add-actor-to-stage screen))))
(= :confirm-delete-button actor-key) (= :confirm-delete-button actor-key)
(do (do
@@ -530,7 +536,8 @@
(as-> entities entities (as-> entities entities
(dissoc entities :confirm-delete) (dissoc entities :confirm-delete)
(assoc entities :saves-list (utils/snapshot-screenshots)) (assoc entities :saves-list (utils/snapshot-screenshots))
(assoc entities :save-menu (saves-menu entities (:renderer screen))))) (assoc entities :save-menu (->> (saves-menu entities (:renderer screen))
(utils/add-actor-to-stage screen)))))
(:save e) (:save e)
(do (do

View File

@@ -29,6 +29,16 @@
(.addListener ^Actor object listener)) (.addListener ^Actor object listener))
entity) entity)
(defn clear-stage [{:keys [^Stage renderer]}]
(.clear renderer))
(defn remove-actor-from-stage
([entities id]
(remove-actor-from-stage (id entities)))
([{:keys [^Actor object]}]
(when object
(.remove object))))
(defn log-coords [screen entities] (defn log-coords [screen entities]
(let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})] (let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})]
(log/info (:input-x screen) (:input-y screen) "->" x y))) (log/info (:input-x screen) (:input-y screen) "->" x y)))