almost everything is functional again.
This commit is contained in:
@@ -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)))
|
||||||
|
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)))
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)))
|
||||||
|
|||||||
Reference in New Issue
Block a user