fixed deskop shader stuff.

This commit is contained in:
Bryce Covert
2017-03-11 09:45:39 -08:00
parent 5f92863a5e
commit 4d22701c0f
12 changed files with 90 additions and 58 deletions

View File

@@ -102,7 +102,8 @@
(let [~entities (atom starting-entities#)]
(thread (binding [*fg-bg-key* :fg-actions]
~@forms
(change-script-state ~entities false))))))))
(change-script-state ~entities false)
(utils/save @~entities "autosave" "Autosave"))))))))
(defn force-end [entities current-action key]
(do (when current-action

View File

@@ -31,6 +31,7 @@
(fn [this]
(log/log-capture! *ns* :warn :error)
(log/info "Starting game on version v" (advent.version/version))
(utils/listen-for-screenshots)
(steam/init)
(set-screen! @(resolve 'advent.core/advent) splash/splash-screen)))

View File

@@ -1439,10 +1439,10 @@
(when-not (get-in entities [:fg-actions :script-running?])
(let [date (.format (java.text.SimpleDateFormat. "MM/dd/yy") (java.util.Date.))
save-name (str (-> entities :room :name) " - " date)]
(utils/save entities
(str (.getTime (java.util.Date.)))
save-name
date)
(go (utils/save entities
(str (.getTime (java.util.Date.)))
save-name
date))
(screen! toast-screen :on-toast { :message (str "Saved \"" save-name "\"")}))))
:on-menu (fn [{:keys [viewport] :as screen} entities options]

View File

@@ -112,7 +112,6 @@ void main ()
c3 *= frac.x * (1.0 - frac.y);
c4 *= (1.0 - frac.x) * (1.0 - frac.y);
vec4 scaledColor = (c1 + c2 + c3 + c4);
vec4 scaledColor = texture2D(u_texture, v_texCoords);
vec4 grayscale = toGrayscale(scaledColor);
vec4 colorizedOutput = mix(scaledColor, colorize(grayscale, v_color.rgba), hue_amount);
@@ -128,6 +127,4 @@ void main ()
(defn pix-shader []
(if utils/mobile?
mobile-pix-shader
desktop-pix-shader
))
desktop-pix-shader))

View File

@@ -11,7 +11,8 @@
[clojure.tools.logging :as log]
[clojure.string :as str]
[advent.saves :as saves]
[advent.steam :as steam])
[advent.steam :as steam]
[clojure.core.async :refer [put! <! <!! >! chan go go-loop thread take! alts!! poll! dropping-buffer]])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Format Pixmap$Blending Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion Animation]
[com.badlogic.gdx.utils.viewport FitViewport]
@@ -203,20 +204,40 @@
:fail))))))
(defmacro iosify [mobile-version & [regular-version]]
(if (= true (System/getProperty "is-desktop"))
mobile-version
regular-version))
(if (System/getProperty "is-desktop")
regular-version
mobile-version))
(defn get-screenshot-pm []
(def screenshot-chan (chan))
(defn publish-screenshot-fn []
(iosify
(do
(import '[advent.core Saver])
(Saver/takeScreenshot))
(log/info "Taking IOS screenshot...")
(let [screenshot-data (advent.core.Saver/takeScreenshot)]
(fn []
(let [png-data (.getBytes (.toPNGData screenshot-data))
_ (.dispose screenshot-data)
big (Pixmap. png-data 0 (alength png-data))
resized (Pixmap. 160 120 Pixmap$Format/RGB888)]
(.drawPixmap resized big 0 0 (.getWidth big) (.getHeight big) 0 0 160 120)
(.dispose big)
(let [result (advent.core.Saver/flipPixmap resized)]
(.dispose resized)
result)))))
(do
(log/info "Taking Desktop screenshot...")
(Pixmap/setFilter Pixmap$Filter/BiLinear)
(let [viewport (-> @ (resolve 'advent.screens.scene/scene) :screen deref :viewport)
[x y w h g-l g-r] [(.getScreenX ^FitViewport viewport) (.getScreenY ^FitViewport viewport) (.getScreenWidth ^FitViewport viewport) (.getScreenHeight ^FitViewport viewport)]]
(ScreenUtils/getFrameBufferPixmap x y w h)))))
[x y w h g-l g-r] [(.getScreenX ^FitViewport viewport) (.getScreenY ^FitViewport viewport) (.getScreenWidth ^FitViewport viewport) (.getScreenHeight ^FitViewport viewport)]
pm (ScreenUtils/getFrameBufferPixmap x y w h)
resized (Pixmap. 160 120 Pixmap$Format/RGB888)]
(.drawPixmap resized pm 0 0 (.getWidth pm) (.getHeight pm) 0 0 160 120)
(.dispose pm)
(fn [] resized)))))
(defn save [entities id name & [blurb]]
(let [save-fn (fn []
@@ -225,21 +246,26 @@
:id id
:screenshot (steam/save-screenshot-file-name id)
:state (assoc (entities :state)
:x (get-in entities [:room :entities :ego :x])
:y (get-in entities [:room :entities :ego :y]))
:x (get-in entities [:room :entities :ego :x])
:y (get-in entities [:room :entities :ego :y]))
:blurb (or blurb name)}]
(log/info "writing save file...")
(steam/write-bytes (steam/save-file-name id) (.getBytes (pr-str save) "UTF-8"))
(on-gl (let [gl-func (fn []
(let [pm (get-screenshot-pm)
resized (Pixmap. 160 120 Pixmap$Format/RGB888)
_ (.drawPixmap resized pm 0 0 1280 960 0 0 160 120)]
(steam/save-screenshot resized (steam/save-screenshot-file-name id))
(.dispose resized)
(.dispose pm)))]
(try-times gl-func 3)))))]
#_(on-gl (let [gl-func (fn []
(log/info "Screenshot captured. Publishing for persistence")
(put! screenshot-chan [id (publish-screenshot-fn)]))]
(try-times gl-func 3)) )))]
(try-times save-fn 3)))
(defn listen-for-screenshots []
(go-loop [[id ss-fn] (<! screenshot-chan)]
(let [screenshot (ss-fn)]
(log/info "Persisting Screenshot id" id)
(steam/save-screenshot screenshot (steam/save-screenshot-file-name id))
(.dispose screenshot)
(recur (<! screenshot-chan)))))
(defn remove-save [id]
(doseq [f [(steam/save-screenshot-file-name id)
(steam/save-file-name id)]]