diff --git a/desktop/gametodos.txt b/desktop/gametodos.txt
index 1fe310c3..874a55b9 100644
--- a/desktop/gametodos.txt
+++ b/desktop/gametodos.txt
@@ -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
diff --git a/desktop/project.clj b/desktop/project.clj
index 7cf933f4..68c85857 100644
--- a/desktop/project.clj
+++ b/desktop/project.clj
@@ -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]]
diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj
index afb711ea..e22613d9 100644
--- a/desktop/src-common/advent/actions.clj
+++ b/desktop/src-common/advent/actions.clj
@@ -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
diff --git a/desktop/src-common/advent/core.clj b/desktop/src-common/advent/core.clj
index fe7d4941..29a548e1 100644
--- a/desktop/src-common/advent/core.clj
+++ b/desktop/src-common/advent/core.clj
@@ -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)))
diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj
index 4d436368..4a37b5fb 100644
--- a/desktop/src-common/advent/screens/scene.clj
+++ b/desktop/src-common/advent/screens/scene.clj
@@ -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]
diff --git a/desktop/src-common/advent/screens/shader.clj b/desktop/src-common/advent/screens/shader.clj
index fc2389a8..dec46b4e 100644
--- a/desktop/src-common/advent/screens/shader.clj
+++ b/desktop/src-common/advent/screens/shader.clj
@@ -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))
diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj
index 18bf3567..1197cc61 100644
--- a/desktop/src-common/advent/utils.clj
+++ b/desktop/src-common/advent/utils.clj
@@ -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] (CFBundleSignature
????
CFBundleVersion
- 94
+ 100
MinimumOSVersion
8.0
LSRequiresIPhoneOS
@@ -36,6 +36,8 @@
UILauunchImages
Default-568h
+ Default-568h@2x
+ Default-Portrait~ipad
UIRequiresFullScreen
diff --git a/ios/libs/libgdx-bullet.a b/ios/libs/libgdx-bullet.a
deleted file mode 100644
index 9ff9bcdc..00000000
Binary files a/ios/libs/libgdx-bullet.a and /dev/null differ
diff --git a/ios/project.clj b/ios/project.clj
index d5b6d93e..547ea71b 100644
--- a/ios/project.clj
+++ b/ios/project.clj
@@ -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}
diff --git a/ios/robovm.xml b/ios/robovm.xml
index be834e78..16ed77f5 100644
--- a/ios/robovm.xml
+++ b/ios/robovm.xml
@@ -18,6 +18,9 @@
**
+
+ **/*.ogg
+
true
diff --git a/ios/src/java/advent/core/Saver.java b/ios/src/java/advent/core/Saver.java
index 83f36087..c906a28f 100644
--- a/ios/src/java/advent/core/Saver.java
+++ b/ios/src/java/advent/core/Saver.java
@@ -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);
- }
}
}