almost everything is functional again.
This commit is contained in:
@@ -134,12 +134,15 @@
|
||||
(= 0.0 (get-in entities [:fade :opacity])))
|
||||
(let [[[logo & msg] & remaining-messages] (:remaining-messages entities)]
|
||||
(if msg
|
||||
(-> entities
|
||||
(fade-logo-if-necessary screen logo)
|
||||
(assoc :credit-table (msg->table msg entities))
|
||||
(assoc-in [:tweens [:fade :in]] (chain-tweens screen entities))
|
||||
(assoc :remaining-messages remaining-messages)
|
||||
(assoc :last-logo logo))
|
||||
(do
|
||||
(utils/clear-stage screen)
|
||||
(-> entities
|
||||
(fade-logo-if-necessary screen logo)
|
||||
(assoc :credit-table (->> (msg->table msg entities)
|
||||
(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))
|
||||
entities)))
|
||||
entities))
|
||||
@@ -147,7 +150,7 @@
|
||||
|
||||
(defscreen credits
|
||||
:on-show
|
||||
(fn [screen entities]
|
||||
(fn [screen entities options]
|
||||
(utils/setup-viewport screen 1280 960)
|
||||
(graphics! :set-cursor (utils/cursor "cursor.png" :main))
|
||||
(let [font (bitmap-font "ego/font.fnt" )]
|
||||
@@ -185,24 +188,24 @@
|
||||
:tweens {:fade-in
|
||||
(tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 5.0 :ease tween/ease-out-cubic)}}))
|
||||
:on-key-up
|
||||
(fn [screen entities]
|
||||
(fn [screen entities options]
|
||||
(when (= (key-code :escape) (:key screen))
|
||||
(utils/toggle-fullscreen!))
|
||||
nil)
|
||||
|
||||
:on-render
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} entities]
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} entities options]
|
||||
(.apply viewport)
|
||||
(let [entities (utils/apply-tweens screen entities (:tweens entities))
|
||||
entities (start-message-if-necessary screen entities)]
|
||||
(let [entities (start-message-if-necessary screen entities)
|
||||
entities (utils/apply-tweens screen entities (:tweens entities))]
|
||||
(clear!)
|
||||
(render! screen [(:bg entities) (:credit-table entities) (:fade entities) (:dbh entities) (:pos 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)))
|
||||
|
||||
:on-resize (fn [{:keys [width height ^FitViewport viewport]} entities]
|
||||
:on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
|
||||
(.update viewport width height)))
|
||||
|
||||
|
||||
@@ -70,8 +70,8 @@
|
||||
(assoc :source-x source-x :source-y source-y)
|
||||
(doto
|
||||
(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))
|
||||
talk (assoc talk :x x :y y :id id)
|
||||
talk (ensure-on-screen talk)]
|
||||
@@ -94,6 +94,7 @@
|
||||
|
||||
:stop-talk
|
||||
(fn [screen entities {:keys [id]}]
|
||||
(utils/remove-actor-from-stage entities (or id :fg-actions))
|
||||
(dissoc entities (or id :fg-actions)))
|
||||
|
||||
|
||||
@@ -154,7 +155,8 @@
|
||||
(label! :set-x (:x e))
|
||||
(label! :set-y (:y 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 :callback] callback)
|
||||
(assoc-in [:state :np :height] (* choice-height (inc choice-count))))))
|
||||
@@ -163,6 +165,7 @@
|
||||
(let [[x y] (utils/unproject screen options)]
|
||||
(when (seq (get-in entities [:state :choices]))
|
||||
(when-let [choice (first (filter #(utils/intersects? % [x y]) (vals entities)))]
|
||||
(utils/clear-stage screen)
|
||||
((get-in entities [:state :callback]) (:index choice))
|
||||
(-> entities
|
||||
(assoc-in [:state :callback] nil)
|
||||
@@ -211,16 +214,20 @@
|
||||
talk (label message style :set-alignment Align/center :set-font-scale 0.25)
|
||||
x (- x (/ (label! talk :get-width) 2))
|
||||
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
|
||||
(assoc :dialogue talk)
|
||||
(assoc-in [:tweens :fade-out-toast]
|
||||
(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
|
||||
(fn [_ entities {:keys [target-id]}]
|
||||
(utils/remove-actor-from-stage entities :dialogue)
|
||||
(dissoc entities :dialogue))
|
||||
|
||||
|
||||
|
||||
@@ -111,10 +111,10 @@
|
||||
(defscreen inventory-screen
|
||||
:on-show
|
||||
(fn [screen entities options]
|
||||
(utils/setup-viewport screen 1280 960)
|
||||
|
||||
(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 )]
|
||||
(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 )]
|
||||
(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)
|
||||
:fade (assoc (utils/get-texture "black.png")
|
||||
:scale-x 80
|
||||
|
||||
@@ -895,7 +895,7 @@ void main ()
|
||||
(let [t (double total-time)]
|
||||
(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)
|
||||
total-time (double total-time)
|
||||
anim-start (double anim-start)
|
||||
@@ -1754,8 +1754,9 @@ void main ()
|
||||
(defscreen hud
|
||||
:on-show
|
||||
(fn [screen entities options]
|
||||
(let [screen (assoc screen :total-time 0)]
|
||||
(utils/setup-viewport screen 320 240)
|
||||
(let [screen (assoc screen :total-time 0)
|
||||
screen (utils/setup-viewport screen 320 240)]
|
||||
|
||||
|
||||
{:inv-fsm {:state :none
|
||||
:state-data {}
|
||||
@@ -1788,7 +1789,8 @@ void main ()
|
||||
:mouse-in? (zone/box 278 0 320 42)
|
||||
:opacity 0.8)
|
||||
: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
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} entities options]
|
||||
@@ -1818,13 +1820,14 @@ void main ()
|
||||
(grow-hud screen entities :save false)))
|
||||
|
||||
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)))
|
||||
(:save entities)
|
||||
(assoc (:save entities) :opacity 0.5))
|
||||
(:fps entities)
|
||||
(if hud-interactable?
|
||||
(:inventory entities)
|
||||
(assoc (:inventory entities) :opacity 0.5))
|
||||
@@ -1869,7 +1872,6 @@ void main ()
|
||||
|
||||
:on-start-script
|
||||
(fn [_ entities _]
|
||||
(println "here")
|
||||
(-> entities
|
||||
(update-in [:inv-fsm :pending-states] conj [:none nil])
|
||||
(assoc-in [:already-saved?] false)))
|
||||
|
||||
@@ -481,27 +481,32 @@
|
||||
(dissoc :save-menu)
|
||||
(dissoc :chapters-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)
|
||||
(as-> entities entities
|
||||
(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)
|
||||
(as-> entities entities
|
||||
(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)
|
||||
(-> entities
|
||||
(dissoc :main-menu)
|
||||
(assoc :chapters-menu (chapters-menu )))
|
||||
(assoc :chapters-menu (->> (chapters-menu )
|
||||
(utils/add-actor-to-stage screen))))
|
||||
|
||||
(= :settings actor-key)
|
||||
(-> entities
|
||||
(dissoc :main-menu)
|
||||
(assoc :settings-menu (settings-menu)))
|
||||
(assoc :settings-menu (->> (settings-menu)
|
||||
(utils/add-actor-to-stage screen))))
|
||||
|
||||
(= :toggle-fullscreen actor-key)
|
||||
(utils/toggle-fullscreen!)
|
||||
@@ -522,7 +527,8 @@
|
||||
(= :delete actor-key)
|
||||
(as-> entities entities
|
||||
(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)
|
||||
(do
|
||||
@@ -530,7 +536,8 @@
|
||||
(as-> entities entities
|
||||
(dissoc entities :confirm-delete)
|
||||
(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)
|
||||
(do
|
||||
|
||||
@@ -29,6 +29,16 @@
|
||||
(.addListener ^Actor object listener))
|
||||
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]
|
||||
(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)))
|
||||
|
||||
Reference in New Issue
Block a user