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

@@ -13,3 +13,7 @@ sometimes arrow takes override
hard to leave castle gate
obvious about calculating path? seems to just pause a long time
Reenable mobile screenshots
Static images for mobile screenshots?
Seems like you can save even though it's gray

View File

@@ -26,17 +26,17 @@
:profiles {
:dev {
:source-paths ["src" "src-common" "src-dev"]
:jvm-opts ["-Duse-repl=true" "-Dno-steam=true" #_"-Dclojure.compiler.direct-linking=true" "-Dis-desktop=true"]
:jvm-opts ["-Duse-repl=true" "-Dui_scale=1.0" "-Dno-steam=true" "-Dclojure.compiler.direct-linking=true" "-Dis-desktop=true"]
:dependencies [[com.badlogicgames.gdx/gdx-tools "1.5.3"]
[org.clojure/tools.nrepl "0.2.12"]
[play-clj-nrepl "0.1.0" :exclusions [play-clj]]
[slamhound "1.5.5"]
[org.clojure/data.csv "0.1.3"]]
#_#_:warn-on-reflection true}
:warn-on-reflection true}
:mobile-dev {
:source-paths ["src" "src-common" "src-dev"]
:jvm-opts ["-Duse-repl=true" "-Dno-steam=true" "-Dui_scale=1.5" #_"-Dclojure.compiler.direct-linking=true" "-Dis-desktop=true"]
:jvm-opts ["-Duse-repl=true" "-Dno-steam=true" "-Dui_scale=1.5" "-Dclojure.compiler.direct-linking=true" "-Dis-desktop=true"]
:dependencies [[com.badlogicgames.gdx/gdx-tools "1.5.3"]
[org.clojure/tools.nrepl "0.2.12"]
[play-clj-nrepl "0.1.0" :exclusions [play-clj]]
@@ -46,15 +46,15 @@
#_#_:warn-on-reflection true}
:app-store {
:source-paths ["src" "src-common" "src-dev"]
:jvm-opts ["-Dapp-store=true" "-Dno-steam=true" "-Dis-desktop=true"]
:jvm-opts ["-Dapp-store=true" "-Dui_scale=1.0" "-Dno-steam=true" "-Dis-desktop=true"]
:dependencies [[org.clojure/data.csv "0.1.3"]]
:warn-on-reflection true}
:steam {:dependencies [[com.code-disaster.steamworks4j/steamworks4j "1.2.2"]]
:jvm-opts ["-Dis-desktop=true"]}
:jvm-opts ["-Dis-desktop=true" "-Dui_scale=1.0" ]}
:steam-dev {
:source-paths ["src" "src-common" "src-dev"]
:jvm-opts ["-Duse-repl=true" "-Dis-desktop=true"]
:jvm-opts ["-Duse-repl=true" "-Dui_scale=1.0" "-Dis-desktop=true"]
:dependencies [[com.badlogicgames.gdx/gdx-tools "1.5.3"]
[org.clojure/tools.nrepl "0.2.7"]
[play-clj-nrepl "0.1.0" :exclusions [play-clj]]

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)]]

View File

@@ -21,7 +21,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>94</string>
<string>100</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
<key>LSRequiresIPhoneOS</key>
@@ -36,6 +36,8 @@
<key>UILauunchImages</key>
<array>
<string>Default-568h</string>
<string>Default-568h@2x</string>
<string>Default-Portrait~ipad</string>
</array>
<key>UIRequiresFullScreen</key>
<true />

Binary file not shown.

View File

@@ -8,16 +8,13 @@
[log4j/log4j "1.2.16"]
[org.clojure/clojure "1.8.0"]
[com.mobidevelop.robovm/robovm-cocoatouch "2.3.0"]
[com.mobidevelop.robovm/robovm-objc "2.3.0"]
[com.mobidevelop.robovm/robovm-rt "2.3.0"]
[com.mobidevelop.robovm/robovm-compiler "2.3.0"]
[com.mobidevelop.robovm/robovm-dist-compiler "2.3.0"]
[play-clj "0.4.6-BRYCE"]]
:source-paths ["src/clojure" "../desktop/src-common"]
:java-source-paths ["src/java"]
:plugins [[lein-fruit "0.2.4-SNAPSHOT"]]
:javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
:jvm-opts ["-Dis-desktop=false"]
:jvm-opts []
:ios {:robovm-opts ["-config" "robovm.xml"]
:robovm-path "/Users/brycecovert/.robovm-sdks/robovm-2.2.1-SNAPSHOT"
:version 2.1}

View File

@@ -18,6 +18,9 @@
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.ogg</exclude>
</excludes>
<skipPngCrush>true</skipPngCrush>
</resource>
</resources>

View File

@@ -9,30 +9,31 @@ import com.badlogic.gdx.backends.iosrobovm.*;
public class Saver {
public static Pixmap takeScreenshot(){
public static Pixmap flipPixmap(Pixmap src) {
final int width = src.getWidth();
final int height = src.getHeight();
Pixmap flipped = new Pixmap(width, height, src.getFormat());
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
flipped.drawPixel(x, y, src.getPixel(x, height - y -1));
}
}
return flipped;
}
public static UIImage takeScreenshot(){
UIImage newImage;
UIGraphics.beginImageContext(new CGSize(1280, 960));
((IOSApplication) Gdx.app).getUIViewController().getView().drawViewHierarchy(
new CGRect(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()) , true);
//((IOSApplication) Gdx.app).getUIViewController().getView().setTransform(CGAffineTransform.createScale(1, -1));
UIView view = ((IOSApplication) Gdx.app).getUIViewController().getView();
UIGraphics.beginImageContext(new CGSize(view.getFrame().getWidth(), view.getFrame().getHeight()), true, 0.0);
view.drawViewHierarchy(
new CGRect(0, 0, view.getFrame().getWidth(), view.getFrame().getHeight()), true);
newImage = UIGraphics.getImageFromCurrentImageContext();
UIGraphics.endImageContext();
//((IOSApplication) Gdx.app).getUIViewController().getView().setTransform(CGAffineTransform.createScale(1, 1));
return newImage;
NSData data = newImage.toPNGData();
newImage.dispose();
PixmapIO.PNG p = new PixmapIO.PNG();
Pixmap stepResult = new Pixmap(data.getBytes(), 0, data.getBytes().length);
p.setFlipY(true);
try {
p.write(Gdx.files.local("screenshot.png"), stepResult);
stepResult.dispose();
p.dispose();
return new Pixmap(Gdx.files.local("screenshot.png"));
} catch (Exception e) {
return new Pixmap(160, 120, Pixmap.Format.RGBA8888);
}
}
}