diff --git a/android/project.clj b/android/project.clj
index fe921870..4e96edd0 100644
--- a/android/project.clj
+++ b/android/project.clj
@@ -1,21 +1,24 @@
-(defproject advent "0.0.1-SNAPSHOT"
+(defproject advent "1.3.1-SNAPSHOT"
:description "FIXME: write description"
- :dependencies [[com.badlogicgames.gdx/gdx "1.5.3" :use-resources true]
- [com.badlogicgames.gdx/gdx-backend-lwjgl "1.5.3"]
- [com.badlogicgames.gdx/gdx-box2d "1.5.3"]
- [com.badlogicgames.gdx/gdx-tools "1.5.3"]
+ :dependencies [[com.badlogicgames.gdx/gdx "1.9.3" :use-resources true]
+ [com.badlogicgames.gdx/gdx-backend-lwjgl "1.9.3"]
+ [com.badlogicgames.gdx/gdx-box2d "1.9.3"]
+ [com.badlogicgames.gdx/gdx-tools "1.9.3"]
- [com.badlogicgames.gdx/gdx-backend-android "1.5.3"]
+ [com.badlogicgames.gdx/gdx-backend-android "1.9.3"]
[neko/neko "4.0.0-alpha5"]
- [org.clojure-android/clojure "1.7.0-r2"]
+
+ [org.clojure/tools.logging "0.3.1"]
+ [org.clojure-android/clojure "1.7.0-r4"]
+ [org.im4java/im4java "1.4.0"]
[org.clojure/tools.nrepl "0.2.7"]
[play-clj "0.4.5-BRYCE"]
[org.clojure/data.priority-map "0.0.5"]
- [org.clojure/core.async "0.1.346.0-17112a-alpha"]]
+ [org.clojure/core.async "0.2.371"]]
:plugins [[lein-droid "0.4.4-SNAPSHOT"]]
@@ -25,7 +28,7 @@
:rename-manifest-package "advent.core.debug"
:manifest-options {:app-name "ticks tales (debug)"}
- :aot-exclude-ns [cljs.core.async.macros cljs.core.impl-ioc-macros cljs.core.impl.ioc_macros]}}
+ :aot-exclude-ns ["clojure.core.memoize" "core.async"]}}
:release {:android
{;; Specify the path to your private
;; keystore and the the alias of the
@@ -37,14 +40,14 @@
:android {;; Specify the path to the Android SDK directory either
;; here or in your ~/.lein/profiles.clj file.
- :sdk-path "/usr/local/Cellar/android-sdk/24.3.4/"
+ :sdk-path "/usr/local/Cellar/android-sdk/24.4.1_1/"
;; Uncomment this if dexer fails with OutOfMemoryException
#_#_:force-dex-optimize true
:assets-paths ["/Users/brycecovert/dev/advent/desktop/resources"]
:native-libraries-paths ["libs"]
- :target-version "15" ; 18+
+ :target-version "22" ; 18+
:aot-exclude-ns ["clojure.parallel" "clojure.core.reducers"
"cider.nrepl" "cider-nrepl.plugin"
"cider.nrepl.middleware.util.java.parser"
diff --git a/desktop/.gitignore b/desktop/.gitignore
index f80af87b..f8a3c436 100644
--- a/desktop/.gitignore
+++ b/desktop/.gitignore
@@ -8,3 +8,4 @@ screenshot*
/content-builder/output/
ticks_tales.log
saves
+tmp
diff --git a/desktop/.lein-repl-history b/desktop/.lein-repl-history
new file mode 100644
index 00000000..a055e780
--- /dev/null
+++ b/desktop/.lein-repl-history
@@ -0,0 +1 @@
+
diff --git a/desktop/asset-work/castle-gate/throw-walkie-1.png b/desktop/asset-work/castle-gate/throw-walkie_0.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-1.png
rename to desktop/asset-work/castle-gate/throw-walkie_0.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-2.png b/desktop/asset-work/castle-gate/throw-walkie_1.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-2.png
rename to desktop/asset-work/castle-gate/throw-walkie_1.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-3.png b/desktop/asset-work/castle-gate/throw-walkie_2.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-3.png
rename to desktop/asset-work/castle-gate/throw-walkie_2.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-4.png b/desktop/asset-work/castle-gate/throw-walkie_3.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-4.png
rename to desktop/asset-work/castle-gate/throw-walkie_3.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-5.png b/desktop/asset-work/castle-gate/throw-walkie_4.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-5.png
rename to desktop/asset-work/castle-gate/throw-walkie_4.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-6.png b/desktop/asset-work/castle-gate/throw-walkie_5.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-6.png
rename to desktop/asset-work/castle-gate/throw-walkie_5.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-7.png b/desktop/asset-work/castle-gate/throw-walkie_6.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-7.png
rename to desktop/asset-work/castle-gate/throw-walkie_6.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-8.png b/desktop/asset-work/castle-gate/throw-walkie_7.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-8.png
rename to desktop/asset-work/castle-gate/throw-walkie_7.png
diff --git a/desktop/asset-work/castle-gate/throw-walkie-9.png b/desktop/asset-work/castle-gate/throw-walkie_8.png
similarity index 100%
rename from desktop/asset-work/castle-gate/throw-walkie-9.png
rename to desktop/asset-work/castle-gate/throw-walkie_8.png
diff --git a/desktop/asset-work/cat-tree/eye-1.png b/desktop/asset-work/cat-tree/eye_0.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-1.png
rename to desktop/asset-work/cat-tree/eye_0.png
diff --git a/desktop/asset-work/cat-tree/eye-2.png b/desktop/asset-work/cat-tree/eye_1.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-2.png
rename to desktop/asset-work/cat-tree/eye_1.png
diff --git a/desktop/asset-work/cat-tree/eye-11.png b/desktop/asset-work/cat-tree/eye_10.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-11.png
rename to desktop/asset-work/cat-tree/eye_10.png
diff --git a/desktop/asset-work/cat-tree/eye-12.png b/desktop/asset-work/cat-tree/eye_11.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-12.png
rename to desktop/asset-work/cat-tree/eye_11.png
diff --git a/desktop/asset-work/cat-tree/eye-13.png b/desktop/asset-work/cat-tree/eye_12.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-13.png
rename to desktop/asset-work/cat-tree/eye_12.png
diff --git a/desktop/asset-work/cat-tree/eye-3.png b/desktop/asset-work/cat-tree/eye_2.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-3.png
rename to desktop/asset-work/cat-tree/eye_2.png
diff --git a/desktop/asset-work/cat-tree/eye-4.png b/desktop/asset-work/cat-tree/eye_3.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-4.png
rename to desktop/asset-work/cat-tree/eye_3.png
diff --git a/desktop/asset-work/cat-tree/eye-5.png b/desktop/asset-work/cat-tree/eye_4.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-5.png
rename to desktop/asset-work/cat-tree/eye_4.png
diff --git a/desktop/asset-work/cat-tree/eye-6.png b/desktop/asset-work/cat-tree/eye_5.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-6.png
rename to desktop/asset-work/cat-tree/eye_5.png
diff --git a/desktop/asset-work/cat-tree/eye-7.png b/desktop/asset-work/cat-tree/eye_6.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-7.png
rename to desktop/asset-work/cat-tree/eye_6.png
diff --git a/desktop/asset-work/cat-tree/eye-8.png b/desktop/asset-work/cat-tree/eye_7.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-8.png
rename to desktop/asset-work/cat-tree/eye_7.png
diff --git a/desktop/asset-work/cat-tree/eye-9.png b/desktop/asset-work/cat-tree/eye_8.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-9.png
rename to desktop/asset-work/cat-tree/eye_8.png
diff --git a/desktop/asset-work/cat-tree/eye-10.png b/desktop/asset-work/cat-tree/eye_9.png
similarity index 100%
rename from desktop/asset-work/cat-tree/eye-10.png
rename to desktop/asset-work/cat-tree/eye_9.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-1.png b/desktop/asset-work/cat-tree/grandma-cry_0.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-1.png
rename to desktop/asset-work/cat-tree/grandma-cry_0.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-2.png b/desktop/asset-work/cat-tree/grandma-cry_1.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-2.png
rename to desktop/asset-work/cat-tree/grandma-cry_1.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-11.png b/desktop/asset-work/cat-tree/grandma-cry_10.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-11.png
rename to desktop/asset-work/cat-tree/grandma-cry_10.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-12.png b/desktop/asset-work/cat-tree/grandma-cry_11.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-12.png
rename to desktop/asset-work/cat-tree/grandma-cry_11.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-13.png b/desktop/asset-work/cat-tree/grandma-cry_12.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-13.png
rename to desktop/asset-work/cat-tree/grandma-cry_12.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-14.png b/desktop/asset-work/cat-tree/grandma-cry_13.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-14.png
rename to desktop/asset-work/cat-tree/grandma-cry_13.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-15.png b/desktop/asset-work/cat-tree/grandma-cry_14.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-15.png
rename to desktop/asset-work/cat-tree/grandma-cry_14.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-16.png b/desktop/asset-work/cat-tree/grandma-cry_15.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-16.png
rename to desktop/asset-work/cat-tree/grandma-cry_15.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-17.png b/desktop/asset-work/cat-tree/grandma-cry_16.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-17.png
rename to desktop/asset-work/cat-tree/grandma-cry_16.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-18.png b/desktop/asset-work/cat-tree/grandma-cry_17.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-18.png
rename to desktop/asset-work/cat-tree/grandma-cry_17.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-19.png b/desktop/asset-work/cat-tree/grandma-cry_18.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-19.png
rename to desktop/asset-work/cat-tree/grandma-cry_18.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-20.png b/desktop/asset-work/cat-tree/grandma-cry_19.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-20.png
rename to desktop/asset-work/cat-tree/grandma-cry_19.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-3.png b/desktop/asset-work/cat-tree/grandma-cry_2.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-3.png
rename to desktop/asset-work/cat-tree/grandma-cry_2.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-4.png b/desktop/asset-work/cat-tree/grandma-cry_3.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-4.png
rename to desktop/asset-work/cat-tree/grandma-cry_3.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-5.png b/desktop/asset-work/cat-tree/grandma-cry_4.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-5.png
rename to desktop/asset-work/cat-tree/grandma-cry_4.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-6.png b/desktop/asset-work/cat-tree/grandma-cry_5.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-6.png
rename to desktop/asset-work/cat-tree/grandma-cry_5.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-7.png b/desktop/asset-work/cat-tree/grandma-cry_6.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-7.png
rename to desktop/asset-work/cat-tree/grandma-cry_6.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-8.png b/desktop/asset-work/cat-tree/grandma-cry_7.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-8.png
rename to desktop/asset-work/cat-tree/grandma-cry_7.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-9.png b/desktop/asset-work/cat-tree/grandma-cry_8.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-9.png
rename to desktop/asset-work/cat-tree/grandma-cry_8.png
diff --git a/desktop/asset-work/cat-tree/grandma-cry-10.png b/desktop/asset-work/cat-tree/grandma-cry_9.png
similarity index 100%
rename from desktop/asset-work/cat-tree/grandma-cry-10.png
rename to desktop/asset-work/cat-tree/grandma-cry_9.png
diff --git a/desktop/asset-work/inside-cafeteria/hands-fight-6.png b/desktop/asset-work/cat-tree/ladder.png
similarity index 66%
rename from desktop/asset-work/inside-cafeteria/hands-fight-6.png
rename to desktop/asset-work/cat-tree/ladder.png
index 893bdbf8..003d1797 100644
Binary files a/desktop/asset-work/inside-cafeteria/hands-fight-6.png and b/desktop/asset-work/cat-tree/ladder.png differ
diff --git a/desktop/asset-work/dbh.png b/desktop/asset-work/dbh.png
deleted file mode 100644
index 58dc18f3..00000000
Binary files a/desktop/asset-work/dbh.png and /dev/null differ
diff --git a/desktop/asset-work/dbhlogo.png b/desktop/asset-work/dbhlogo.png
deleted file mode 100644
index 015d322b..00000000
Binary files a/desktop/asset-work/dbhlogo.png and /dev/null differ
diff --git a/desktop/asset-work/dream/cliff.png b/desktop/asset-work/dream/cliff.png
index 1a191229..07b4ba1b 100644
Binary files a/desktop/asset-work/dream/cliff.png and b/desktop/asset-work/dream/cliff.png differ
diff --git a/desktop/asset-work/dream/clouds1.png b/desktop/asset-work/dream/clouds1.png
index ae190375..782bad7f 100644
Binary files a/desktop/asset-work/dream/clouds1.png and b/desktop/asset-work/dream/clouds1.png differ
diff --git a/desktop/asset-work/dream/far.png b/desktop/asset-work/dream/far.png
index 586b2627..8a934af5 100644
Binary files a/desktop/asset-work/dream/far.png and b/desktop/asset-work/dream/far.png differ
diff --git a/desktop/asset-work/dream/sky.png b/desktop/asset-work/dream/sky.png
index 91f54eae..0f4aef89 100644
Binary files a/desktop/asset-work/dream/sky.png and b/desktop/asset-work/dream/sky.png differ
diff --git a/desktop/asset-work/ending-castle/cat-stand.png b/desktop/asset-work/ending-castle/cat-stand.png
new file mode 100644
index 00000000..63205f34
Binary files /dev/null and b/desktop/asset-work/ending-castle/cat-stand.png differ
diff --git a/desktop/asset-work/ending-castle/frankie-fall-1.png b/desktop/asset-work/ending-castle/frankie-fall_0.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-1.png
rename to desktop/asset-work/ending-castle/frankie-fall_0.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-2.png b/desktop/asset-work/ending-castle/frankie-fall_1.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-2.png
rename to desktop/asset-work/ending-castle/frankie-fall_1.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-11.png b/desktop/asset-work/ending-castle/frankie-fall_10.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-11.png
rename to desktop/asset-work/ending-castle/frankie-fall_10.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-12.png b/desktop/asset-work/ending-castle/frankie-fall_11.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-12.png
rename to desktop/asset-work/ending-castle/frankie-fall_11.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-3.png b/desktop/asset-work/ending-castle/frankie-fall_2.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-3.png
rename to desktop/asset-work/ending-castle/frankie-fall_2.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-4.png b/desktop/asset-work/ending-castle/frankie-fall_3.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-4.png
rename to desktop/asset-work/ending-castle/frankie-fall_3.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-5.png b/desktop/asset-work/ending-castle/frankie-fall_4.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-5.png
rename to desktop/asset-work/ending-castle/frankie-fall_4.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-6.png b/desktop/asset-work/ending-castle/frankie-fall_5.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-6.png
rename to desktop/asset-work/ending-castle/frankie-fall_5.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-7.png b/desktop/asset-work/ending-castle/frankie-fall_6.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-7.png
rename to desktop/asset-work/ending-castle/frankie-fall_6.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-8.png b/desktop/asset-work/ending-castle/frankie-fall_7.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-8.png
rename to desktop/asset-work/ending-castle/frankie-fall_7.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-9.png b/desktop/asset-work/ending-castle/frankie-fall_8.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-9.png
rename to desktop/asset-work/ending-castle/frankie-fall_8.png
diff --git a/desktop/asset-work/ending-castle/frankie-fall-10.png b/desktop/asset-work/ending-castle/frankie-fall_9.png
similarity index 100%
rename from desktop/asset-work/ending-castle/frankie-fall-10.png
rename to desktop/asset-work/ending-castle/frankie-fall_9.png
diff --git a/desktop/asset-work/georgia/kick.ogg b/desktop/asset-work/ending-castle/georgia/kick.ogg
similarity index 100%
rename from desktop/asset-work/georgia/kick.ogg
rename to desktop/asset-work/ending-castle/georgia/kick.ogg
diff --git a/desktop/asset-work/georgia/kick.pxa/0.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/0.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/0.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/1.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/1.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/1.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/10.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/10.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/10.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/11.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/11.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/11.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/12.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/12.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/12.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/12.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/13.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/13.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/13.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/13.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/14.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/14.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/14.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/14.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/15.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/15.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/15.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/15.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/16.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/16.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/16.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/16.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/17.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/17.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/17.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/17.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/18.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/18.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/18.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/18.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/19.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/19.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/19.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/19.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/2.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/2.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/2.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/3.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/3.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/3.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/4.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/4.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/4.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/5.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/5.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/5.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/6.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/6.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/6.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/7.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/7.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/7.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/8.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/8.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/8.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/9.pxi b/desktop/asset-work/ending-castle/georgia/kick.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/9.pxi
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/9.pxi
diff --git a/desktop/asset-work/georgia/kick.pxa/CelData.plist b/desktop/asset-work/ending-castle/georgia/kick.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/georgia/kick.pxa/CelData.plist
rename to desktop/asset-work/ending-castle/georgia/kick.pxa/CelData.plist
diff --git a/desktop/asset-work/georgia/kick.wav b/desktop/asset-work/ending-castle/georgia/kick.wav
similarity index 100%
rename from desktop/asset-work/georgia/kick.wav
rename to desktop/asset-work/ending-castle/georgia/kick.wav
diff --git a/desktop/asset-work/georgia/kick-1.png b/desktop/asset-work/ending-castle/georgia/kick_0.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-1.png
rename to desktop/asset-work/ending-castle/georgia/kick_0.png
diff --git a/desktop/asset-work/georgia/kick-2.png b/desktop/asset-work/ending-castle/georgia/kick_1.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-2.png
rename to desktop/asset-work/ending-castle/georgia/kick_1.png
diff --git a/desktop/asset-work/georgia/kick-11.png b/desktop/asset-work/ending-castle/georgia/kick_10.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-11.png
rename to desktop/asset-work/ending-castle/georgia/kick_10.png
diff --git a/desktop/asset-work/georgia/kick-12.png b/desktop/asset-work/ending-castle/georgia/kick_11.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-12.png
rename to desktop/asset-work/ending-castle/georgia/kick_11.png
diff --git a/desktop/asset-work/georgia/kick-13.png b/desktop/asset-work/ending-castle/georgia/kick_12.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-13.png
rename to desktop/asset-work/ending-castle/georgia/kick_12.png
diff --git a/desktop/asset-work/georgia/kick-14.png b/desktop/asset-work/ending-castle/georgia/kick_13.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-14.png
rename to desktop/asset-work/ending-castle/georgia/kick_13.png
diff --git a/desktop/asset-work/georgia/kick-15.png b/desktop/asset-work/ending-castle/georgia/kick_14.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-15.png
rename to desktop/asset-work/ending-castle/georgia/kick_14.png
diff --git a/desktop/asset-work/georgia/kick-16.png b/desktop/asset-work/ending-castle/georgia/kick_15.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-16.png
rename to desktop/asset-work/ending-castle/georgia/kick_15.png
diff --git a/desktop/asset-work/georgia/kick-17.png b/desktop/asset-work/ending-castle/georgia/kick_16.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-17.png
rename to desktop/asset-work/ending-castle/georgia/kick_16.png
diff --git a/desktop/asset-work/georgia/kick-18.png b/desktop/asset-work/ending-castle/georgia/kick_17.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-18.png
rename to desktop/asset-work/ending-castle/georgia/kick_17.png
diff --git a/desktop/asset-work/georgia/kick-19.png b/desktop/asset-work/ending-castle/georgia/kick_18.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-19.png
rename to desktop/asset-work/ending-castle/georgia/kick_18.png
diff --git a/desktop/asset-work/georgia/kick-20.png b/desktop/asset-work/ending-castle/georgia/kick_19.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-20.png
rename to desktop/asset-work/ending-castle/georgia/kick_19.png
diff --git a/desktop/asset-work/georgia/kick-3.png b/desktop/asset-work/ending-castle/georgia/kick_2.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-3.png
rename to desktop/asset-work/ending-castle/georgia/kick_2.png
diff --git a/desktop/asset-work/georgia/kick-4.png b/desktop/asset-work/ending-castle/georgia/kick_3.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-4.png
rename to desktop/asset-work/ending-castle/georgia/kick_3.png
diff --git a/desktop/asset-work/georgia/kick-5.png b/desktop/asset-work/ending-castle/georgia/kick_4.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-5.png
rename to desktop/asset-work/ending-castle/georgia/kick_4.png
diff --git a/desktop/asset-work/georgia/kick-6.png b/desktop/asset-work/ending-castle/georgia/kick_5.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-6.png
rename to desktop/asset-work/ending-castle/georgia/kick_5.png
diff --git a/desktop/asset-work/georgia/kick-7.png b/desktop/asset-work/ending-castle/georgia/kick_6.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-7.png
rename to desktop/asset-work/ending-castle/georgia/kick_6.png
diff --git a/desktop/asset-work/georgia/kick-8.png b/desktop/asset-work/ending-castle/georgia/kick_7.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-8.png
rename to desktop/asset-work/ending-castle/georgia/kick_7.png
diff --git a/desktop/asset-work/georgia/kick-9.png b/desktop/asset-work/ending-castle/georgia/kick_8.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-9.png
rename to desktop/asset-work/ending-castle/georgia/kick_8.png
diff --git a/desktop/asset-work/georgia/kick-10.png b/desktop/asset-work/ending-castle/georgia/kick_9.png
similarity index 100%
rename from desktop/asset-work/georgia/kick-10.png
rename to desktop/asset-work/ending-castle/georgia/kick_9.png
diff --git a/desktop/asset-work/georgia/stand.png b/desktop/asset-work/ending-castle/georgia/stand.png
similarity index 100%
rename from desktop/asset-work/georgia/stand.png
rename to desktop/asset-work/ending-castle/georgia/stand.png
diff --git a/desktop/asset-work/georgia/stand.pxa/0.pxi b/desktop/asset-work/ending-castle/georgia/stand.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/georgia/stand.pxa/0.pxi
rename to desktop/asset-work/ending-castle/georgia/stand.pxa/0.pxi
diff --git a/desktop/asset-work/georgia/stand.pxa/1.pxi b/desktop/asset-work/ending-castle/georgia/stand.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/georgia/stand.pxa/1.pxi
rename to desktop/asset-work/ending-castle/georgia/stand.pxa/1.pxi
diff --git a/desktop/asset-work/georgia/stand.pxa/2.pxi b/desktop/asset-work/ending-castle/georgia/stand.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/georgia/stand.pxa/2.pxi
rename to desktop/asset-work/ending-castle/georgia/stand.pxa/2.pxi
diff --git a/desktop/asset-work/georgia/stand.pxa/3.pxi b/desktop/asset-work/ending-castle/georgia/stand.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/georgia/stand.pxa/3.pxi
rename to desktop/asset-work/ending-castle/georgia/stand.pxa/3.pxi
diff --git a/desktop/asset-work/georgia/stand.pxa/4.pxi b/desktop/asset-work/ending-castle/georgia/stand.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/georgia/stand.pxa/4.pxi
rename to desktop/asset-work/ending-castle/georgia/stand.pxa/4.pxi
diff --git a/desktop/asset-work/ego/cat-toy.pxa/CelData.plist b/desktop/asset-work/ending-castle/georgia/stand.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/cat-toy.pxa/CelData.plist
rename to desktop/asset-work/ending-castle/georgia/stand.pxa/CelData.plist
diff --git a/desktop/asset-work/georgia/walk.png b/desktop/asset-work/ending-castle/georgia/walk.png
similarity index 100%
rename from desktop/asset-work/georgia/walk.png
rename to desktop/asset-work/ending-castle/georgia/walk.png
diff --git a/desktop/asset-work/georgia/walk.pxa/0.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/0.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/0.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/1.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/1.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/1.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/2.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/2.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/2.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/3.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/3.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/3.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/4.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/4.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/4.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/5.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/5.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/5.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/6.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/6.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/6.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/7.pxi b/desktop/asset-work/ending-castle/georgia/walk.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/7.pxi
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/7.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/CelData.plist b/desktop/asset-work/ending-castle/georgia/walk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/CelData.plist
rename to desktop/asset-work/ending-castle/georgia/walk.pxa/CelData.plist
diff --git a/desktop/asset-work/ending-castle/grandma.png b/desktop/asset-work/ending-castle/grandma.png
new file mode 100644
index 00000000..f7ed2c19
Binary files /dev/null and b/desktop/asset-work/ending-castle/grandma.png differ
diff --git a/desktop/asset-work/ending-castle/ladder-guard-2.png b/desktop/asset-work/ending-castle/ladder-guard-2.png
new file mode 100644
index 00000000..4a9ecfb2
Binary files /dev/null and b/desktop/asset-work/ending-castle/ladder-guard-2.png differ
diff --git a/desktop/asset-work/ending-castle/pack.json b/desktop/asset-work/ending-castle/pack.json
new file mode 100644
index 00000000..0faf94db
--- /dev/null
+++ b/desktop/asset-work/ending-castle/pack.json
@@ -0,0 +1,36 @@
+{
+ pot: true,
+ paddingX: 2,
+ paddingY: 2,
+ bleed: true,
+ edgePadding: true,
+ duplicatePadding: false,
+ rotation: false,
+ minWidth: 128,
+ minHeight: 128,
+ maxWidth: 1024,
+ maxHeight: 1024,
+ square: false,
+ stripWhitespaceX: false,
+ stripWhitespaceY: false,
+ alphaThreshold: -1,
+ filterMin: Nearest,
+ filterMag: Nearest,
+ wrapX: ClampToEdge,
+ wrapY: ClampToEdge,
+ format: RGBA4444,
+ alias: true,
+ outputFormat: png,
+ jpegQuality: 0.9,
+ ignoreBlankImages: true,
+ fast: false,
+ debug: false,
+ combineSubdirectories: true,
+ flattenPaths: false,
+ premultiplyAlpha: false,
+ useIndexes: true,
+ limitMemory: true,
+ grid: false,
+ scale: [ 1 ],
+ scaleSuffix: [ "" ]
+}
diff --git a/desktop/asset-work/ending-castle/peddler-talk.png b/desktop/asset-work/ending-castle/peddler-talk.png
new file mode 100644
index 00000000..1be9b694
Binary files /dev/null and b/desktop/asset-work/ending-castle/peddler-talk.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_1.png b/desktop/asset-work/full-splash/POPPixelLogo_02_1.png
new file mode 100644
index 00000000..2b3937c6
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_1.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_10.png b/desktop/asset-work/full-splash/POPPixelLogo_02_10.png
new file mode 100644
index 00000000..0663b4e7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_10.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_100.png b/desktop/asset-work/full-splash/POPPixelLogo_02_100.png
new file mode 100644
index 00000000..0d2f56c3
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_100.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_101.png b/desktop/asset-work/full-splash/POPPixelLogo_02_101.png
new file mode 100644
index 00000000..733bdec0
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_101.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_102.png b/desktop/asset-work/full-splash/POPPixelLogo_02_102.png
new file mode 100644
index 00000000..f56d2578
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_102.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_103.png b/desktop/asset-work/full-splash/POPPixelLogo_02_103.png
new file mode 100644
index 00000000..fd622ae8
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_103.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_104.png b/desktop/asset-work/full-splash/POPPixelLogo_02_104.png
new file mode 100644
index 00000000..0293cfe3
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_104.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_105.png b/desktop/asset-work/full-splash/POPPixelLogo_02_105.png
new file mode 100644
index 00000000..f3dccc79
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_105.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_106.png b/desktop/asset-work/full-splash/POPPixelLogo_02_106.png
new file mode 100644
index 00000000..65cf9db9
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_106.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_107.png b/desktop/asset-work/full-splash/POPPixelLogo_02_107.png
new file mode 100644
index 00000000..35091c49
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_107.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_108.png b/desktop/asset-work/full-splash/POPPixelLogo_02_108.png
new file mode 100644
index 00000000..3be14d24
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_108.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_109.png b/desktop/asset-work/full-splash/POPPixelLogo_02_109.png
new file mode 100644
index 00000000..ac7d635a
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_109.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_11.png b/desktop/asset-work/full-splash/POPPixelLogo_02_11.png
new file mode 100644
index 00000000..a01d7cec
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_11.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_110.png b/desktop/asset-work/full-splash/POPPixelLogo_02_110.png
new file mode 100644
index 00000000..81c01d38
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_110.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_111.png b/desktop/asset-work/full-splash/POPPixelLogo_02_111.png
new file mode 100644
index 00000000..2abfe3dc
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_111.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_112.png b/desktop/asset-work/full-splash/POPPixelLogo_02_112.png
new file mode 100644
index 00000000..4468e6c3
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_112.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_113.png b/desktop/asset-work/full-splash/POPPixelLogo_02_113.png
new file mode 100644
index 00000000..d6d7ccd1
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_113.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_114.png b/desktop/asset-work/full-splash/POPPixelLogo_02_114.png
new file mode 100644
index 00000000..f440f23f
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_114.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_115.png b/desktop/asset-work/full-splash/POPPixelLogo_02_115.png
new file mode 100644
index 00000000..9036b6a1
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_115.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_116.png b/desktop/asset-work/full-splash/POPPixelLogo_02_116.png
new file mode 100644
index 00000000..501e03de
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_116.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_117.png b/desktop/asset-work/full-splash/POPPixelLogo_02_117.png
new file mode 100644
index 00000000..586436e4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_117.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_118.png b/desktop/asset-work/full-splash/POPPixelLogo_02_118.png
new file mode 100644
index 00000000..4f847a6a
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_118.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_119.png b/desktop/asset-work/full-splash/POPPixelLogo_02_119.png
new file mode 100644
index 00000000..555e29b7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_119.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_12.png b/desktop/asset-work/full-splash/POPPixelLogo_02_12.png
new file mode 100644
index 00000000..8def224c
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_12.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_120.png b/desktop/asset-work/full-splash/POPPixelLogo_02_120.png
new file mode 100644
index 00000000..07614715
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_120.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_121.png b/desktop/asset-work/full-splash/POPPixelLogo_02_121.png
new file mode 100644
index 00000000..d750f2fd
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_121.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_122.png b/desktop/asset-work/full-splash/POPPixelLogo_02_122.png
new file mode 100644
index 00000000..6fb5dad1
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_122.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_123.png b/desktop/asset-work/full-splash/POPPixelLogo_02_123.png
new file mode 100644
index 00000000..eb9f20bf
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_123.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_124.png b/desktop/asset-work/full-splash/POPPixelLogo_02_124.png
new file mode 100644
index 00000000..1b0a9283
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_124.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_125.png b/desktop/asset-work/full-splash/POPPixelLogo_02_125.png
new file mode 100644
index 00000000..c452340b
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_125.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_126.png b/desktop/asset-work/full-splash/POPPixelLogo_02_126.png
new file mode 100644
index 00000000..6cc68457
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_126.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_127.png b/desktop/asset-work/full-splash/POPPixelLogo_02_127.png
new file mode 100644
index 00000000..dd48da50
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_127.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_128.png b/desktop/asset-work/full-splash/POPPixelLogo_02_128.png
new file mode 100644
index 00000000..8c6c2466
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_128.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_129.png b/desktop/asset-work/full-splash/POPPixelLogo_02_129.png
new file mode 100644
index 00000000..76568e77
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_129.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_13.png b/desktop/asset-work/full-splash/POPPixelLogo_02_13.png
new file mode 100644
index 00000000..579fbc5b
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_13.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_130.png b/desktop/asset-work/full-splash/POPPixelLogo_02_130.png
new file mode 100644
index 00000000..31c93525
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_130.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_131.png b/desktop/asset-work/full-splash/POPPixelLogo_02_131.png
new file mode 100644
index 00000000..39dbc6a3
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_131.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_132.png b/desktop/asset-work/full-splash/POPPixelLogo_02_132.png
new file mode 100644
index 00000000..abf985f7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_132.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_133.png b/desktop/asset-work/full-splash/POPPixelLogo_02_133.png
new file mode 100644
index 00000000..717c878c
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_133.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_134.png b/desktop/asset-work/full-splash/POPPixelLogo_02_134.png
new file mode 100644
index 00000000..9a00e003
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_134.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_135.png b/desktop/asset-work/full-splash/POPPixelLogo_02_135.png
new file mode 100644
index 00000000..6bb439f4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_135.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_136.png b/desktop/asset-work/full-splash/POPPixelLogo_02_136.png
new file mode 100644
index 00000000..7feaaab4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_136.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_137.png b/desktop/asset-work/full-splash/POPPixelLogo_02_137.png
new file mode 100644
index 00000000..f49d7068
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_137.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_138.png b/desktop/asset-work/full-splash/POPPixelLogo_02_138.png
new file mode 100644
index 00000000..a89b1bfc
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_138.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_139.png b/desktop/asset-work/full-splash/POPPixelLogo_02_139.png
new file mode 100644
index 00000000..fbd86296
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_139.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_14.png b/desktop/asset-work/full-splash/POPPixelLogo_02_14.png
new file mode 100644
index 00000000..fb53aa5b
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_14.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_140.png b/desktop/asset-work/full-splash/POPPixelLogo_02_140.png
new file mode 100644
index 00000000..48ddc0a0
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_140.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_141.png b/desktop/asset-work/full-splash/POPPixelLogo_02_141.png
new file mode 100644
index 00000000..444f469b
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_141.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_142.png b/desktop/asset-work/full-splash/POPPixelLogo_02_142.png
new file mode 100644
index 00000000..c8d53f78
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_142.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_143.png b/desktop/asset-work/full-splash/POPPixelLogo_02_143.png
new file mode 100644
index 00000000..2c374ab9
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_143.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_144.png b/desktop/asset-work/full-splash/POPPixelLogo_02_144.png
new file mode 100644
index 00000000..1a36701c
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_144.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_145.png b/desktop/asset-work/full-splash/POPPixelLogo_02_145.png
new file mode 100644
index 00000000..01523d20
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_145.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_146.png b/desktop/asset-work/full-splash/POPPixelLogo_02_146.png
new file mode 100644
index 00000000..39c407e2
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_146.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_147.png b/desktop/asset-work/full-splash/POPPixelLogo_02_147.png
new file mode 100644
index 00000000..37b868bd
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_147.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_148.png b/desktop/asset-work/full-splash/POPPixelLogo_02_148.png
new file mode 100644
index 00000000..826dc0d5
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_148.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_149.png b/desktop/asset-work/full-splash/POPPixelLogo_02_149.png
new file mode 100644
index 00000000..ffbe9758
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_149.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_15.png b/desktop/asset-work/full-splash/POPPixelLogo_02_15.png
new file mode 100644
index 00000000..7e4d83c6
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_15.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_150.png b/desktop/asset-work/full-splash/POPPixelLogo_02_150.png
new file mode 100644
index 00000000..93ab92ea
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_150.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_151.png b/desktop/asset-work/full-splash/POPPixelLogo_02_151.png
new file mode 100644
index 00000000..beb4c72a
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_151.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_152.png b/desktop/asset-work/full-splash/POPPixelLogo_02_152.png
new file mode 100644
index 00000000..71a80053
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_152.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_153.png b/desktop/asset-work/full-splash/POPPixelLogo_02_153.png
new file mode 100644
index 00000000..17860fa4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_153.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_154.png b/desktop/asset-work/full-splash/POPPixelLogo_02_154.png
new file mode 100644
index 00000000..fc619b0a
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_154.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_155.png b/desktop/asset-work/full-splash/POPPixelLogo_02_155.png
new file mode 100644
index 00000000..d02d76ad
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_155.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_156.png b/desktop/asset-work/full-splash/POPPixelLogo_02_156.png
new file mode 100644
index 00000000..c5eb0880
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_156.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_157.png b/desktop/asset-work/full-splash/POPPixelLogo_02_157.png
new file mode 100644
index 00000000..682b9292
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_157.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_158.png b/desktop/asset-work/full-splash/POPPixelLogo_02_158.png
new file mode 100644
index 00000000..06f46f7b
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_158.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_159.png b/desktop/asset-work/full-splash/POPPixelLogo_02_159.png
new file mode 100644
index 00000000..5ff240fc
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_159.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_16.png b/desktop/asset-work/full-splash/POPPixelLogo_02_16.png
new file mode 100644
index 00000000..4e06f987
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_16.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_160.png b/desktop/asset-work/full-splash/POPPixelLogo_02_160.png
new file mode 100644
index 00000000..5bc7c781
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_160.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_161.png b/desktop/asset-work/full-splash/POPPixelLogo_02_161.png
new file mode 100644
index 00000000..5a3fa5f3
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_161.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_162.png b/desktop/asset-work/full-splash/POPPixelLogo_02_162.png
new file mode 100644
index 00000000..5ed89371
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_162.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_163.png b/desktop/asset-work/full-splash/POPPixelLogo_02_163.png
new file mode 100644
index 00000000..bd65ff10
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_163.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_164.png b/desktop/asset-work/full-splash/POPPixelLogo_02_164.png
new file mode 100644
index 00000000..8f8dce61
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_164.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_165.png b/desktop/asset-work/full-splash/POPPixelLogo_02_165.png
new file mode 100644
index 00000000..523c58ee
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_165.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_166.png b/desktop/asset-work/full-splash/POPPixelLogo_02_166.png
new file mode 100644
index 00000000..695a4b27
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_166.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_167.png b/desktop/asset-work/full-splash/POPPixelLogo_02_167.png
new file mode 100644
index 00000000..1a1295a5
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_167.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_168.png b/desktop/asset-work/full-splash/POPPixelLogo_02_168.png
new file mode 100644
index 00000000..b2a39ee9
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_168.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_169.png b/desktop/asset-work/full-splash/POPPixelLogo_02_169.png
new file mode 100644
index 00000000..3e256d44
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_169.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_17.png b/desktop/asset-work/full-splash/POPPixelLogo_02_17.png
new file mode 100644
index 00000000..50a27e29
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_17.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_170.png b/desktop/asset-work/full-splash/POPPixelLogo_02_170.png
new file mode 100644
index 00000000..ce803cbe
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_170.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_171.png b/desktop/asset-work/full-splash/POPPixelLogo_02_171.png
new file mode 100644
index 00000000..e2f0d134
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_171.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_172.png b/desktop/asset-work/full-splash/POPPixelLogo_02_172.png
new file mode 100644
index 00000000..9b6bf7d0
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_172.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_173.png b/desktop/asset-work/full-splash/POPPixelLogo_02_173.png
new file mode 100644
index 00000000..c043e1eb
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_173.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_174.png b/desktop/asset-work/full-splash/POPPixelLogo_02_174.png
new file mode 100644
index 00000000..cf0079ec
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_174.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_175.png b/desktop/asset-work/full-splash/POPPixelLogo_02_175.png
new file mode 100644
index 00000000..b45a46a7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_175.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_176.png b/desktop/asset-work/full-splash/POPPixelLogo_02_176.png
new file mode 100644
index 00000000..f2b69ae7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_176.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_177.png b/desktop/asset-work/full-splash/POPPixelLogo_02_177.png
new file mode 100644
index 00000000..fcf3fbf2
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_177.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_178.png b/desktop/asset-work/full-splash/POPPixelLogo_02_178.png
new file mode 100644
index 00000000..fde9be9e
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_178.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_179.png b/desktop/asset-work/full-splash/POPPixelLogo_02_179.png
new file mode 100644
index 00000000..6ddf4e27
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_179.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_18.png b/desktop/asset-work/full-splash/POPPixelLogo_02_18.png
new file mode 100644
index 00000000..0e79a0e9
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_18.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_180.png b/desktop/asset-work/full-splash/POPPixelLogo_02_180.png
new file mode 100644
index 00000000..aab14e6e
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_180.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_181.png b/desktop/asset-work/full-splash/POPPixelLogo_02_181.png
new file mode 100644
index 00000000..1bee6dfd
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_181.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_182.png b/desktop/asset-work/full-splash/POPPixelLogo_02_182.png
new file mode 100644
index 00000000..55d4a7c8
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_182.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_183.png b/desktop/asset-work/full-splash/POPPixelLogo_02_183.png
new file mode 100644
index 00000000..947592f3
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_183.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_184.png b/desktop/asset-work/full-splash/POPPixelLogo_02_184.png
new file mode 100644
index 00000000..2c419906
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_184.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_185.png b/desktop/asset-work/full-splash/POPPixelLogo_02_185.png
new file mode 100644
index 00000000..73494027
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_185.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_186.png b/desktop/asset-work/full-splash/POPPixelLogo_02_186.png
new file mode 100644
index 00000000..72452def
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_186.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_187.png b/desktop/asset-work/full-splash/POPPixelLogo_02_187.png
new file mode 100644
index 00000000..19b5f67e
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_187.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_188.png b/desktop/asset-work/full-splash/POPPixelLogo_02_188.png
new file mode 100644
index 00000000..478c5212
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_188.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_189.png b/desktop/asset-work/full-splash/POPPixelLogo_02_189.png
new file mode 100644
index 00000000..5612e096
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_189.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_19.png b/desktop/asset-work/full-splash/POPPixelLogo_02_19.png
new file mode 100644
index 00000000..1997dc65
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_19.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_190.png b/desktop/asset-work/full-splash/POPPixelLogo_02_190.png
new file mode 100644
index 00000000..6a95ad37
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_190.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_191.png b/desktop/asset-work/full-splash/POPPixelLogo_02_191.png
new file mode 100644
index 00000000..f2c39e4d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_191.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_192.png b/desktop/asset-work/full-splash/POPPixelLogo_02_192.png
new file mode 100644
index 00000000..9bbb8f70
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_192.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_193.png b/desktop/asset-work/full-splash/POPPixelLogo_02_193.png
new file mode 100644
index 00000000..42255fe4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_193.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_194.png b/desktop/asset-work/full-splash/POPPixelLogo_02_194.png
new file mode 100644
index 00000000..02d55248
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_194.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_195.png b/desktop/asset-work/full-splash/POPPixelLogo_02_195.png
new file mode 100644
index 00000000..824ffd9d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_195.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_196.png b/desktop/asset-work/full-splash/POPPixelLogo_02_196.png
new file mode 100644
index 00000000..a29c9121
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_196.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_197.png b/desktop/asset-work/full-splash/POPPixelLogo_02_197.png
new file mode 100644
index 00000000..c9b590b2
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_197.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_198.png b/desktop/asset-work/full-splash/POPPixelLogo_02_198.png
new file mode 100644
index 00000000..bea88921
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_198.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_199.png b/desktop/asset-work/full-splash/POPPixelLogo_02_199.png
new file mode 100644
index 00000000..d1d13e93
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_199.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_2.png b/desktop/asset-work/full-splash/POPPixelLogo_02_2.png
new file mode 100644
index 00000000..4915335d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_2.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_20.png b/desktop/asset-work/full-splash/POPPixelLogo_02_20.png
new file mode 100644
index 00000000..d58d5227
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_20.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_200.png b/desktop/asset-work/full-splash/POPPixelLogo_02_200.png
new file mode 100644
index 00000000..97acff96
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_200.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_21.png b/desktop/asset-work/full-splash/POPPixelLogo_02_21.png
new file mode 100644
index 00000000..2bd6a9eb
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_21.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_22.png b/desktop/asset-work/full-splash/POPPixelLogo_02_22.png
new file mode 100644
index 00000000..9f415433
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_22.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_23.png b/desktop/asset-work/full-splash/POPPixelLogo_02_23.png
new file mode 100644
index 00000000..3fcaf2df
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_23.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_24.png b/desktop/asset-work/full-splash/POPPixelLogo_02_24.png
new file mode 100644
index 00000000..461b8db6
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_24.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_25.png b/desktop/asset-work/full-splash/POPPixelLogo_02_25.png
new file mode 100644
index 00000000..fd630580
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_25.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_26.png b/desktop/asset-work/full-splash/POPPixelLogo_02_26.png
new file mode 100644
index 00000000..09514d02
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_26.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_27.png b/desktop/asset-work/full-splash/POPPixelLogo_02_27.png
new file mode 100644
index 00000000..5e93beb8
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_27.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_28.png b/desktop/asset-work/full-splash/POPPixelLogo_02_28.png
new file mode 100644
index 00000000..f843ac52
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_28.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_29.png b/desktop/asset-work/full-splash/POPPixelLogo_02_29.png
new file mode 100644
index 00000000..7d74248c
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_29.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_3.png b/desktop/asset-work/full-splash/POPPixelLogo_02_3.png
new file mode 100644
index 00000000..d637df9e
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_3.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_30.png b/desktop/asset-work/full-splash/POPPixelLogo_02_30.png
new file mode 100644
index 00000000..402b23f3
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_30.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_31.png b/desktop/asset-work/full-splash/POPPixelLogo_02_31.png
new file mode 100644
index 00000000..731fb314
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_31.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_32.png b/desktop/asset-work/full-splash/POPPixelLogo_02_32.png
new file mode 100644
index 00000000..52da13d1
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_32.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_33.png b/desktop/asset-work/full-splash/POPPixelLogo_02_33.png
new file mode 100644
index 00000000..ac6afc5b
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_33.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_34.png b/desktop/asset-work/full-splash/POPPixelLogo_02_34.png
new file mode 100644
index 00000000..7daea11d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_34.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_35.png b/desktop/asset-work/full-splash/POPPixelLogo_02_35.png
new file mode 100644
index 00000000..2a47af79
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_35.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_36.png b/desktop/asset-work/full-splash/POPPixelLogo_02_36.png
new file mode 100644
index 00000000..fd5c7e5d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_36.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_37.png b/desktop/asset-work/full-splash/POPPixelLogo_02_37.png
new file mode 100644
index 00000000..a6fe0e10
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_37.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_38.png b/desktop/asset-work/full-splash/POPPixelLogo_02_38.png
new file mode 100644
index 00000000..b08b4cdb
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_38.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_39.png b/desktop/asset-work/full-splash/POPPixelLogo_02_39.png
new file mode 100644
index 00000000..a54ec59f
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_39.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_4.png b/desktop/asset-work/full-splash/POPPixelLogo_02_4.png
new file mode 100644
index 00000000..93a9f499
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_4.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_40.png b/desktop/asset-work/full-splash/POPPixelLogo_02_40.png
new file mode 100644
index 00000000..e71eb009
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_40.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_41.png b/desktop/asset-work/full-splash/POPPixelLogo_02_41.png
new file mode 100644
index 00000000..134d6e05
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_41.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_42.png b/desktop/asset-work/full-splash/POPPixelLogo_02_42.png
new file mode 100644
index 00000000..ce946300
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_42.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_43.png b/desktop/asset-work/full-splash/POPPixelLogo_02_43.png
new file mode 100644
index 00000000..9edebb0a
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_43.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_44.png b/desktop/asset-work/full-splash/POPPixelLogo_02_44.png
new file mode 100644
index 00000000..a885ea1e
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_44.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_45.png b/desktop/asset-work/full-splash/POPPixelLogo_02_45.png
new file mode 100644
index 00000000..a0f4b776
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_45.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_46.png b/desktop/asset-work/full-splash/POPPixelLogo_02_46.png
new file mode 100644
index 00000000..ca3802e6
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_46.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_47.png b/desktop/asset-work/full-splash/POPPixelLogo_02_47.png
new file mode 100644
index 00000000..e5b632d1
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_47.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_48.png b/desktop/asset-work/full-splash/POPPixelLogo_02_48.png
new file mode 100644
index 00000000..e77067c4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_48.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_49.png b/desktop/asset-work/full-splash/POPPixelLogo_02_49.png
new file mode 100644
index 00000000..c6bd3561
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_49.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_5.png b/desktop/asset-work/full-splash/POPPixelLogo_02_5.png
new file mode 100644
index 00000000..a5856fcc
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_5.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_50.png b/desktop/asset-work/full-splash/POPPixelLogo_02_50.png
new file mode 100644
index 00000000..a3a46ae8
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_50.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_51.png b/desktop/asset-work/full-splash/POPPixelLogo_02_51.png
new file mode 100644
index 00000000..e107505f
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_51.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_52.png b/desktop/asset-work/full-splash/POPPixelLogo_02_52.png
new file mode 100644
index 00000000..83e11e22
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_52.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_53.png b/desktop/asset-work/full-splash/POPPixelLogo_02_53.png
new file mode 100644
index 00000000..d2d37ecc
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_53.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_54.png b/desktop/asset-work/full-splash/POPPixelLogo_02_54.png
new file mode 100644
index 00000000..60c954d4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_54.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_55.png b/desktop/asset-work/full-splash/POPPixelLogo_02_55.png
new file mode 100644
index 00000000..9c79d1eb
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_55.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_56.png b/desktop/asset-work/full-splash/POPPixelLogo_02_56.png
new file mode 100644
index 00000000..0a1371b0
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_56.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_57.png b/desktop/asset-work/full-splash/POPPixelLogo_02_57.png
new file mode 100644
index 00000000..ea106831
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_57.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_58.png b/desktop/asset-work/full-splash/POPPixelLogo_02_58.png
new file mode 100644
index 00000000..51c68dea
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_58.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_59.png b/desktop/asset-work/full-splash/POPPixelLogo_02_59.png
new file mode 100644
index 00000000..f5c0874e
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_59.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_6.png b/desktop/asset-work/full-splash/POPPixelLogo_02_6.png
new file mode 100644
index 00000000..a2230c09
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_6.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_60.png b/desktop/asset-work/full-splash/POPPixelLogo_02_60.png
new file mode 100644
index 00000000..f6c12d86
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_60.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_61.png b/desktop/asset-work/full-splash/POPPixelLogo_02_61.png
new file mode 100644
index 00000000..6f771137
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_61.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_62.png b/desktop/asset-work/full-splash/POPPixelLogo_02_62.png
new file mode 100644
index 00000000..14faa41d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_62.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_63.png b/desktop/asset-work/full-splash/POPPixelLogo_02_63.png
new file mode 100644
index 00000000..ed4bd421
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_63.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_64.png b/desktop/asset-work/full-splash/POPPixelLogo_02_64.png
new file mode 100644
index 00000000..d34999ae
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_64.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_65.png b/desktop/asset-work/full-splash/POPPixelLogo_02_65.png
new file mode 100644
index 00000000..cb80a41d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_65.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_66.png b/desktop/asset-work/full-splash/POPPixelLogo_02_66.png
new file mode 100644
index 00000000..f3214798
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_66.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_67.png b/desktop/asset-work/full-splash/POPPixelLogo_02_67.png
new file mode 100644
index 00000000..a5ed869b
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_67.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_68.png b/desktop/asset-work/full-splash/POPPixelLogo_02_68.png
new file mode 100644
index 00000000..1eddc5af
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_68.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_69.png b/desktop/asset-work/full-splash/POPPixelLogo_02_69.png
new file mode 100644
index 00000000..973548a8
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_69.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_7.png b/desktop/asset-work/full-splash/POPPixelLogo_02_7.png
new file mode 100644
index 00000000..23caf9bc
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_7.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_70.png b/desktop/asset-work/full-splash/POPPixelLogo_02_70.png
new file mode 100644
index 00000000..ecd77f10
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_70.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_71.png b/desktop/asset-work/full-splash/POPPixelLogo_02_71.png
new file mode 100644
index 00000000..5a785e29
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_71.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_72.png b/desktop/asset-work/full-splash/POPPixelLogo_02_72.png
new file mode 100644
index 00000000..a84aac84
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_72.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_73.png b/desktop/asset-work/full-splash/POPPixelLogo_02_73.png
new file mode 100644
index 00000000..852a3cf7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_73.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_74.png b/desktop/asset-work/full-splash/POPPixelLogo_02_74.png
new file mode 100644
index 00000000..ce857bf1
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_74.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_75.png b/desktop/asset-work/full-splash/POPPixelLogo_02_75.png
new file mode 100644
index 00000000..1522b684
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_75.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_76.png b/desktop/asset-work/full-splash/POPPixelLogo_02_76.png
new file mode 100644
index 00000000..d327aaf7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_76.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_77.png b/desktop/asset-work/full-splash/POPPixelLogo_02_77.png
new file mode 100644
index 00000000..19328860
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_77.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_78.png b/desktop/asset-work/full-splash/POPPixelLogo_02_78.png
new file mode 100644
index 00000000..e6802858
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_78.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_79.png b/desktop/asset-work/full-splash/POPPixelLogo_02_79.png
new file mode 100644
index 00000000..2ae48073
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_79.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_8.png b/desktop/asset-work/full-splash/POPPixelLogo_02_8.png
new file mode 100644
index 00000000..f9891c5d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_8.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_80.png b/desktop/asset-work/full-splash/POPPixelLogo_02_80.png
new file mode 100644
index 00000000..8b1a5e46
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_80.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_81.png b/desktop/asset-work/full-splash/POPPixelLogo_02_81.png
new file mode 100644
index 00000000..99d17299
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_81.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_82.png b/desktop/asset-work/full-splash/POPPixelLogo_02_82.png
new file mode 100644
index 00000000..0244abd1
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_82.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_83.png b/desktop/asset-work/full-splash/POPPixelLogo_02_83.png
new file mode 100644
index 00000000..7003b9a4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_83.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_84.png b/desktop/asset-work/full-splash/POPPixelLogo_02_84.png
new file mode 100644
index 00000000..1bf6ff21
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_84.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_85.png b/desktop/asset-work/full-splash/POPPixelLogo_02_85.png
new file mode 100644
index 00000000..7de41769
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_85.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_86.png b/desktop/asset-work/full-splash/POPPixelLogo_02_86.png
new file mode 100644
index 00000000..7101842f
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_86.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_87.png b/desktop/asset-work/full-splash/POPPixelLogo_02_87.png
new file mode 100644
index 00000000..e9126a13
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_87.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_88.png b/desktop/asset-work/full-splash/POPPixelLogo_02_88.png
new file mode 100644
index 00000000..94015d6f
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_88.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_89.png b/desktop/asset-work/full-splash/POPPixelLogo_02_89.png
new file mode 100644
index 00000000..f5e82d3c
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_89.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_9.png b/desktop/asset-work/full-splash/POPPixelLogo_02_9.png
new file mode 100644
index 00000000..ce80fae8
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_9.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_90.png b/desktop/asset-work/full-splash/POPPixelLogo_02_90.png
new file mode 100644
index 00000000..8c888c2d
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_90.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_91.png b/desktop/asset-work/full-splash/POPPixelLogo_02_91.png
new file mode 100644
index 00000000..206a9fac
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_91.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_92.png b/desktop/asset-work/full-splash/POPPixelLogo_02_92.png
new file mode 100644
index 00000000..be9e1719
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_92.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_93.png b/desktop/asset-work/full-splash/POPPixelLogo_02_93.png
new file mode 100644
index 00000000..6343f088
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_93.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_94.png b/desktop/asset-work/full-splash/POPPixelLogo_02_94.png
new file mode 100644
index 00000000..ff0fd882
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_94.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_95.png b/desktop/asset-work/full-splash/POPPixelLogo_02_95.png
new file mode 100644
index 00000000..ad1ea4e4
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_95.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_96.png b/desktop/asset-work/full-splash/POPPixelLogo_02_96.png
new file mode 100644
index 00000000..fbf21092
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_96.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_97.png b/desktop/asset-work/full-splash/POPPixelLogo_02_97.png
new file mode 100644
index 00000000..e49c0038
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_97.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_98.png b/desktop/asset-work/full-splash/POPPixelLogo_02_98.png
new file mode 100644
index 00000000..20bf1607
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_98.png differ
diff --git a/desktop/asset-work/full-splash/POPPixelLogo_02_99.png b/desktop/asset-work/full-splash/POPPixelLogo_02_99.png
new file mode 100644
index 00000000..d782bec7
Binary files /dev/null and b/desktop/asset-work/full-splash/POPPixelLogo_02_99.png differ
diff --git a/desktop/asset-work/full-splash/pack.json b/desktop/asset-work/full-splash/pack.json
new file mode 100644
index 00000000..3d87d48b
--- /dev/null
+++ b/desktop/asset-work/full-splash/pack.json
@@ -0,0 +1,36 @@
+{
+ pot: true,
+ paddingX: 2,
+ paddingY: 2,
+ bleed: true,
+ edgePadding: true,
+ duplicatePadding: false,
+ rotation: false,
+ minWidth: 1024,
+ minHeight: 1024,
+ maxWidth: 4096,
+ maxHeight: 4096,
+ square: false,
+ stripWhitespaceX: false,
+ stripWhitespaceY: false,
+ alphaThreshold: 0,
+ filterMin: Nearest,
+ filterMag: Nearest,
+ wrapX: ClampToEdge,
+ wrapY: ClampToEdge,
+ format: RGBA4444,
+ alias: true,
+ outputFormat: png,
+ jpegQuality: 0.9,
+ ignoreBlankImages: true,
+ fast: false,
+ debug: false,
+ combineSubdirectories: true,
+ flattenPaths: false,
+ premultiplyAlpha: false,
+ useIndexes: false,
+ limitMemory: true,
+ grid: false,
+ scale: [ 1 ],
+ scaleSuffix: [ "" ]
+}
diff --git a/desktop/asset-work/outside-castle/bird.png b/desktop/asset-work/global/bird.png
similarity index 100%
rename from desktop/asset-work/outside-castle/bird.png
rename to desktop/asset-work/global/bird.png
diff --git a/desktop/asset-work/black.png b/desktop/asset-work/global/black.png
similarity index 100%
rename from desktop/asset-work/black.png
rename to desktop/asset-work/global/black.png
diff --git a/desktop/asset-work/close.png b/desktop/asset-work/global/close.png
similarity index 100%
rename from desktop/asset-work/close.png
rename to desktop/asset-work/global/close.png
diff --git a/desktop/asset-work/ego/Untitled.png b/desktop/asset-work/global/ego/Untitled.png
similarity index 100%
rename from desktop/asset-work/ego/Untitled.png
rename to desktop/asset-work/global/ego/Untitled.png
diff --git a/desktop/asset-work/ego/axe-wood.png b/desktop/asset-work/global/ego/axe-wood.png
similarity index 100%
rename from desktop/asset-work/ego/axe-wood.png
rename to desktop/asset-work/global/ego/axe-wood.png
diff --git a/desktop/asset-work/ego/axe.ogg b/desktop/asset-work/global/ego/axe.ogg
similarity index 100%
rename from desktop/asset-work/ego/axe.ogg
rename to desktop/asset-work/global/ego/axe.ogg
diff --git a/desktop/asset-work/ego/axe.png b/desktop/asset-work/global/ego/axe.png
similarity index 100%
rename from desktop/asset-work/ego/axe.png
rename to desktop/asset-work/global/ego/axe.png
diff --git a/desktop/asset-work/ego/axe.pxa/0.pxi b/desktop/asset-work/global/ego/axe.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/0.pxi
rename to desktop/asset-work/global/ego/axe.pxa/0.pxi
diff --git a/desktop/asset-work/ego/axe.pxa/1.pxi b/desktop/asset-work/global/ego/axe.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/1.pxi
rename to desktop/asset-work/global/ego/axe.pxa/1.pxi
diff --git a/desktop/asset-work/ego/axe.pxa/2.pxi b/desktop/asset-work/global/ego/axe.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/2.pxi
rename to desktop/asset-work/global/ego/axe.pxa/2.pxi
diff --git a/desktop/asset-work/ego/axe.pxa/3.pxi b/desktop/asset-work/global/ego/axe.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/3.pxi
rename to desktop/asset-work/global/ego/axe.pxa/3.pxi
diff --git a/desktop/asset-work/ego/axe.pxa/4.pxi b/desktop/asset-work/global/ego/axe.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/4.pxi
rename to desktop/asset-work/global/ego/axe.pxa/4.pxi
diff --git a/desktop/asset-work/ego/axe.pxa/5.pxi b/desktop/asset-work/global/ego/axe.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/5.pxi
rename to desktop/asset-work/global/ego/axe.pxa/5.pxi
diff --git a/desktop/asset-work/ego/axe.pxa/6.pxi b/desktop/asset-work/global/ego/axe.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/6.pxi
rename to desktop/asset-work/global/ego/axe.pxa/6.pxi
diff --git a/desktop/asset-work/ego/axe.pxa/CelData.plist b/desktop/asset-work/global/ego/axe.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/axe.pxa/CelData.plist
rename to desktop/asset-work/global/ego/axe.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/axe.wav b/desktop/asset-work/global/ego/axe.wav
similarity index 100%
rename from desktop/asset-work/ego/axe.wav
rename to desktop/asset-work/global/ego/axe.wav
diff --git a/desktop/asset-work/ego/base.png b/desktop/asset-work/global/ego/base.png
similarity index 100%
rename from desktop/asset-work/ego/base.png
rename to desktop/asset-work/global/ego/base.png
diff --git a/desktop/asset-work/ego/blink2.wav b/desktop/asset-work/global/ego/blink2.wav
similarity index 100%
rename from desktop/asset-work/ego/blink2.wav
rename to desktop/asset-work/global/ego/blink2.wav
diff --git a/desktop/asset-work/ego/breakglass.wav b/desktop/asset-work/global/ego/breakglass.wav
similarity index 100%
rename from desktop/asset-work/ego/breakglass.wav
rename to desktop/asset-work/global/ego/breakglass.wav
diff --git a/desktop/asset-work/ego/burnt.png b/desktop/asset-work/global/ego/burnt.png
similarity index 100%
rename from desktop/asset-work/ego/burnt.png
rename to desktop/asset-work/global/ego/burnt.png
diff --git a/desktop/asset-work/ego/burnt.pxa/0.pxi b/desktop/asset-work/global/ego/burnt.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/0.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/0.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/1.pxi b/desktop/asset-work/global/ego/burnt.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/1.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/1.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/10.pxi b/desktop/asset-work/global/ego/burnt.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/10.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/10.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/11.pxi b/desktop/asset-work/global/ego/burnt.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/11.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/11.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/2.pxi b/desktop/asset-work/global/ego/burnt.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/2.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/2.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/3.pxi b/desktop/asset-work/global/ego/burnt.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/3.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/3.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/4.pxi b/desktop/asset-work/global/ego/burnt.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/4.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/4.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/5.pxi b/desktop/asset-work/global/ego/burnt.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/5.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/5.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/6.pxi b/desktop/asset-work/global/ego/burnt.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/6.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/6.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/7.pxi b/desktop/asset-work/global/ego/burnt.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/7.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/7.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/8.pxi b/desktop/asset-work/global/ego/burnt.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/8.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/8.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/9.pxi b/desktop/asset-work/global/ego/burnt.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/9.pxi
rename to desktop/asset-work/global/ego/burnt.pxa/9.pxi
diff --git a/desktop/asset-work/ego/burnt.pxa/CelData.plist b/desktop/asset-work/global/ego/burnt.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/burnt.pxa/CelData.plist
rename to desktop/asset-work/global/ego/burnt.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/cat-toy.png b/desktop/asset-work/global/ego/cat-toy.png
similarity index 100%
rename from desktop/asset-work/ego/cat-toy.png
rename to desktop/asset-work/global/ego/cat-toy.png
diff --git a/desktop/asset-work/ego/cat-toy.pxa/0.pxi b/desktop/asset-work/global/ego/cat-toy.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/cat-toy.pxa/0.pxi
rename to desktop/asset-work/global/ego/cat-toy.pxa/0.pxi
diff --git a/desktop/asset-work/ego/cat-toy.pxa/1.pxi b/desktop/asset-work/global/ego/cat-toy.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/cat-toy.pxa/1.pxi
rename to desktop/asset-work/global/ego/cat-toy.pxa/1.pxi
diff --git a/desktop/asset-work/ego/cat-toy.pxa/2.pxi b/desktop/asset-work/global/ego/cat-toy.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/cat-toy.pxa/2.pxi
rename to desktop/asset-work/global/ego/cat-toy.pxa/2.pxi
diff --git a/desktop/asset-work/ego/cat-toy.pxa/3.pxi b/desktop/asset-work/global/ego/cat-toy.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/cat-toy.pxa/3.pxi
rename to desktop/asset-work/global/ego/cat-toy.pxa/3.pxi
diff --git a/desktop/asset-work/ego/cat-toy.pxa/4.pxi b/desktop/asset-work/global/ego/cat-toy.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/cat-toy.pxa/4.pxi
rename to desktop/asset-work/global/ego/cat-toy.pxa/4.pxi
diff --git a/desktop/asset-work/ego/grow.pxa/CelData.plist b/desktop/asset-work/global/ego/cat-toy.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/grow.pxa/CelData.plist
rename to desktop/asset-work/global/ego/cat-toy.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/climb.png b/desktop/asset-work/global/ego/climb.png
similarity index 100%
rename from desktop/asset-work/ego/climb.png
rename to desktop/asset-work/global/ego/climb.png
diff --git a/desktop/asset-work/ego/climb.pxa/0.pxi b/desktop/asset-work/global/ego/climb.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/0.pxi
rename to desktop/asset-work/global/ego/climb.pxa/0.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/1.pxi b/desktop/asset-work/global/ego/climb.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/1.pxi
rename to desktop/asset-work/global/ego/climb.pxa/1.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/10.pxi b/desktop/asset-work/global/ego/climb.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/10.pxi
rename to desktop/asset-work/global/ego/climb.pxa/10.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/2.pxi b/desktop/asset-work/global/ego/climb.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/2.pxi
rename to desktop/asset-work/global/ego/climb.pxa/2.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/3.pxi b/desktop/asset-work/global/ego/climb.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/3.pxi
rename to desktop/asset-work/global/ego/climb.pxa/3.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/4.pxi b/desktop/asset-work/global/ego/climb.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/4.pxi
rename to desktop/asset-work/global/ego/climb.pxa/4.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/5.pxi b/desktop/asset-work/global/ego/climb.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/5.pxi
rename to desktop/asset-work/global/ego/climb.pxa/5.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/6.pxi b/desktop/asset-work/global/ego/climb.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/6.pxi
rename to desktop/asset-work/global/ego/climb.pxa/6.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/7.pxi b/desktop/asset-work/global/ego/climb.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/7.pxi
rename to desktop/asset-work/global/ego/climb.pxa/7.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/8.pxi b/desktop/asset-work/global/ego/climb.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/8.pxi
rename to desktop/asset-work/global/ego/climb.pxa/8.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/9.pxi b/desktop/asset-work/global/ego/climb.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/9.pxi
rename to desktop/asset-work/global/ego/climb.pxa/9.pxi
diff --git a/desktop/asset-work/ego/climb.pxa/CelData.plist b/desktop/asset-work/global/ego/climb.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/climb.pxa/CelData.plist
rename to desktop/asset-work/global/ego/climb.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/crawl.png b/desktop/asset-work/global/ego/crawl.png
similarity index 100%
rename from desktop/asset-work/ego/crawl.png
rename to desktop/asset-work/global/ego/crawl.png
diff --git a/desktop/asset-work/ego/crawl.pxa/0.pxi b/desktop/asset-work/global/ego/crawl.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/0.pxi
rename to desktop/asset-work/global/ego/crawl.pxa/0.pxi
diff --git a/desktop/asset-work/ego/crawl.pxa/1.pxi b/desktop/asset-work/global/ego/crawl.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/1.pxi
rename to desktop/asset-work/global/ego/crawl.pxa/1.pxi
diff --git a/desktop/asset-work/ego/crawl.pxa/2.pxi b/desktop/asset-work/global/ego/crawl.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/2.pxi
rename to desktop/asset-work/global/ego/crawl.pxa/2.pxi
diff --git a/desktop/asset-work/ego/crawl.pxa/3.pxi b/desktop/asset-work/global/ego/crawl.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/3.pxi
rename to desktop/asset-work/global/ego/crawl.pxa/3.pxi
diff --git a/desktop/asset-work/ego/crawl.pxa/4.pxi b/desktop/asset-work/global/ego/crawl.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/4.pxi
rename to desktop/asset-work/global/ego/crawl.pxa/4.pxi
diff --git a/desktop/asset-work/ego/crawl.pxa/5.pxi b/desktop/asset-work/global/ego/crawl.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/5.pxi
rename to desktop/asset-work/global/ego/crawl.pxa/5.pxi
diff --git a/desktop/asset-work/ego/crawl.pxa/6.pxi b/desktop/asset-work/global/ego/crawl.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/6.pxi
rename to desktop/asset-work/global/ego/crawl.pxa/6.pxi
diff --git a/desktop/asset-work/ego/crawl.pxa/CelData.plist b/desktop/asset-work/global/ego/crawl.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/crawl.pxa/CelData.plist
rename to desktop/asset-work/global/ego/crawl.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/crowbar.ogg b/desktop/asset-work/global/ego/crowbar.ogg
similarity index 100%
rename from desktop/asset-work/ego/crowbar.ogg
rename to desktop/asset-work/global/ego/crowbar.ogg
diff --git a/desktop/asset-work/ego/crowbar.png b/desktop/asset-work/global/ego/crowbar.png
similarity index 100%
rename from desktop/asset-work/ego/crowbar.png
rename to desktop/asset-work/global/ego/crowbar.png
diff --git a/desktop/asset-work/ego/crowbar.pxa/0.pxi b/desktop/asset-work/global/ego/crowbar.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/crowbar.pxa/0.pxi
rename to desktop/asset-work/global/ego/crowbar.pxa/0.pxi
diff --git a/desktop/asset-work/ego/crowbar.pxa/1.pxi b/desktop/asset-work/global/ego/crowbar.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/crowbar.pxa/1.pxi
rename to desktop/asset-work/global/ego/crowbar.pxa/1.pxi
diff --git a/desktop/asset-work/ego/crowbar.pxa/2.pxi b/desktop/asset-work/global/ego/crowbar.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/crowbar.pxa/2.pxi
rename to desktop/asset-work/global/ego/crowbar.pxa/2.pxi
diff --git a/desktop/asset-work/ego/crowbar.pxa/3.pxi b/desktop/asset-work/global/ego/crowbar.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/crowbar.pxa/3.pxi
rename to desktop/asset-work/global/ego/crowbar.pxa/3.pxi
diff --git a/desktop/asset-work/ego/crowbar.pxa/CelData.plist b/desktop/asset-work/global/ego/crowbar.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/crowbar.pxa/CelData.plist
rename to desktop/asset-work/global/ego/crowbar.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/dot.png b/desktop/asset-work/global/ego/dot.png
similarity index 100%
rename from desktop/asset-work/ego/dot.png
rename to desktop/asset-work/global/ego/dot.png
diff --git a/desktop/asset-work/ego/drop.ogg b/desktop/asset-work/global/ego/drop.ogg
similarity index 100%
rename from desktop/asset-work/ego/drop.ogg
rename to desktop/asset-work/global/ego/drop.ogg
diff --git a/desktop/asset-work/ego/drop.wav b/desktop/asset-work/global/ego/drop.wav
similarity index 100%
rename from desktop/asset-work/ego/drop.wav
rename to desktop/asset-work/global/ego/drop.wav
diff --git a/desktop/asset-work/ego/fire.png b/desktop/asset-work/global/ego/fire.png
similarity index 100%
rename from desktop/asset-work/ego/fire.png
rename to desktop/asset-work/global/ego/fire.png
diff --git a/desktop/asset-work/ego/fire.pxa/0.pxi b/desktop/asset-work/global/ego/fire.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/0.pxi
rename to desktop/asset-work/global/ego/fire.pxa/0.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/1.pxi b/desktop/asset-work/global/ego/fire.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/1.pxi
rename to desktop/asset-work/global/ego/fire.pxa/1.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/10.pxi b/desktop/asset-work/global/ego/fire.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/10.pxi
rename to desktop/asset-work/global/ego/fire.pxa/10.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/11.pxi b/desktop/asset-work/global/ego/fire.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/11.pxi
rename to desktop/asset-work/global/ego/fire.pxa/11.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/2.pxi b/desktop/asset-work/global/ego/fire.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/2.pxi
rename to desktop/asset-work/global/ego/fire.pxa/2.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/3.pxi b/desktop/asset-work/global/ego/fire.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/3.pxi
rename to desktop/asset-work/global/ego/fire.pxa/3.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/4.pxi b/desktop/asset-work/global/ego/fire.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/4.pxi
rename to desktop/asset-work/global/ego/fire.pxa/4.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/5.pxi b/desktop/asset-work/global/ego/fire.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/5.pxi
rename to desktop/asset-work/global/ego/fire.pxa/5.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/6.pxi b/desktop/asset-work/global/ego/fire.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/6.pxi
rename to desktop/asset-work/global/ego/fire.pxa/6.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/7.pxi b/desktop/asset-work/global/ego/fire.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/7.pxi
rename to desktop/asset-work/global/ego/fire.pxa/7.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/8.pxi b/desktop/asset-work/global/ego/fire.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/8.pxi
rename to desktop/asset-work/global/ego/fire.pxa/8.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/9.pxi b/desktop/asset-work/global/ego/fire.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/9.pxi
rename to desktop/asset-work/global/ego/fire.pxa/9.pxi
diff --git a/desktop/asset-work/ego/fire.pxa/CelData.plist b/desktop/asset-work/global/ego/fire.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/fire.pxa/CelData.plist
rename to desktop/asset-work/global/ego/fire.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/flying.png b/desktop/asset-work/global/ego/flying.png
similarity index 100%
rename from desktop/asset-work/ego/flying.png
rename to desktop/asset-work/global/ego/flying.png
diff --git a/desktop/asset-work/ego/frog.png b/desktop/asset-work/global/ego/frog.png
similarity index 100%
rename from desktop/asset-work/ego/frog.png
rename to desktop/asset-work/global/ego/frog.png
diff --git a/desktop/asset-work/ego/frog.pxa/0.pxi b/desktop/asset-work/global/ego/frog.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/frog.pxa/0.pxi
rename to desktop/asset-work/global/ego/frog.pxa/0.pxi
diff --git a/desktop/asset-work/ego/frog.pxa/1.pxi b/desktop/asset-work/global/ego/frog.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/frog.pxa/1.pxi
rename to desktop/asset-work/global/ego/frog.pxa/1.pxi
diff --git a/desktop/asset-work/ego/frog.pxa/CelData.plist b/desktop/asset-work/global/ego/frog.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/frog.pxa/CelData.plist
rename to desktop/asset-work/global/ego/frog.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/frustrated-talk.png b/desktop/asset-work/global/ego/frustrated-talk.png
similarity index 100%
rename from desktop/asset-work/ego/frustrated-talk.png
rename to desktop/asset-work/global/ego/frustrated-talk.png
diff --git a/desktop/asset-work/ego/frustratedtalk.pxa/0.pxi b/desktop/asset-work/global/ego/frustratedtalk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/frustratedtalk.pxa/0.pxi
rename to desktop/asset-work/global/ego/frustratedtalk.pxa/0.pxi
diff --git a/desktop/asset-work/ego/frustratedtalk.pxa/1.pxi b/desktop/asset-work/global/ego/frustratedtalk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/frustratedtalk.pxa/1.pxi
rename to desktop/asset-work/global/ego/frustratedtalk.pxa/1.pxi
diff --git a/desktop/asset-work/ego/frustratedtalk.pxa/2.pxi b/desktop/asset-work/global/ego/frustratedtalk.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/frustratedtalk.pxa/2.pxi
rename to desktop/asset-work/global/ego/frustratedtalk.pxa/2.pxi
diff --git a/desktop/asset-work/ego/frustratedtalk.pxa/3.pxi b/desktop/asset-work/global/ego/frustratedtalk.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/frustratedtalk.pxa/3.pxi
rename to desktop/asset-work/global/ego/frustratedtalk.pxa/3.pxi
diff --git a/desktop/asset-work/ego/frustratedtalk.pxa/4.pxi b/desktop/asset-work/global/ego/frustratedtalk.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/frustratedtalk.pxa/4.pxi
rename to desktop/asset-work/global/ego/frustratedtalk.pxa/4.pxi
diff --git a/desktop/asset-work/ego/frustratedtalk.pxa/5.pxi b/desktop/asset-work/global/ego/frustratedtalk.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/frustratedtalk.pxa/5.pxi
rename to desktop/asset-work/global/ego/frustratedtalk.pxa/5.pxi
diff --git a/desktop/asset-work/ego/frustratedtalk.pxa/CelData.plist b/desktop/asset-work/global/ego/frustratedtalk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/frustratedtalk.pxa/CelData.plist
rename to desktop/asset-work/global/ego/frustratedtalk.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/georgia.png b/desktop/asset-work/global/ego/georgia.png
similarity index 100%
rename from desktop/asset-work/ego/georgia.png
rename to desktop/asset-work/global/ego/georgia.png
diff --git a/desktop/asset-work/ego/georgia.pxa/0.pxi b/desktop/asset-work/global/ego/georgia.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/georgia.pxa/0.pxi
rename to desktop/asset-work/global/ego/georgia.pxa/0.pxi
diff --git a/desktop/asset-work/ego/georgia.pxa/1.pxi b/desktop/asset-work/global/ego/georgia.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/georgia.pxa/1.pxi
rename to desktop/asset-work/global/ego/georgia.pxa/1.pxi
diff --git a/desktop/asset-work/ego/georgia.pxa/2.pxi b/desktop/asset-work/global/ego/georgia.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/georgia.pxa/2.pxi
rename to desktop/asset-work/global/ego/georgia.pxa/2.pxi
diff --git a/desktop/asset-work/ego/georgia.pxa/CelData.plist b/desktop/asset-work/global/ego/georgia.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/georgia.pxa/CelData.plist
rename to desktop/asset-work/global/ego/georgia.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/get-sick.ogg b/desktop/asset-work/global/ego/get-sick.ogg
similarity index 100%
rename from desktop/asset-work/ego/get-sick.ogg
rename to desktop/asset-work/global/ego/get-sick.ogg
diff --git a/desktop/asset-work/ego/get-sick.png b/desktop/asset-work/global/ego/get-sick.png
similarity index 100%
rename from desktop/asset-work/ego/get-sick.png
rename to desktop/asset-work/global/ego/get-sick.png
diff --git a/desktop/asset-work/ego/get-sick.pxa/0.pxi b/desktop/asset-work/global/ego/get-sick.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/get-sick.pxa/0.pxi
rename to desktop/asset-work/global/ego/get-sick.pxa/0.pxi
diff --git a/desktop/asset-work/ego/get-sick.pxa/1.pxi b/desktop/asset-work/global/ego/get-sick.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/get-sick.pxa/1.pxi
rename to desktop/asset-work/global/ego/get-sick.pxa/1.pxi
diff --git a/desktop/asset-work/ego/get-sick.pxa/2.pxi b/desktop/asset-work/global/ego/get-sick.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/get-sick.pxa/2.pxi
rename to desktop/asset-work/global/ego/get-sick.pxa/2.pxi
diff --git a/desktop/asset-work/ego/get-sick.pxa/3.pxi b/desktop/asset-work/global/ego/get-sick.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/get-sick.pxa/3.pxi
rename to desktop/asset-work/global/ego/get-sick.pxa/3.pxi
diff --git a/desktop/asset-work/ego/get-sick.pxa/4.pxi b/desktop/asset-work/global/ego/get-sick.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/get-sick.pxa/4.pxi
rename to desktop/asset-work/global/ego/get-sick.pxa/4.pxi
diff --git a/desktop/asset-work/ego/get-sick.pxa/5.pxi b/desktop/asset-work/global/ego/get-sick.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/get-sick.pxa/5.pxi
rename to desktop/asset-work/global/ego/get-sick.pxa/5.pxi
diff --git a/desktop/asset-work/ego/get-sick.pxa/CelData.plist b/desktop/asset-work/global/ego/get-sick.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/get-sick.pxa/CelData.plist
rename to desktop/asset-work/global/ego/get-sick.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/get-sick.wav b/desktop/asset-work/global/ego/get-sick.wav
similarity index 100%
rename from desktop/asset-work/ego/get-sick.wav
rename to desktop/asset-work/global/ego/get-sick.wav
diff --git a/desktop/asset-work/ego/glad-jump b/desktop/asset-work/global/ego/glad-jump
similarity index 100%
rename from desktop/asset-work/ego/glad-jump
rename to desktop/asset-work/global/ego/glad-jump
diff --git a/desktop/asset-work/ego/glad.ogg b/desktop/asset-work/global/ego/glad.ogg
similarity index 100%
rename from desktop/asset-work/ego/glad.ogg
rename to desktop/asset-work/global/ego/glad.ogg
diff --git a/desktop/asset-work/ego/glad.png b/desktop/asset-work/global/ego/glad.png
similarity index 100%
rename from desktop/asset-work/ego/glad.png
rename to desktop/asset-work/global/ego/glad.png
diff --git a/desktop/asset-work/ego/glad.pxa/0.pxi b/desktop/asset-work/global/ego/glad.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/0.pxi
rename to desktop/asset-work/global/ego/glad.pxa/0.pxi
diff --git a/desktop/asset-work/ego/glad.pxa/1.pxi b/desktop/asset-work/global/ego/glad.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/1.pxi
rename to desktop/asset-work/global/ego/glad.pxa/1.pxi
diff --git a/desktop/asset-work/ego/glad.pxa/2.pxi b/desktop/asset-work/global/ego/glad.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/2.pxi
rename to desktop/asset-work/global/ego/glad.pxa/2.pxi
diff --git a/desktop/asset-work/ego/glad.pxa/3.pxi b/desktop/asset-work/global/ego/glad.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/3.pxi
rename to desktop/asset-work/global/ego/glad.pxa/3.pxi
diff --git a/desktop/asset-work/ego/glad.pxa/4.pxi b/desktop/asset-work/global/ego/glad.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/4.pxi
rename to desktop/asset-work/global/ego/glad.pxa/4.pxi
diff --git a/desktop/asset-work/ego/glad.pxa/5.pxi b/desktop/asset-work/global/ego/glad.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/5.pxi
rename to desktop/asset-work/global/ego/glad.pxa/5.pxi
diff --git a/desktop/asset-work/ego/glad.pxa/6.pxi b/desktop/asset-work/global/ego/glad.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/6.pxi
rename to desktop/asset-work/global/ego/glad.pxa/6.pxi
diff --git a/desktop/asset-work/ego/glad.pxa/CelData.plist b/desktop/asset-work/global/ego/glad.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/glad.pxa/CelData.plist
rename to desktop/asset-work/global/ego/glad.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/glad.wav b/desktop/asset-work/global/ego/glad.wav
similarity index 100%
rename from desktop/asset-work/ego/glad.wav
rename to desktop/asset-work/global/ego/glad.wav
diff --git a/desktop/asset-work/ego/grow-talk.png b/desktop/asset-work/global/ego/grow-talk.png
similarity index 100%
rename from desktop/asset-work/ego/grow-talk.png
rename to desktop/asset-work/global/ego/grow-talk.png
diff --git a/desktop/asset-work/ego/grow-talk.pxa/0.pxi b/desktop/asset-work/global/ego/grow-talk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/grow-talk.pxa/0.pxi
rename to desktop/asset-work/global/ego/grow-talk.pxa/0.pxi
diff --git a/desktop/asset-work/ego/grow-talk.pxa/1.pxi b/desktop/asset-work/global/ego/grow-talk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/grow-talk.pxa/1.pxi
rename to desktop/asset-work/global/ego/grow-talk.pxa/1.pxi
diff --git a/desktop/asset-work/ego/grow-talk.pxa/CelData.plist b/desktop/asset-work/global/ego/grow-talk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/grow-talk.pxa/CelData.plist
rename to desktop/asset-work/global/ego/grow-talk.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/grow.png b/desktop/asset-work/global/ego/grow.png
similarity index 100%
rename from desktop/asset-work/ego/grow.png
rename to desktop/asset-work/global/ego/grow.png
diff --git a/desktop/asset-work/ego/grow.pxa/0.pxi b/desktop/asset-work/global/ego/grow.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/grow.pxa/0.pxi
rename to desktop/asset-work/global/ego/grow.pxa/0.pxi
diff --git a/desktop/asset-work/ego/grow.pxa/1.pxi b/desktop/asset-work/global/ego/grow.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/grow.pxa/1.pxi
rename to desktop/asset-work/global/ego/grow.pxa/1.pxi
diff --git a/desktop/asset-work/ego/grow.pxa/2.pxi b/desktop/asset-work/global/ego/grow.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/grow.pxa/2.pxi
rename to desktop/asset-work/global/ego/grow.pxa/2.pxi
diff --git a/desktop/asset-work/ego/grow.pxa/3.pxi b/desktop/asset-work/global/ego/grow.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/grow.pxa/3.pxi
rename to desktop/asset-work/global/ego/grow.pxa/3.pxi
diff --git a/desktop/asset-work/ego/grow.pxa/4.pxi b/desktop/asset-work/global/ego/grow.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/grow.pxa/4.pxi
rename to desktop/asset-work/global/ego/grow.pxa/4.pxi
diff --git a/desktop/asset-work/ego/jump-straight.pxa/CelData.plist b/desktop/asset-work/global/ego/grow.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/jump-straight.pxa/CelData.plist
rename to desktop/asset-work/global/ego/grow.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/hand-hold.png b/desktop/asset-work/global/ego/hand-hold.png
similarity index 100%
rename from desktop/asset-work/ego/hand-hold.png
rename to desktop/asset-work/global/ego/hand-hold.png
diff --git a/desktop/asset-work/ego/hand-hold.pxa/0.pxi b/desktop/asset-work/global/ego/hand-hold.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/hand-hold.pxa/0.pxi
rename to desktop/asset-work/global/ego/hand-hold.pxa/0.pxi
diff --git a/desktop/asset-work/ego/hand-hold.pxa/1.pxi b/desktop/asset-work/global/ego/hand-hold.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/hand-hold.pxa/1.pxi
rename to desktop/asset-work/global/ego/hand-hold.pxa/1.pxi
diff --git a/desktop/asset-work/ego/hand-hold.pxa/CelData.plist b/desktop/asset-work/global/ego/hand-hold.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/hand-hold.pxa/CelData.plist
rename to desktop/asset-work/global/ego/hand-hold.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/hold-hand.png b/desktop/asset-work/global/ego/hold-hand.png
similarity index 100%
rename from desktop/asset-work/ego/hold-hand.png
rename to desktop/asset-work/global/ego/hold-hand.png
diff --git a/desktop/asset-work/ego/hold-up-to-window.png b/desktop/asset-work/global/ego/hold-up-to-window.png
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.png
rename to desktop/asset-work/global/ego/hold-up-to-window.png
diff --git a/desktop/asset-work/ego/hold-up-to-window.pxa/0.pxi b/desktop/asset-work/global/ego/hold-up-to-window.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.pxa/0.pxi
rename to desktop/asset-work/global/ego/hold-up-to-window.pxa/0.pxi
diff --git a/desktop/asset-work/ego/hold-up-to-window.pxa/1.pxi b/desktop/asset-work/global/ego/hold-up-to-window.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.pxa/1.pxi
rename to desktop/asset-work/global/ego/hold-up-to-window.pxa/1.pxi
diff --git a/desktop/asset-work/ego/hold-up-to-window.pxa/2.pxi b/desktop/asset-work/global/ego/hold-up-to-window.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.pxa/2.pxi
rename to desktop/asset-work/global/ego/hold-up-to-window.pxa/2.pxi
diff --git a/desktop/asset-work/ego/hold-up-to-window.pxa/3.pxi b/desktop/asset-work/global/ego/hold-up-to-window.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.pxa/3.pxi
rename to desktop/asset-work/global/ego/hold-up-to-window.pxa/3.pxi
diff --git a/desktop/asset-work/ego/hold-up-to-window.pxa/4.pxi b/desktop/asset-work/global/ego/hold-up-to-window.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.pxa/4.pxi
rename to desktop/asset-work/global/ego/hold-up-to-window.pxa/4.pxi
diff --git a/desktop/asset-work/ego/hold-up-to-window.pxa/5.pxi b/desktop/asset-work/global/ego/hold-up-to-window.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.pxa/5.pxi
rename to desktop/asset-work/global/ego/hold-up-to-window.pxa/5.pxi
diff --git a/desktop/asset-work/ego/hold-up-to-window.pxa/CelData.plist b/desktop/asset-work/global/ego/hold-up-to-window.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/hold-up-to-window.pxa/CelData.plist
rename to desktop/asset-work/global/ego/hold-up-to-window.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/ida.png b/desktop/asset-work/global/ego/ida.png
similarity index 100%
rename from desktop/asset-work/ego/ida.png
rename to desktop/asset-work/global/ego/ida.png
diff --git a/desktop/asset-work/ego/idea.ogg b/desktop/asset-work/global/ego/idea.ogg
similarity index 100%
rename from desktop/asset-work/ego/idea.ogg
rename to desktop/asset-work/global/ego/idea.ogg
diff --git a/desktop/asset-work/ego/idea.png b/desktop/asset-work/global/ego/idea.png
similarity index 100%
rename from desktop/asset-work/ego/idea.png
rename to desktop/asset-work/global/ego/idea.png
diff --git a/desktop/asset-work/ego/idea.pxa/0.pxi b/desktop/asset-work/global/ego/idea.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/idea.pxa/0.pxi
rename to desktop/asset-work/global/ego/idea.pxa/0.pxi
diff --git a/desktop/asset-work/ego/idea.pxa/1.pxi b/desktop/asset-work/global/ego/idea.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/idea.pxa/1.pxi
rename to desktop/asset-work/global/ego/idea.pxa/1.pxi
diff --git a/desktop/asset-work/ego/idea.pxa/2.pxi b/desktop/asset-work/global/ego/idea.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/idea.pxa/2.pxi
rename to desktop/asset-work/global/ego/idea.pxa/2.pxi
diff --git a/desktop/asset-work/ego/idea.pxa/CelData.plist b/desktop/asset-work/global/ego/idea.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/idea.pxa/CelData.plist
rename to desktop/asset-work/global/ego/idea.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/idea.wav b/desktop/asset-work/global/ego/idea.wav
similarity index 100%
rename from desktop/asset-work/ego/idea.wav
rename to desktop/asset-work/global/ego/idea.wav
diff --git a/desktop/asset-work/ego/in-love.png b/desktop/asset-work/global/ego/in-love.png
similarity index 100%
rename from desktop/asset-work/ego/in-love.png
rename to desktop/asset-work/global/ego/in-love.png
diff --git a/desktop/asset-work/ego/in-love2.pxa/0.pxi b/desktop/asset-work/global/ego/in-love2.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/0.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/0.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/1.pxi b/desktop/asset-work/global/ego/in-love2.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/1.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/1.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/10.pxi b/desktop/asset-work/global/ego/in-love2.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/10.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/10.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/11.pxi b/desktop/asset-work/global/ego/in-love2.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/11.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/11.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/12.pxi b/desktop/asset-work/global/ego/in-love2.pxa/12.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/12.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/12.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/13.pxi b/desktop/asset-work/global/ego/in-love2.pxa/13.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/13.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/13.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/14.pxi b/desktop/asset-work/global/ego/in-love2.pxa/14.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/14.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/14.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/15.pxi b/desktop/asset-work/global/ego/in-love2.pxa/15.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/15.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/15.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/16.pxi b/desktop/asset-work/global/ego/in-love2.pxa/16.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/16.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/16.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/17.pxi b/desktop/asset-work/global/ego/in-love2.pxa/17.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/17.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/17.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/18.pxi b/desktop/asset-work/global/ego/in-love2.pxa/18.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/18.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/18.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/2.pxi b/desktop/asset-work/global/ego/in-love2.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/2.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/2.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/3.pxi b/desktop/asset-work/global/ego/in-love2.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/3.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/3.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/4.pxi b/desktop/asset-work/global/ego/in-love2.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/4.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/4.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/5.pxi b/desktop/asset-work/global/ego/in-love2.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/5.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/5.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/6.pxi b/desktop/asset-work/global/ego/in-love2.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/6.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/6.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/7.pxi b/desktop/asset-work/global/ego/in-love2.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/7.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/7.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/8.pxi b/desktop/asset-work/global/ego/in-love2.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/8.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/8.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/9.pxi b/desktop/asset-work/global/ego/in-love2.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/9.pxi
rename to desktop/asset-work/global/ego/in-love2.pxa/9.pxi
diff --git a/desktop/asset-work/ego/in-love2.pxa/CelData.plist b/desktop/asset-work/global/ego/in-love2.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/in-love2.pxa/CelData.plist
rename to desktop/asset-work/global/ego/in-love2.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/inside-step-1.wav b/desktop/asset-work/global/ego/inside-step-1.wav
similarity index 100%
rename from desktop/asset-work/ego/inside-step-1.wav
rename to desktop/asset-work/global/ego/inside-step-1.wav
diff --git a/desktop/asset-work/ego/inside-step-2.wav b/desktop/asset-work/global/ego/inside-step-2.wav
similarity index 100%
rename from desktop/asset-work/ego/inside-step-2.wav
rename to desktop/asset-work/global/ego/inside-step-2.wav
diff --git a/desktop/asset-work/ego/inside-step-3.wav b/desktop/asset-work/global/ego/inside-step-3.wav
similarity index 100%
rename from desktop/asset-work/ego/inside-step-3.wav
rename to desktop/asset-work/global/ego/inside-step-3.wav
diff --git a/desktop/asset-work/ego/inside-step-4.wav b/desktop/asset-work/global/ego/inside-step-4.wav
similarity index 100%
rename from desktop/asset-work/ego/inside-step-4.wav
rename to desktop/asset-work/global/ego/inside-step-4.wav
diff --git a/desktop/asset-work/ego/jet b/desktop/asset-work/global/ego/jet
similarity index 100%
rename from desktop/asset-work/ego/jet
rename to desktop/asset-work/global/ego/jet
diff --git a/desktop/asset-work/ego/jump-straight.png b/desktop/asset-work/global/ego/jump-straight.png
similarity index 100%
rename from desktop/asset-work/ego/jump-straight.png
rename to desktop/asset-work/global/ego/jump-straight.png
diff --git a/desktop/asset-work/ego/jump-straight.pxa/0.pxi b/desktop/asset-work/global/ego/jump-straight.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/jump-straight.pxa/0.pxi
rename to desktop/asset-work/global/ego/jump-straight.pxa/0.pxi
diff --git a/desktop/asset-work/ego/jump-straight.pxa/1.pxi b/desktop/asset-work/global/ego/jump-straight.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/jump-straight.pxa/1.pxi
rename to desktop/asset-work/global/ego/jump-straight.pxa/1.pxi
diff --git a/desktop/asset-work/ego/jump-straight.pxa/2.pxi b/desktop/asset-work/global/ego/jump-straight.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/jump-straight.pxa/2.pxi
rename to desktop/asset-work/global/ego/jump-straight.pxa/2.pxi
diff --git a/desktop/asset-work/ego/jump-straight.pxa/3.pxi b/desktop/asset-work/global/ego/jump-straight.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/jump-straight.pxa/3.pxi
rename to desktop/asset-work/global/ego/jump-straight.pxa/3.pxi
diff --git a/desktop/asset-work/ego/jump-straight.pxa/4.pxi b/desktop/asset-work/global/ego/jump-straight.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/jump-straight.pxa/4.pxi
rename to desktop/asset-work/global/ego/jump-straight.pxa/4.pxi
diff --git a/desktop/asset-work/ego/spear.pxa/CelData.plist b/desktop/asset-work/global/ego/jump-straight.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/spear.pxa/CelData.plist
rename to desktop/asset-work/global/ego/jump-straight.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/love.pxa/0.pxi b/desktop/asset-work/global/ego/love.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/0.pxi
rename to desktop/asset-work/global/ego/love.pxa/0.pxi
diff --git a/desktop/asset-work/ego/love.pxa/1.pxi b/desktop/asset-work/global/ego/love.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/1.pxi
rename to desktop/asset-work/global/ego/love.pxa/1.pxi
diff --git a/desktop/asset-work/ego/love.pxa/10.pxi b/desktop/asset-work/global/ego/love.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/10.pxi
rename to desktop/asset-work/global/ego/love.pxa/10.pxi
diff --git a/desktop/asset-work/ego/love.pxa/11.pxi b/desktop/asset-work/global/ego/love.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/11.pxi
rename to desktop/asset-work/global/ego/love.pxa/11.pxi
diff --git a/desktop/asset-work/ego/love.pxa/12.pxi b/desktop/asset-work/global/ego/love.pxa/12.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/12.pxi
rename to desktop/asset-work/global/ego/love.pxa/12.pxi
diff --git a/desktop/asset-work/ego/love.pxa/13.pxi b/desktop/asset-work/global/ego/love.pxa/13.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/13.pxi
rename to desktop/asset-work/global/ego/love.pxa/13.pxi
diff --git a/desktop/asset-work/ego/love.pxa/14.pxi b/desktop/asset-work/global/ego/love.pxa/14.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/14.pxi
rename to desktop/asset-work/global/ego/love.pxa/14.pxi
diff --git a/desktop/asset-work/ego/love.pxa/15.pxi b/desktop/asset-work/global/ego/love.pxa/15.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/15.pxi
rename to desktop/asset-work/global/ego/love.pxa/15.pxi
diff --git a/desktop/asset-work/ego/love.pxa/16.pxi b/desktop/asset-work/global/ego/love.pxa/16.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/16.pxi
rename to desktop/asset-work/global/ego/love.pxa/16.pxi
diff --git a/desktop/asset-work/ego/love.pxa/17.pxi b/desktop/asset-work/global/ego/love.pxa/17.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/17.pxi
rename to desktop/asset-work/global/ego/love.pxa/17.pxi
diff --git a/desktop/asset-work/ego/love.pxa/18.pxi b/desktop/asset-work/global/ego/love.pxa/18.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/18.pxi
rename to desktop/asset-work/global/ego/love.pxa/18.pxi
diff --git a/desktop/asset-work/ego/love.pxa/19.pxi b/desktop/asset-work/global/ego/love.pxa/19.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/19.pxi
rename to desktop/asset-work/global/ego/love.pxa/19.pxi
diff --git a/desktop/asset-work/ego/love.pxa/2.pxi b/desktop/asset-work/global/ego/love.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/2.pxi
rename to desktop/asset-work/global/ego/love.pxa/2.pxi
diff --git a/desktop/asset-work/ego/love.pxa/20.pxi b/desktop/asset-work/global/ego/love.pxa/20.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/20.pxi
rename to desktop/asset-work/global/ego/love.pxa/20.pxi
diff --git a/desktop/asset-work/ego/love.pxa/21.pxi b/desktop/asset-work/global/ego/love.pxa/21.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/21.pxi
rename to desktop/asset-work/global/ego/love.pxa/21.pxi
diff --git a/desktop/asset-work/ego/love.pxa/22.pxi b/desktop/asset-work/global/ego/love.pxa/22.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/22.pxi
rename to desktop/asset-work/global/ego/love.pxa/22.pxi
diff --git a/desktop/asset-work/ego/love.pxa/23.pxi b/desktop/asset-work/global/ego/love.pxa/23.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/23.pxi
rename to desktop/asset-work/global/ego/love.pxa/23.pxi
diff --git a/desktop/asset-work/ego/love.pxa/24.pxi b/desktop/asset-work/global/ego/love.pxa/24.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/24.pxi
rename to desktop/asset-work/global/ego/love.pxa/24.pxi
diff --git a/desktop/asset-work/ego/love.pxa/25.pxi b/desktop/asset-work/global/ego/love.pxa/25.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/25.pxi
rename to desktop/asset-work/global/ego/love.pxa/25.pxi
diff --git a/desktop/asset-work/ego/love.pxa/3.pxi b/desktop/asset-work/global/ego/love.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/3.pxi
rename to desktop/asset-work/global/ego/love.pxa/3.pxi
diff --git a/desktop/asset-work/ego/love.pxa/4.pxi b/desktop/asset-work/global/ego/love.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/4.pxi
rename to desktop/asset-work/global/ego/love.pxa/4.pxi
diff --git a/desktop/asset-work/ego/love.pxa/5.pxi b/desktop/asset-work/global/ego/love.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/5.pxi
rename to desktop/asset-work/global/ego/love.pxa/5.pxi
diff --git a/desktop/asset-work/ego/love.pxa/6.pxi b/desktop/asset-work/global/ego/love.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/6.pxi
rename to desktop/asset-work/global/ego/love.pxa/6.pxi
diff --git a/desktop/asset-work/ego/love.pxa/7.pxi b/desktop/asset-work/global/ego/love.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/7.pxi
rename to desktop/asset-work/global/ego/love.pxa/7.pxi
diff --git a/desktop/asset-work/ego/love.pxa/8.pxi b/desktop/asset-work/global/ego/love.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/8.pxi
rename to desktop/asset-work/global/ego/love.pxa/8.pxi
diff --git a/desktop/asset-work/ego/love.pxa/9.pxi b/desktop/asset-work/global/ego/love.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/9.pxi
rename to desktop/asset-work/global/ego/love.pxa/9.pxi
diff --git a/desktop/asset-work/ego/love.pxa/CelData.plist b/desktop/asset-work/global/ego/love.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/love.pxa/CelData.plist
rename to desktop/asset-work/global/ego/love.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/love-1.png b/desktop/asset-work/global/ego/love_0.png
similarity index 100%
rename from desktop/asset-work/ego/love-1.png
rename to desktop/asset-work/global/ego/love_0.png
diff --git a/desktop/asset-work/ego/love-2.png b/desktop/asset-work/global/ego/love_1.png
similarity index 100%
rename from desktop/asset-work/ego/love-2.png
rename to desktop/asset-work/global/ego/love_1.png
diff --git a/desktop/asset-work/ego/love-11.png b/desktop/asset-work/global/ego/love_10.png
similarity index 100%
rename from desktop/asset-work/ego/love-11.png
rename to desktop/asset-work/global/ego/love_10.png
diff --git a/desktop/asset-work/ego/love-12.png b/desktop/asset-work/global/ego/love_11.png
similarity index 100%
rename from desktop/asset-work/ego/love-12.png
rename to desktop/asset-work/global/ego/love_11.png
diff --git a/desktop/asset-work/ego/love-13.png b/desktop/asset-work/global/ego/love_12.png
similarity index 100%
rename from desktop/asset-work/ego/love-13.png
rename to desktop/asset-work/global/ego/love_12.png
diff --git a/desktop/asset-work/ego/love-14.png b/desktop/asset-work/global/ego/love_13.png
similarity index 100%
rename from desktop/asset-work/ego/love-14.png
rename to desktop/asset-work/global/ego/love_13.png
diff --git a/desktop/asset-work/ego/love-15.png b/desktop/asset-work/global/ego/love_14.png
similarity index 100%
rename from desktop/asset-work/ego/love-15.png
rename to desktop/asset-work/global/ego/love_14.png
diff --git a/desktop/asset-work/ego/love-16.png b/desktop/asset-work/global/ego/love_15.png
similarity index 100%
rename from desktop/asset-work/ego/love-16.png
rename to desktop/asset-work/global/ego/love_15.png
diff --git a/desktop/asset-work/ego/love-17.png b/desktop/asset-work/global/ego/love_16.png
similarity index 100%
rename from desktop/asset-work/ego/love-17.png
rename to desktop/asset-work/global/ego/love_16.png
diff --git a/desktop/asset-work/ego/love-18.png b/desktop/asset-work/global/ego/love_17.png
similarity index 100%
rename from desktop/asset-work/ego/love-18.png
rename to desktop/asset-work/global/ego/love_17.png
diff --git a/desktop/asset-work/ego/love-19.png b/desktop/asset-work/global/ego/love_18.png
similarity index 100%
rename from desktop/asset-work/ego/love-19.png
rename to desktop/asset-work/global/ego/love_18.png
diff --git a/desktop/asset-work/ego/love-20.png b/desktop/asset-work/global/ego/love_19.png
similarity index 100%
rename from desktop/asset-work/ego/love-20.png
rename to desktop/asset-work/global/ego/love_19.png
diff --git a/desktop/asset-work/ego/love-3.png b/desktop/asset-work/global/ego/love_2.png
similarity index 100%
rename from desktop/asset-work/ego/love-3.png
rename to desktop/asset-work/global/ego/love_2.png
diff --git a/desktop/asset-work/ego/love-21.png b/desktop/asset-work/global/ego/love_20.png
similarity index 100%
rename from desktop/asset-work/ego/love-21.png
rename to desktop/asset-work/global/ego/love_20.png
diff --git a/desktop/asset-work/ego/love-22.png b/desktop/asset-work/global/ego/love_21.png
similarity index 100%
rename from desktop/asset-work/ego/love-22.png
rename to desktop/asset-work/global/ego/love_21.png
diff --git a/desktop/asset-work/ego/love-23.png b/desktop/asset-work/global/ego/love_22.png
similarity index 100%
rename from desktop/asset-work/ego/love-23.png
rename to desktop/asset-work/global/ego/love_22.png
diff --git a/desktop/asset-work/ego/love-24.png b/desktop/asset-work/global/ego/love_23.png
similarity index 100%
rename from desktop/asset-work/ego/love-24.png
rename to desktop/asset-work/global/ego/love_23.png
diff --git a/desktop/asset-work/ego/love-25.png b/desktop/asset-work/global/ego/love_24.png
similarity index 100%
rename from desktop/asset-work/ego/love-25.png
rename to desktop/asset-work/global/ego/love_24.png
diff --git a/desktop/asset-work/ego/love-26.png b/desktop/asset-work/global/ego/love_25.png
similarity index 100%
rename from desktop/asset-work/ego/love-26.png
rename to desktop/asset-work/global/ego/love_25.png
diff --git a/desktop/asset-work/ego/love-4.png b/desktop/asset-work/global/ego/love_3.png
similarity index 100%
rename from desktop/asset-work/ego/love-4.png
rename to desktop/asset-work/global/ego/love_3.png
diff --git a/desktop/asset-work/ego/love-5.png b/desktop/asset-work/global/ego/love_4.png
similarity index 100%
rename from desktop/asset-work/ego/love-5.png
rename to desktop/asset-work/global/ego/love_4.png
diff --git a/desktop/asset-work/ego/love-6.png b/desktop/asset-work/global/ego/love_5.png
similarity index 100%
rename from desktop/asset-work/ego/love-6.png
rename to desktop/asset-work/global/ego/love_5.png
diff --git a/desktop/asset-work/ego/love-7.png b/desktop/asset-work/global/ego/love_6.png
similarity index 100%
rename from desktop/asset-work/ego/love-7.png
rename to desktop/asset-work/global/ego/love_6.png
diff --git a/desktop/asset-work/ego/love-8.png b/desktop/asset-work/global/ego/love_7.png
similarity index 100%
rename from desktop/asset-work/ego/love-8.png
rename to desktop/asset-work/global/ego/love_7.png
diff --git a/desktop/asset-work/ego/love-9.png b/desktop/asset-work/global/ego/love_8.png
similarity index 100%
rename from desktop/asset-work/ego/love-9.png
rename to desktop/asset-work/global/ego/love_8.png
diff --git a/desktop/asset-work/ego/love-10.png b/desktop/asset-work/global/ego/love_9.png
similarity index 100%
rename from desktop/asset-work/ego/love-10.png
rename to desktop/asset-work/global/ego/love_9.png
diff --git a/desktop/asset-work/ego/pant.png b/desktop/asset-work/global/ego/pant.png
similarity index 100%
rename from desktop/asset-work/ego/pant.png
rename to desktop/asset-work/global/ego/pant.png
diff --git a/desktop/asset-work/ego/pant.pxa/0.pxi b/desktop/asset-work/global/ego/pant.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/pant.pxa/0.pxi
rename to desktop/asset-work/global/ego/pant.pxa/0.pxi
diff --git a/desktop/asset-work/ego/pant.pxa/1.pxi b/desktop/asset-work/global/ego/pant.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/pant.pxa/1.pxi
rename to desktop/asset-work/global/ego/pant.pxa/1.pxi
diff --git a/desktop/asset-work/ego/pant.pxa/CelData.plist b/desktop/asset-work/global/ego/pant.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/pant.pxa/CelData.plist
rename to desktop/asset-work/global/ego/pant.pxa/CelData.plist
diff --git a/desktop/asset-work/player.png b/desktop/asset-work/global/ego/player.png
similarity index 100%
rename from desktop/asset-work/player.png
rename to desktop/asset-work/global/ego/player.png
diff --git a/desktop/asset-work/ego/poke.png b/desktop/asset-work/global/ego/poke.png
similarity index 100%
rename from desktop/asset-work/ego/poke.png
rename to desktop/asset-work/global/ego/poke.png
diff --git a/desktop/asset-work/ego/poke.pxa/0.pxi b/desktop/asset-work/global/ego/poke.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/poke.pxa/0.pxi
rename to desktop/asset-work/global/ego/poke.pxa/0.pxi
diff --git a/desktop/asset-work/ego/poke.pxa/1.pxi b/desktop/asset-work/global/ego/poke.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/poke.pxa/1.pxi
rename to desktop/asset-work/global/ego/poke.pxa/1.pxi
diff --git a/desktop/asset-work/ego/poke.pxa/2.pxi b/desktop/asset-work/global/ego/poke.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/poke.pxa/2.pxi
rename to desktop/asset-work/global/ego/poke.pxa/2.pxi
diff --git a/desktop/asset-work/ego/poke.pxa/3.pxi b/desktop/asset-work/global/ego/poke.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/poke.pxa/3.pxi
rename to desktop/asset-work/global/ego/poke.pxa/3.pxi
diff --git a/desktop/asset-work/ego/poke.pxa/CelData.plist b/desktop/asset-work/global/ego/poke.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/poke.pxa/CelData.plist
rename to desktop/asset-work/global/ego/poke.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/potion.ogg b/desktop/asset-work/global/ego/potion.ogg
similarity index 100%
rename from desktop/asset-work/ego/potion.ogg
rename to desktop/asset-work/global/ego/potion.ogg
diff --git a/desktop/asset-work/ego/potion.wav b/desktop/asset-work/global/ego/potion.wav
similarity index 100%
rename from desktop/asset-work/ego/potion.wav
rename to desktop/asset-work/global/ego/potion.wav
diff --git a/desktop/asset-work/ego/pull-sword.psd b/desktop/asset-work/global/ego/pull-sword.psd
similarity index 100%
rename from desktop/asset-work/ego/pull-sword.psd
rename to desktop/asset-work/global/ego/pull-sword.psd
diff --git a/desktop/asset-work/ego/reach.png b/desktop/asset-work/global/ego/reach.png
similarity index 100%
rename from desktop/asset-work/ego/reach.png
rename to desktop/asset-work/global/ego/reach.png
diff --git a/desktop/asset-work/ego/reach.pxa/0.pxi b/desktop/asset-work/global/ego/reach.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/reach.pxa/0.pxi
rename to desktop/asset-work/global/ego/reach.pxa/0.pxi
diff --git a/desktop/asset-work/ego/reach.pxa/1.pxi b/desktop/asset-work/global/ego/reach.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/reach.pxa/1.pxi
rename to desktop/asset-work/global/ego/reach.pxa/1.pxi
diff --git a/desktop/asset-work/ego/reach.pxa/2.pxi b/desktop/asset-work/global/ego/reach.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/reach.pxa/2.pxi
rename to desktop/asset-work/global/ego/reach.pxa/2.pxi
diff --git a/desktop/asset-work/ego/reach.pxa/3.pxi b/desktop/asset-work/global/ego/reach.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/reach.pxa/3.pxi
rename to desktop/asset-work/global/ego/reach.pxa/3.pxi
diff --git a/desktop/asset-work/ego/reach.pxa/CelData.plist b/desktop/asset-work/global/ego/reach.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/reach.pxa/CelData.plist
rename to desktop/asset-work/global/ego/reach.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/scared-step-old1.wav b/desktop/asset-work/global/ego/scared-step-old1.wav
similarity index 100%
rename from desktop/asset-work/ego/scared-step-old1.wav
rename to desktop/asset-work/global/ego/scared-step-old1.wav
diff --git a/desktop/asset-work/ego/scared-step.ogg b/desktop/asset-work/global/ego/scared-step.ogg
similarity index 100%
rename from desktop/asset-work/ego/scared-step.ogg
rename to desktop/asset-work/global/ego/scared-step.ogg
diff --git a/desktop/asset-work/ego/scared-step.wav b/desktop/asset-work/global/ego/scared-step.wav
similarity index 100%
rename from desktop/asset-work/ego/scared-step.wav
rename to desktop/asset-work/global/ego/scared-step.wav
diff --git a/desktop/asset-work/ego/scared-walk.png b/desktop/asset-work/global/ego/scared-walk.png
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.png
rename to desktop/asset-work/global/ego/scared-walk.png
diff --git a/desktop/asset-work/ego/scared-walk.pxa/0.pxi b/desktop/asset-work/global/ego/scared-walk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.pxa/0.pxi
rename to desktop/asset-work/global/ego/scared-walk.pxa/0.pxi
diff --git a/desktop/asset-work/ego/scared-walk.pxa/1.pxi b/desktop/asset-work/global/ego/scared-walk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.pxa/1.pxi
rename to desktop/asset-work/global/ego/scared-walk.pxa/1.pxi
diff --git a/desktop/asset-work/ego/scared-walk.pxa/2.pxi b/desktop/asset-work/global/ego/scared-walk.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.pxa/2.pxi
rename to desktop/asset-work/global/ego/scared-walk.pxa/2.pxi
diff --git a/desktop/asset-work/ego/scared-walk.pxa/3.pxi b/desktop/asset-work/global/ego/scared-walk.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.pxa/3.pxi
rename to desktop/asset-work/global/ego/scared-walk.pxa/3.pxi
diff --git a/desktop/asset-work/ego/scared-walk.pxa/4.pxi b/desktop/asset-work/global/ego/scared-walk.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.pxa/4.pxi
rename to desktop/asset-work/global/ego/scared-walk.pxa/4.pxi
diff --git a/desktop/asset-work/ego/scared-walk.pxa/5.pxi b/desktop/asset-work/global/ego/scared-walk.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.pxa/5.pxi
rename to desktop/asset-work/global/ego/scared-walk.pxa/5.pxi
diff --git a/desktop/asset-work/ego/scared-walk.pxa/CelData.plist b/desktop/asset-work/global/ego/scared-walk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/scared-walk.pxa/CelData.plist
rename to desktop/asset-work/global/ego/scared-walk.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/scared.png b/desktop/asset-work/global/ego/scared.png
similarity index 100%
rename from desktop/asset-work/ego/scared.png
rename to desktop/asset-work/global/ego/scared.png
diff --git a/desktop/asset-work/ego/scared.pxa/0.pxi b/desktop/asset-work/global/ego/scared.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared.pxa/0.pxi
rename to desktop/asset-work/global/ego/scared.pxa/0.pxi
diff --git a/desktop/asset-work/ego/scared.pxa/1.pxi b/desktop/asset-work/global/ego/scared.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared.pxa/1.pxi
rename to desktop/asset-work/global/ego/scared.pxa/1.pxi
diff --git a/desktop/asset-work/ego/scared.pxa/2.pxi b/desktop/asset-work/global/ego/scared.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared.pxa/2.pxi
rename to desktop/asset-work/global/ego/scared.pxa/2.pxi
diff --git a/desktop/asset-work/ego/scared.pxa/3.pxi b/desktop/asset-work/global/ego/scared.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/scared.pxa/3.pxi
rename to desktop/asset-work/global/ego/scared.pxa/3.pxi
diff --git a/desktop/asset-work/ego/scared.pxa/CelData.plist b/desktop/asset-work/global/ego/scared.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/scared.pxa/CelData.plist
rename to desktop/asset-work/global/ego/scared.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/scoot.png b/desktop/asset-work/global/ego/scoot.png
similarity index 100%
rename from desktop/asset-work/ego/scoot.png
rename to desktop/asset-work/global/ego/scoot.png
diff --git a/desktop/asset-work/ego/scratch.ogg b/desktop/asset-work/global/ego/scratch.ogg
similarity index 100%
rename from desktop/asset-work/ego/scratch.ogg
rename to desktop/asset-work/global/ego/scratch.ogg
diff --git a/desktop/asset-work/ego/scratch.wav b/desktop/asset-work/global/ego/scratch.wav
similarity index 100%
rename from desktop/asset-work/ego/scratch.wav
rename to desktop/asset-work/global/ego/scratch.wav
diff --git a/desktop/asset-work/ego/scratch_1.wav b/desktop/asset-work/global/ego/scratch_1.wav
similarity index 100%
rename from desktop/asset-work/ego/scratch_1.wav
rename to desktop/asset-work/global/ego/scratch_1.wav
diff --git a/desktop/asset-work/ego/shock.png b/desktop/asset-work/global/ego/shock.png
similarity index 100%
rename from desktop/asset-work/ego/shock.png
rename to desktop/asset-work/global/ego/shock.png
diff --git a/desktop/asset-work/ego/shock.pxa/0.pxi b/desktop/asset-work/global/ego/shock.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/0.pxi
rename to desktop/asset-work/global/ego/shock.pxa/0.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/1.pxi b/desktop/asset-work/global/ego/shock.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/1.pxi
rename to desktop/asset-work/global/ego/shock.pxa/1.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/2.pxi b/desktop/asset-work/global/ego/shock.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/2.pxi
rename to desktop/asset-work/global/ego/shock.pxa/2.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/3.pxi b/desktop/asset-work/global/ego/shock.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/3.pxi
rename to desktop/asset-work/global/ego/shock.pxa/3.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/4.pxi b/desktop/asset-work/global/ego/shock.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/4.pxi
rename to desktop/asset-work/global/ego/shock.pxa/4.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/5.pxi b/desktop/asset-work/global/ego/shock.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/5.pxi
rename to desktop/asset-work/global/ego/shock.pxa/5.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/6.pxi b/desktop/asset-work/global/ego/shock.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/6.pxi
rename to desktop/asset-work/global/ego/shock.pxa/6.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/7.pxi b/desktop/asset-work/global/ego/shock.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/7.pxi
rename to desktop/asset-work/global/ego/shock.pxa/7.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/8.pxi b/desktop/asset-work/global/ego/shock.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/8.pxi
rename to desktop/asset-work/global/ego/shock.pxa/8.pxi
diff --git a/desktop/asset-work/ego/shock.pxa/CelData.plist b/desktop/asset-work/global/ego/shock.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/shock.pxa/CelData.plist
rename to desktop/asset-work/global/ego/shock.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/shoot.png b/desktop/asset-work/global/ego/shoot.png
similarity index 100%
rename from desktop/asset-work/ego/shoot.png
rename to desktop/asset-work/global/ego/shoot.png
diff --git a/desktop/asset-work/ego/shoot.pxa/0.pxi b/desktop/asset-work/global/ego/shoot.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/shoot.pxa/0.pxi
rename to desktop/asset-work/global/ego/shoot.pxa/0.pxi
diff --git a/desktop/asset-work/ego/shoot.pxa/1.pxi b/desktop/asset-work/global/ego/shoot.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/shoot.pxa/1.pxi
rename to desktop/asset-work/global/ego/shoot.pxa/1.pxi
diff --git a/desktop/asset-work/ego/shoot.pxa/2.pxi b/desktop/asset-work/global/ego/shoot.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/shoot.pxa/2.pxi
rename to desktop/asset-work/global/ego/shoot.pxa/2.pxi
diff --git a/desktop/asset-work/ego/shoot.pxa/3.pxi b/desktop/asset-work/global/ego/shoot.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/shoot.pxa/3.pxi
rename to desktop/asset-work/global/ego/shoot.pxa/3.pxi
diff --git a/desktop/asset-work/ego/shoot.pxa/4.pxi b/desktop/asset-work/global/ego/shoot.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/shoot.pxa/4.pxi
rename to desktop/asset-work/global/ego/shoot.pxa/4.pxi
diff --git a/desktop/asset-work/ego/shoot.pxa/5.pxi b/desktop/asset-work/global/ego/shoot.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/shoot.pxa/5.pxi
rename to desktop/asset-work/global/ego/shoot.pxa/5.pxi
diff --git a/desktop/asset-work/ego/shoot.pxa/CelData.plist b/desktop/asset-work/global/ego/shoot.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/shoot.pxa/CelData.plist
rename to desktop/asset-work/global/ego/shoot.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/sigh.ogg b/desktop/asset-work/global/ego/sigh.ogg
similarity index 100%
rename from desktop/asset-work/ego/sigh.ogg
rename to desktop/asset-work/global/ego/sigh.ogg
diff --git a/desktop/asset-work/ego/sigh.png b/desktop/asset-work/global/ego/sigh.png
similarity index 100%
rename from desktop/asset-work/ego/sigh.png
rename to desktop/asset-work/global/ego/sigh.png
diff --git a/desktop/asset-work/ego/sigh.pxa/0.pxi b/desktop/asset-work/global/ego/sigh.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/0.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/0.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/1.pxi b/desktop/asset-work/global/ego/sigh.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/1.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/1.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/2.pxi b/desktop/asset-work/global/ego/sigh.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/2.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/2.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/3.pxi b/desktop/asset-work/global/ego/sigh.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/3.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/3.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/4.pxi b/desktop/asset-work/global/ego/sigh.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/4.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/4.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/5.pxi b/desktop/asset-work/global/ego/sigh.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/5.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/5.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/6.pxi b/desktop/asset-work/global/ego/sigh.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/6.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/6.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/7.pxi b/desktop/asset-work/global/ego/sigh.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/7.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/7.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/8.pxi b/desktop/asset-work/global/ego/sigh.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/8.pxi
rename to desktop/asset-work/global/ego/sigh.pxa/8.pxi
diff --git a/desktop/asset-work/ego/sigh.pxa/CelData.plist b/desktop/asset-work/global/ego/sigh.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/sigh.pxa/CelData.plist
rename to desktop/asset-work/global/ego/sigh.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/sigh.wav b/desktop/asset-work/global/ego/sigh.wav
similarity index 100%
rename from desktop/asset-work/ego/sigh.wav
rename to desktop/asset-work/global/ego/sigh.wav
diff --git a/desktop/asset-work/ego/slingshot.ogg b/desktop/asset-work/global/ego/slingshot.ogg
similarity index 100%
rename from desktop/asset-work/ego/slingshot.ogg
rename to desktop/asset-work/global/ego/slingshot.ogg
diff --git a/desktop/asset-work/ego/slingshot.wav b/desktop/asset-work/global/ego/slingshot.wav
similarity index 100%
rename from desktop/asset-work/ego/slingshot.wav
rename to desktop/asset-work/global/ego/slingshot.wav
diff --git a/desktop/asset-work/ego/spear.png b/desktop/asset-work/global/ego/spear.png
similarity index 100%
rename from desktop/asset-work/ego/spear.png
rename to desktop/asset-work/global/ego/spear.png
diff --git a/desktop/asset-work/ego/spear.pxa/0.pxi b/desktop/asset-work/global/ego/spear.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/spear.pxa/0.pxi
rename to desktop/asset-work/global/ego/spear.pxa/0.pxi
diff --git a/desktop/asset-work/ego/spear.pxa/1.pxi b/desktop/asset-work/global/ego/spear.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/spear.pxa/1.pxi
rename to desktop/asset-work/global/ego/spear.pxa/1.pxi
diff --git a/desktop/asset-work/ego/spear.pxa/2.pxi b/desktop/asset-work/global/ego/spear.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/spear.pxa/2.pxi
rename to desktop/asset-work/global/ego/spear.pxa/2.pxi
diff --git a/desktop/asset-work/ego/spear.pxa/3.pxi b/desktop/asset-work/global/ego/spear.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/spear.pxa/3.pxi
rename to desktop/asset-work/global/ego/spear.pxa/3.pxi
diff --git a/desktop/asset-work/ego/spear.pxa/4.pxi b/desktop/asset-work/global/ego/spear.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/spear.pxa/4.pxi
rename to desktop/asset-work/global/ego/spear.pxa/4.pxi
diff --git a/desktop/asset-work/ego/standup.pxa/CelData.plist b/desktop/asset-work/global/ego/spear.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/standup.pxa/CelData.plist
rename to desktop/asset-work/global/ego/spear.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/squat-talk.png b/desktop/asset-work/global/ego/squat-talk.png
similarity index 100%
rename from desktop/asset-work/ego/squat-talk.png
rename to desktop/asset-work/global/ego/squat-talk.png
diff --git a/desktop/asset-work/ego/squat-talk.pxa/0.pxi b/desktop/asset-work/global/ego/squat-talk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat-talk.pxa/0.pxi
rename to desktop/asset-work/global/ego/squat-talk.pxa/0.pxi
diff --git a/desktop/asset-work/ego/squat-talk.pxa/1.pxi b/desktop/asset-work/global/ego/squat-talk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat-talk.pxa/1.pxi
rename to desktop/asset-work/global/ego/squat-talk.pxa/1.pxi
diff --git a/desktop/asset-work/ego/squat-talk.pxa/2.pxi b/desktop/asset-work/global/ego/squat-talk.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat-talk.pxa/2.pxi
rename to desktop/asset-work/global/ego/squat-talk.pxa/2.pxi
diff --git a/desktop/asset-work/ego/squat-talk.pxa/3.pxi b/desktop/asset-work/global/ego/squat-talk.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat-talk.pxa/3.pxi
rename to desktop/asset-work/global/ego/squat-talk.pxa/3.pxi
diff --git a/desktop/asset-work/ego/squat-talk.pxa/CelData.plist b/desktop/asset-work/global/ego/squat-talk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/squat-talk.pxa/CelData.plist
rename to desktop/asset-work/global/ego/squat-talk.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/squat.png b/desktop/asset-work/global/ego/squat.png
similarity index 100%
rename from desktop/asset-work/ego/squat.png
rename to desktop/asset-work/global/ego/squat.png
diff --git a/desktop/asset-work/ego/squat.pxa/0.pxi b/desktop/asset-work/global/ego/squat.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/0.pxi
rename to desktop/asset-work/global/ego/squat.pxa/0.pxi
diff --git a/desktop/asset-work/ego/squat.pxa/1.pxi b/desktop/asset-work/global/ego/squat.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/1.pxi
rename to desktop/asset-work/global/ego/squat.pxa/1.pxi
diff --git a/desktop/asset-work/ego/squat.pxa/2.pxi b/desktop/asset-work/global/ego/squat.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/2.pxi
rename to desktop/asset-work/global/ego/squat.pxa/2.pxi
diff --git a/desktop/asset-work/ego/squat.pxa/3.pxi b/desktop/asset-work/global/ego/squat.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/3.pxi
rename to desktop/asset-work/global/ego/squat.pxa/3.pxi
diff --git a/desktop/asset-work/ego/squat.pxa/4.pxi b/desktop/asset-work/global/ego/squat.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/4.pxi
rename to desktop/asset-work/global/ego/squat.pxa/4.pxi
diff --git a/desktop/asset-work/ego/squat.pxa/5.pxi b/desktop/asset-work/global/ego/squat.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/5.pxi
rename to desktop/asset-work/global/ego/squat.pxa/5.pxi
diff --git a/desktop/asset-work/ego/squat.pxa/6.pxi b/desktop/asset-work/global/ego/squat.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/6.pxi
rename to desktop/asset-work/global/ego/squat.pxa/6.pxi
diff --git a/desktop/asset-work/ego/squat.pxa/CelData.plist b/desktop/asset-work/global/ego/squat.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/squat.pxa/CelData.plist
rename to desktop/asset-work/global/ego/squat.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/stand.png b/desktop/asset-work/global/ego/stand.png
similarity index 100%
rename from desktop/asset-work/ego/stand.png
rename to desktop/asset-work/global/ego/stand.png
diff --git a/desktop/asset-work/ego/stand.pxa/0.pxi b/desktop/asset-work/global/ego/stand.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/0.pxi
rename to desktop/asset-work/global/ego/stand.pxa/0.pxi
diff --git a/desktop/asset-work/ego/stand.pxa/1.pxi b/desktop/asset-work/global/ego/stand.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/1.pxi
rename to desktop/asset-work/global/ego/stand.pxa/1.pxi
diff --git a/desktop/asset-work/ego/stand.pxa/2.pxi b/desktop/asset-work/global/ego/stand.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/2.pxi
rename to desktop/asset-work/global/ego/stand.pxa/2.pxi
diff --git a/desktop/asset-work/ego/stand.pxa/3.pxi b/desktop/asset-work/global/ego/stand.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/3.pxi
rename to desktop/asset-work/global/ego/stand.pxa/3.pxi
diff --git a/desktop/asset-work/ego/stand.pxa/4.pxi b/desktop/asset-work/global/ego/stand.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/4.pxi
rename to desktop/asset-work/global/ego/stand.pxa/4.pxi
diff --git a/desktop/asset-work/ego/stand.pxa/5.pxi b/desktop/asset-work/global/ego/stand.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/5.pxi
rename to desktop/asset-work/global/ego/stand.pxa/5.pxi
diff --git a/desktop/asset-work/ego/stand.pxa/6.pxi b/desktop/asset-work/global/ego/stand.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/6.pxi
rename to desktop/asset-work/global/ego/stand.pxa/6.pxi
diff --git a/desktop/asset-work/ego/stand.pxa/CelData.plist b/desktop/asset-work/global/ego/stand.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/stand.pxa/CelData.plist
rename to desktop/asset-work/global/ego/stand.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/standup.png b/desktop/asset-work/global/ego/standup.png
similarity index 100%
rename from desktop/asset-work/ego/standup.png
rename to desktop/asset-work/global/ego/standup.png
diff --git a/desktop/asset-work/ego/standup.pxa/0.pxi b/desktop/asset-work/global/ego/standup.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/standup.pxa/0.pxi
rename to desktop/asset-work/global/ego/standup.pxa/0.pxi
diff --git a/desktop/asset-work/ego/standup.pxa/1.pxi b/desktop/asset-work/global/ego/standup.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/standup.pxa/1.pxi
rename to desktop/asset-work/global/ego/standup.pxa/1.pxi
diff --git a/desktop/asset-work/ego/standup.pxa/2.pxi b/desktop/asset-work/global/ego/standup.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/standup.pxa/2.pxi
rename to desktop/asset-work/global/ego/standup.pxa/2.pxi
diff --git a/desktop/asset-work/ego/standup.pxa/3.pxi b/desktop/asset-work/global/ego/standup.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/standup.pxa/3.pxi
rename to desktop/asset-work/global/ego/standup.pxa/3.pxi
diff --git a/desktop/asset-work/ego/standup.pxa/4.pxi b/desktop/asset-work/global/ego/standup.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/standup.pxa/4.pxi
rename to desktop/asset-work/global/ego/standup.pxa/4.pxi
diff --git a/desktop/asset-work/georgia/stand.pxa/CelData.plist b/desktop/asset-work/global/ego/standup.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/georgia/stand.pxa/CelData.plist
rename to desktop/asset-work/global/ego/standup.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/step b/desktop/asset-work/global/ego/step
similarity index 100%
rename from desktop/asset-work/ego/step
rename to desktop/asset-work/global/ego/step
diff --git a/desktop/asset-work/ego/step-1.wav b/desktop/asset-work/global/ego/step-1.wav
similarity index 100%
rename from desktop/asset-work/ego/step-1.wav
rename to desktop/asset-work/global/ego/step-1.wav
diff --git a/desktop/asset-work/ego/step-1_1.wav b/desktop/asset-work/global/ego/step-1_1.wav
similarity index 100%
rename from desktop/asset-work/ego/step-1_1.wav
rename to desktop/asset-work/global/ego/step-1_1.wav
diff --git a/desktop/asset-work/ego/step-2.wav b/desktop/asset-work/global/ego/step-2.wav
similarity index 100%
rename from desktop/asset-work/ego/step-2.wav
rename to desktop/asset-work/global/ego/step-2.wav
diff --git a/desktop/asset-work/ego/step-3.wav b/desktop/asset-work/global/ego/step-3.wav
similarity index 100%
rename from desktop/asset-work/ego/step-3.wav
rename to desktop/asset-work/global/ego/step-3.wav
diff --git a/desktop/asset-work/ego/step-4.wav b/desktop/asset-work/global/ego/step-4.wav
similarity index 100%
rename from desktop/asset-work/ego/step-4.wav
rename to desktop/asset-work/global/ego/step-4.wav
diff --git a/desktop/asset-work/ego/step.wav b/desktop/asset-work/global/ego/step.wav
similarity index 100%
rename from desktop/asset-work/ego/step.wav
rename to desktop/asset-work/global/ego/step.wav
diff --git a/desktop/asset-work/ego/suspended.png b/desktop/asset-work/global/ego/suspended.png
similarity index 100%
rename from desktop/asset-work/ego/suspended.png
rename to desktop/asset-work/global/ego/suspended.png
diff --git a/desktop/asset-work/ego/suspended.pxa/0.pxi b/desktop/asset-work/global/ego/suspended.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/0.pxi
rename to desktop/asset-work/global/ego/suspended.pxa/0.pxi
diff --git a/desktop/asset-work/ego/suspended.pxa/1.pxi b/desktop/asset-work/global/ego/suspended.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/1.pxi
rename to desktop/asset-work/global/ego/suspended.pxa/1.pxi
diff --git a/desktop/asset-work/ego/suspended.pxa/2.pxi b/desktop/asset-work/global/ego/suspended.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/2.pxi
rename to desktop/asset-work/global/ego/suspended.pxa/2.pxi
diff --git a/desktop/asset-work/ego/suspended.pxa/3.pxi b/desktop/asset-work/global/ego/suspended.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/3.pxi
rename to desktop/asset-work/global/ego/suspended.pxa/3.pxi
diff --git a/desktop/asset-work/ego/suspended.pxa/4.pxi b/desktop/asset-work/global/ego/suspended.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/4.pxi
rename to desktop/asset-work/global/ego/suspended.pxa/4.pxi
diff --git a/desktop/asset-work/ego/suspended.pxa/5.pxi b/desktop/asset-work/global/ego/suspended.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/5.pxi
rename to desktop/asset-work/global/ego/suspended.pxa/5.pxi
diff --git a/desktop/asset-work/ego/suspended.pxa/6.pxi b/desktop/asset-work/global/ego/suspended.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/6.pxi
rename to desktop/asset-work/global/ego/suspended.pxa/6.pxi
diff --git a/desktop/asset-work/ego/suspended.pxa/CelData.plist b/desktop/asset-work/global/ego/suspended.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/suspended.pxa/CelData.plist
rename to desktop/asset-work/global/ego/suspended.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/swing-shovel.png b/desktop/asset-work/global/ego/swing-shovel.png
similarity index 100%
rename from desktop/asset-work/ego/swing-shovel.png
rename to desktop/asset-work/global/ego/swing-shovel.png
diff --git a/desktop/asset-work/ego/swing.png b/desktop/asset-work/global/ego/swing.png
similarity index 100%
rename from desktop/asset-work/ego/swing.png
rename to desktop/asset-work/global/ego/swing.png
diff --git a/desktop/asset-work/ego/swing.pxa/0.pxi b/desktop/asset-work/global/ego/swing.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/0.pxi
rename to desktop/asset-work/global/ego/swing.pxa/0.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/1.pxi b/desktop/asset-work/global/ego/swing.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/1.pxi
rename to desktop/asset-work/global/ego/swing.pxa/1.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/2.pxi b/desktop/asset-work/global/ego/swing.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/2.pxi
rename to desktop/asset-work/global/ego/swing.pxa/2.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/3.pxi b/desktop/asset-work/global/ego/swing.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/3.pxi
rename to desktop/asset-work/global/ego/swing.pxa/3.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/4.pxi b/desktop/asset-work/global/ego/swing.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/4.pxi
rename to desktop/asset-work/global/ego/swing.pxa/4.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/5.pxi b/desktop/asset-work/global/ego/swing.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/5.pxi
rename to desktop/asset-work/global/ego/swing.pxa/5.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/6.pxi b/desktop/asset-work/global/ego/swing.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/6.pxi
rename to desktop/asset-work/global/ego/swing.pxa/6.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/7.pxi b/desktop/asset-work/global/ego/swing.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/7.pxi
rename to desktop/asset-work/global/ego/swing.pxa/7.pxi
diff --git a/desktop/asset-work/ego/swing.pxa/CelData.plist b/desktop/asset-work/global/ego/swing.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/swing.pxa/CelData.plist
rename to desktop/asset-work/global/ego/swing.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/swingshovel.pxa/0.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/0.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/0.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/1.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/1.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/1.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/2.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/2.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/2.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/3.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/3.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/3.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/4.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/4.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/4.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/5.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/5.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/5.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/6.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/6.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/6.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/7.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/7.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/7.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/8.pxi b/desktop/asset-work/global/ego/swingshovel.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/8.pxi
rename to desktop/asset-work/global/ego/swingshovel.pxa/8.pxi
diff --git a/desktop/asset-work/ego/swingshovel.pxa/CelData.plist b/desktop/asset-work/global/ego/swingshovel.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/swingshovel.pxa/CelData.plist
rename to desktop/asset-work/global/ego/swingshovel.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/talk.png b/desktop/asset-work/global/ego/talk.png
similarity index 100%
rename from desktop/asset-work/ego/talk.png
rename to desktop/asset-work/global/ego/talk.png
diff --git a/desktop/asset-work/ego/talk.pxa/0.pxi b/desktop/asset-work/global/ego/talk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/0.pxi
rename to desktop/asset-work/global/ego/talk.pxa/0.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/1.pxi b/desktop/asset-work/global/ego/talk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/1.pxi
rename to desktop/asset-work/global/ego/talk.pxa/1.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/2.pxi b/desktop/asset-work/global/ego/talk.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/2.pxi
rename to desktop/asset-work/global/ego/talk.pxa/2.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/3.pxi b/desktop/asset-work/global/ego/talk.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/3.pxi
rename to desktop/asset-work/global/ego/talk.pxa/3.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/4.pxi b/desktop/asset-work/global/ego/talk.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/4.pxi
rename to desktop/asset-work/global/ego/talk.pxa/4.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/5.pxi b/desktop/asset-work/global/ego/talk.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/5.pxi
rename to desktop/asset-work/global/ego/talk.pxa/5.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/6.pxi b/desktop/asset-work/global/ego/talk.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/6.pxi
rename to desktop/asset-work/global/ego/talk.pxa/6.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/7.pxi b/desktop/asset-work/global/ego/talk.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/7.pxi
rename to desktop/asset-work/global/ego/talk.pxa/7.pxi
diff --git a/desktop/asset-work/ego/talk.pxa/CelData.plist b/desktop/asset-work/global/ego/talk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/talk.pxa/CelData.plist
rename to desktop/asset-work/global/ego/talk.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/test.psd b/desktop/asset-work/global/ego/test.psd
similarity index 100%
rename from desktop/asset-work/ego/test.psd
rename to desktop/asset-work/global/ego/test.psd
diff --git a/desktop/asset-work/ego/thorw.png b/desktop/asset-work/global/ego/thorw.png
similarity index 100%
rename from desktop/asset-work/ego/thorw.png
rename to desktop/asset-work/global/ego/thorw.png
diff --git a/desktop/asset-work/ego/throw.png b/desktop/asset-work/global/ego/throw.png
similarity index 100%
rename from desktop/asset-work/ego/throw.png
rename to desktop/asset-work/global/ego/throw.png
diff --git a/desktop/asset-work/ego/throw.pxa/0.pxi b/desktop/asset-work/global/ego/throw.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/0.pxi
rename to desktop/asset-work/global/ego/throw.pxa/0.pxi
diff --git a/desktop/asset-work/ego/throw.pxa/1.pxi b/desktop/asset-work/global/ego/throw.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/1.pxi
rename to desktop/asset-work/global/ego/throw.pxa/1.pxi
diff --git a/desktop/asset-work/ego/throw.pxa/2.pxi b/desktop/asset-work/global/ego/throw.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/2.pxi
rename to desktop/asset-work/global/ego/throw.pxa/2.pxi
diff --git a/desktop/asset-work/ego/throw.pxa/3.pxi b/desktop/asset-work/global/ego/throw.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/3.pxi
rename to desktop/asset-work/global/ego/throw.pxa/3.pxi
diff --git a/desktop/asset-work/ego/throw.pxa/4.pxi b/desktop/asset-work/global/ego/throw.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/4.pxi
rename to desktop/asset-work/global/ego/throw.pxa/4.pxi
diff --git a/desktop/asset-work/ego/throw.pxa/5.pxi b/desktop/asset-work/global/ego/throw.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/5.pxi
rename to desktop/asset-work/global/ego/throw.pxa/5.pxi
diff --git a/desktop/asset-work/ego/throw.pxa/6.pxi b/desktop/asset-work/global/ego/throw.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/6.pxi
rename to desktop/asset-work/global/ego/throw.pxa/6.pxi
diff --git a/desktop/asset-work/ego/throw.pxa/CelData.plist b/desktop/asset-work/global/ego/throw.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/throw.pxa/CelData.plist
rename to desktop/asset-work/global/ego/throw.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/warden.png b/desktop/asset-work/global/ego/warden.png
similarity index 100%
rename from desktop/asset-work/ego/warden.png
rename to desktop/asset-work/global/ego/warden.png
diff --git a/desktop/asset-work/ego/whistle.pxa/0.pxi b/desktop/asset-work/global/ego/whistle.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/ego/whistle.pxa/0.pxi
rename to desktop/asset-work/global/ego/whistle.pxa/0.pxi
diff --git a/desktop/asset-work/ego/whistle.pxa/1.pxi b/desktop/asset-work/global/ego/whistle.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/ego/whistle.pxa/1.pxi
rename to desktop/asset-work/global/ego/whistle.pxa/1.pxi
diff --git a/desktop/asset-work/ego/whistle.pxa/2.pxi b/desktop/asset-work/global/ego/whistle.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/ego/whistle.pxa/2.pxi
rename to desktop/asset-work/global/ego/whistle.pxa/2.pxi
diff --git a/desktop/asset-work/ego/whistle.pxa/3.pxi b/desktop/asset-work/global/ego/whistle.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/ego/whistle.pxa/3.pxi
rename to desktop/asset-work/global/ego/whistle.pxa/3.pxi
diff --git a/desktop/asset-work/ego/whistle.pxa/CelData.plist b/desktop/asset-work/global/ego/whistle.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/ego/whistle.pxa/CelData.plist
rename to desktop/asset-work/global/ego/whistle.pxa/CelData.plist
diff --git a/desktop/asset-work/ego/whistle-1.png b/desktop/asset-work/global/ego/whistle_0.png
similarity index 100%
rename from desktop/asset-work/ego/whistle-1.png
rename to desktop/asset-work/global/ego/whistle_0.png
diff --git a/desktop/asset-work/ego/whistle-2.png b/desktop/asset-work/global/ego/whistle_1.png
similarity index 100%
rename from desktop/asset-work/ego/whistle-2.png
rename to desktop/asset-work/global/ego/whistle_1.png
diff --git a/desktop/asset-work/ego/whistle-3.png b/desktop/asset-work/global/ego/whistle_2.png
similarity index 100%
rename from desktop/asset-work/ego/whistle-3.png
rename to desktop/asset-work/global/ego/whistle_2.png
diff --git a/desktop/asset-work/ego/whistle-4.png b/desktop/asset-work/global/ego/whistle_3.png
similarity index 100%
rename from desktop/asset-work/ego/whistle-4.png
rename to desktop/asset-work/global/ego/whistle_3.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/0.pxi b/desktop/asset-work/global/frankie-walk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/0.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/0.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/1.pxi b/desktop/asset-work/global/frankie-walk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/1.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/1.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/2.pxi b/desktop/asset-work/global/frankie-walk.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/2.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/2.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/3.pxi b/desktop/asset-work/global/frankie-walk.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/3.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/3.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/4.pxi b/desktop/asset-work/global/frankie-walk.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/4.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/4.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/5.pxi b/desktop/asset-work/global/frankie-walk.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/5.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/5.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/6.pxi b/desktop/asset-work/global/frankie-walk.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/6.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/6.pxi
diff --git a/desktop/asset-work/castle-gate/frankie-walk.pxa/7.pxi b/desktop/asset-work/global/frankie-walk.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk.pxa/7.pxi
rename to desktop/asset-work/global/frankie-walk.pxa/7.pxi
diff --git a/desktop/asset-work/georgia/walk.pxa/CelData.plist b/desktop/asset-work/global/frankie-walk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/georgia/walk.pxa/CelData.plist
rename to desktop/asset-work/global/frankie-walk.pxa/CelData.plist
diff --git a/desktop/asset-work/castle-gate/frankie-walk-1.png b/desktop/asset-work/global/frankie-walk_0.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-1.png
rename to desktop/asset-work/global/frankie-walk_0.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk-2.png b/desktop/asset-work/global/frankie-walk_1.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-2.png
rename to desktop/asset-work/global/frankie-walk_1.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk-3.png b/desktop/asset-work/global/frankie-walk_2.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-3.png
rename to desktop/asset-work/global/frankie-walk_2.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk-4.png b/desktop/asset-work/global/frankie-walk_3.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-4.png
rename to desktop/asset-work/global/frankie-walk_3.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk-5.png b/desktop/asset-work/global/frankie-walk_4.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-5.png
rename to desktop/asset-work/global/frankie-walk_4.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk-6.png b/desktop/asset-work/global/frankie-walk_5.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-6.png
rename to desktop/asset-work/global/frankie-walk_5.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk-7.png b/desktop/asset-work/global/frankie-walk_6.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-7.png
rename to desktop/asset-work/global/frankie-walk_6.png
diff --git a/desktop/asset-work/castle-gate/frankie-walk-8.png b/desktop/asset-work/global/frankie-walk_7.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie-walk-8.png
rename to desktop/asset-work/global/frankie-walk_7.png
diff --git a/desktop/asset-work/castle-gate/frankie.png b/desktop/asset-work/global/frankie.png
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.png
rename to desktop/asset-work/global/frankie.png
diff --git a/desktop/asset-work/castle-gate/frankie.psd b/desktop/asset-work/global/frankie.psd
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.psd
rename to desktop/asset-work/global/frankie.psd
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/0.pxi b/desktop/asset-work/global/frankie.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/0.pxi
rename to desktop/asset-work/global/frankie.pxa/0.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/1.pxi b/desktop/asset-work/global/frankie.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/1.pxi
rename to desktop/asset-work/global/frankie.pxa/1.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/10.pxi b/desktop/asset-work/global/frankie.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/10.pxi
rename to desktop/asset-work/global/frankie.pxa/10.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/11.pxi b/desktop/asset-work/global/frankie.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/11.pxi
rename to desktop/asset-work/global/frankie.pxa/11.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/12.pxi b/desktop/asset-work/global/frankie.pxa/12.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/12.pxi
rename to desktop/asset-work/global/frankie.pxa/12.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/2.pxi b/desktop/asset-work/global/frankie.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/2.pxi
rename to desktop/asset-work/global/frankie.pxa/2.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/3.pxi b/desktop/asset-work/global/frankie.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/3.pxi
rename to desktop/asset-work/global/frankie.pxa/3.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/4.pxi b/desktop/asset-work/global/frankie.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/4.pxi
rename to desktop/asset-work/global/frankie.pxa/4.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/5.pxi b/desktop/asset-work/global/frankie.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/5.pxi
rename to desktop/asset-work/global/frankie.pxa/5.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/6.pxi b/desktop/asset-work/global/frankie.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/6.pxi
rename to desktop/asset-work/global/frankie.pxa/6.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/7.pxi b/desktop/asset-work/global/frankie.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/7.pxi
rename to desktop/asset-work/global/frankie.pxa/7.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/8.pxi b/desktop/asset-work/global/frankie.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/8.pxi
rename to desktop/asset-work/global/frankie.pxa/8.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/9.pxi b/desktop/asset-work/global/frankie.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/9.pxi
rename to desktop/asset-work/global/frankie.pxa/9.pxi
diff --git a/desktop/asset-work/castle-gate/frankie.pxa/CelData.plist b/desktop/asset-work/global/frankie.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/castle-gate/frankie.pxa/CelData.plist
rename to desktop/asset-work/global/frankie.pxa/CelData.plist
diff --git a/desktop/asset-work/inventory-overlay.png b/desktop/asset-work/global/inventory-overlay.png
similarity index 100%
rename from desktop/asset-work/inventory-overlay.png
rename to desktop/asset-work/global/inventory-overlay.png
diff --git a/desktop/asset-work/global/inventory.png b/desktop/asset-work/global/inventory.png
new file mode 100644
index 00000000..7558b367
Binary files /dev/null and b/desktop/asset-work/global/inventory.png differ
diff --git a/desktop/asset-work/global/open-inventory.pxa/0.pxi b/desktop/asset-work/global/open-inventory.pxa/0.pxi
new file mode 100644
index 00000000..0688f874
Binary files /dev/null and b/desktop/asset-work/global/open-inventory.pxa/0.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/1.pxi b/desktop/asset-work/global/open-inventory.pxa/1.pxi
similarity index 83%
rename from desktop/asset-work/inside-castle/hands.pxa/1.pxi
rename to desktop/asset-work/global/open-inventory.pxa/1.pxi
index 4e5770a7..c20383b6 100644
Binary files a/desktop/asset-work/inside-castle/hands.pxa/1.pxi and b/desktop/asset-work/global/open-inventory.pxa/1.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/0.pxi b/desktop/asset-work/global/open-inventory.pxa/10.pxi
similarity index 84%
rename from desktop/asset-work/inside-castle/hands.pxa/0.pxi
rename to desktop/asset-work/global/open-inventory.pxa/10.pxi
index 57913251..13a047f9 100644
Binary files a/desktop/asset-work/inside-castle/hands.pxa/0.pxi and b/desktop/asset-work/global/open-inventory.pxa/10.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/6.pxi b/desktop/asset-work/global/open-inventory.pxa/11.pxi
similarity index 83%
rename from desktop/asset-work/inside-castle/hands.pxa/6.pxi
rename to desktop/asset-work/global/open-inventory.pxa/11.pxi
index 18d5add7..9ccae017 100644
Binary files a/desktop/asset-work/inside-castle/hands.pxa/6.pxi and b/desktop/asset-work/global/open-inventory.pxa/11.pxi differ
diff --git a/desktop/asset-work/global/open-inventory.pxa/12.pxi b/desktop/asset-work/global/open-inventory.pxa/12.pxi
new file mode 100644
index 00000000..eff129ad
Binary files /dev/null and b/desktop/asset-work/global/open-inventory.pxa/12.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/2.pxi b/desktop/asset-work/global/open-inventory.pxa/2.pxi
similarity index 84%
rename from desktop/asset-work/inside-castle/hands.pxa/2.pxi
rename to desktop/asset-work/global/open-inventory.pxa/2.pxi
index 23f929ef..bcc71d0d 100644
Binary files a/desktop/asset-work/inside-castle/hands.pxa/2.pxi and b/desktop/asset-work/global/open-inventory.pxa/2.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/3.pxi b/desktop/asset-work/global/open-inventory.pxa/3.pxi
similarity index 85%
rename from desktop/asset-work/inside-castle/hands.pxa/3.pxi
rename to desktop/asset-work/global/open-inventory.pxa/3.pxi
index 9659bc0c..6e232bb8 100644
Binary files a/desktop/asset-work/inside-castle/hands.pxa/3.pxi and b/desktop/asset-work/global/open-inventory.pxa/3.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/4.pxi b/desktop/asset-work/global/open-inventory.pxa/4.pxi
similarity index 84%
rename from desktop/asset-work/inside-castle/hands.pxa/4.pxi
rename to desktop/asset-work/global/open-inventory.pxa/4.pxi
index 8e81e710..069ff60b 100644
Binary files a/desktop/asset-work/inside-castle/hands.pxa/4.pxi and b/desktop/asset-work/global/open-inventory.pxa/4.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/5.pxi b/desktop/asset-work/global/open-inventory.pxa/5.pxi
similarity index 84%
rename from desktop/asset-work/inside-castle/hands.pxa/5.pxi
rename to desktop/asset-work/global/open-inventory.pxa/5.pxi
index ce09c2e0..bc83ad3c 100644
Binary files a/desktop/asset-work/inside-castle/hands.pxa/5.pxi and b/desktop/asset-work/global/open-inventory.pxa/5.pxi differ
diff --git a/desktop/asset-work/global/open-inventory.pxa/6.pxi b/desktop/asset-work/global/open-inventory.pxa/6.pxi
new file mode 100644
index 00000000..2064cbdd
Binary files /dev/null and b/desktop/asset-work/global/open-inventory.pxa/6.pxi differ
diff --git a/desktop/asset-work/global/open-inventory.pxa/7.pxi b/desktop/asset-work/global/open-inventory.pxa/7.pxi
new file mode 100644
index 00000000..47ebb639
Binary files /dev/null and b/desktop/asset-work/global/open-inventory.pxa/7.pxi differ
diff --git a/desktop/asset-work/global/open-inventory.pxa/8.pxi b/desktop/asset-work/global/open-inventory.pxa/8.pxi
new file mode 100644
index 00000000..3ab206c8
Binary files /dev/null and b/desktop/asset-work/global/open-inventory.pxa/8.pxi differ
diff --git a/desktop/asset-work/global/open-inventory.pxa/9.pxi b/desktop/asset-work/global/open-inventory.pxa/9.pxi
new file mode 100644
index 00000000..47ebb639
Binary files /dev/null and b/desktop/asset-work/global/open-inventory.pxa/9.pxi differ
diff --git a/desktop/asset-work/inside-castle/hands.pxa/CelData.plist b/desktop/asset-work/global/open-inventory.pxa/CelData.plist
similarity index 63%
rename from desktop/asset-work/inside-castle/hands.pxa/CelData.plist
rename to desktop/asset-work/global/open-inventory.pxa/CelData.plist
index 8f638e26..0aa530db 100644
--- a/desktop/asset-work/inside-castle/hands.pxa/CelData.plist
+++ b/desktop/asset-work/global/open-inventory.pxa/CelData.plist
@@ -30,5 +30,29 @@
duration
1
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
+
+ duration
+ 1
+
diff --git a/desktop/asset-work/global/open-inventory_0.png b/desktop/asset-work/global/open-inventory_0.png
new file mode 100644
index 00000000..03a6f71b
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_0.png differ
diff --git a/desktop/asset-work/global/open-inventory_1.png b/desktop/asset-work/global/open-inventory_1.png
new file mode 100644
index 00000000..5972bbae
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_1.png differ
diff --git a/desktop/asset-work/global/open-inventory_10.png b/desktop/asset-work/global/open-inventory_10.png
new file mode 100644
index 00000000..d8b241a9
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_10.png differ
diff --git a/desktop/asset-work/global/open-inventory_11.png b/desktop/asset-work/global/open-inventory_11.png
new file mode 100644
index 00000000..9b74d431
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_11.png differ
diff --git a/desktop/asset-work/global/open-inventory_12.png b/desktop/asset-work/global/open-inventory_12.png
new file mode 100644
index 00000000..4e22a1ba
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_12.png differ
diff --git a/desktop/asset-work/global/open-inventory_2.png b/desktop/asset-work/global/open-inventory_2.png
new file mode 100644
index 00000000..79f9cd62
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_2.png differ
diff --git a/desktop/asset-work/global/open-inventory_3.png b/desktop/asset-work/global/open-inventory_3.png
new file mode 100644
index 00000000..50b9ce19
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_3.png differ
diff --git a/desktop/asset-work/global/open-inventory_4.png b/desktop/asset-work/global/open-inventory_4.png
new file mode 100644
index 00000000..e2ca9068
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_4.png differ
diff --git a/desktop/asset-work/global/open-inventory_5.png b/desktop/asset-work/global/open-inventory_5.png
new file mode 100644
index 00000000..6ca05529
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_5.png differ
diff --git a/desktop/asset-work/global/open-inventory_6.png b/desktop/asset-work/global/open-inventory_6.png
new file mode 100644
index 00000000..0a3405ad
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_6.png differ
diff --git a/desktop/asset-work/global/open-inventory_7.png b/desktop/asset-work/global/open-inventory_7.png
new file mode 100644
index 00000000..8ea4df8d
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_7.png differ
diff --git a/desktop/asset-work/global/open-inventory_8.png b/desktop/asset-work/global/open-inventory_8.png
new file mode 100644
index 00000000..3b5765f1
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_8.png differ
diff --git a/desktop/asset-work/global/open-inventory_9.png b/desktop/asset-work/global/open-inventory_9.png
new file mode 100644
index 00000000..6620226e
Binary files /dev/null and b/desktop/asset-work/global/open-inventory_9.png differ
diff --git a/desktop/asset-work/global/pack.json b/desktop/asset-work/global/pack.json
new file mode 100644
index 00000000..0faf94db
--- /dev/null
+++ b/desktop/asset-work/global/pack.json
@@ -0,0 +1,36 @@
+{
+ pot: true,
+ paddingX: 2,
+ paddingY: 2,
+ bleed: true,
+ edgePadding: true,
+ duplicatePadding: false,
+ rotation: false,
+ minWidth: 128,
+ minHeight: 128,
+ maxWidth: 1024,
+ maxHeight: 1024,
+ square: false,
+ stripWhitespaceX: false,
+ stripWhitespaceY: false,
+ alphaThreshold: -1,
+ filterMin: Nearest,
+ filterMag: Nearest,
+ wrapX: ClampToEdge,
+ wrapY: ClampToEdge,
+ format: RGBA4444,
+ alias: true,
+ outputFormat: png,
+ jpegQuality: 0.9,
+ ignoreBlankImages: true,
+ fast: false,
+ debug: false,
+ combineSubdirectories: true,
+ flattenPaths: false,
+ premultiplyAlpha: false,
+ useIndexes: true,
+ limitMemory: true,
+ grid: false,
+ scale: [ 1 ],
+ scaleSuffix: [ "" ]
+}
diff --git a/desktop/asset-work/safe-song/safe-song-1.png b/desktop/asset-work/global/safe-song/safe-song_0.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-1.png
rename to desktop/asset-work/global/safe-song/safe-song_0.png
diff --git a/desktop/asset-work/safe-song/safe-song-2.png b/desktop/asset-work/global/safe-song/safe-song_1.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-2.png
rename to desktop/asset-work/global/safe-song/safe-song_1.png
diff --git a/desktop/asset-work/safe-song/safe-song-11.png b/desktop/asset-work/global/safe-song/safe-song_10.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-11.png
rename to desktop/asset-work/global/safe-song/safe-song_10.png
diff --git a/desktop/asset-work/safe-song/safe-song-12.png b/desktop/asset-work/global/safe-song/safe-song_11.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-12.png
rename to desktop/asset-work/global/safe-song/safe-song_11.png
diff --git a/desktop/asset-work/safe-song/safe-song-13.png b/desktop/asset-work/global/safe-song/safe-song_12.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-13.png
rename to desktop/asset-work/global/safe-song/safe-song_12.png
diff --git a/desktop/asset-work/safe-song/safe-song-14.png b/desktop/asset-work/global/safe-song/safe-song_13.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-14.png
rename to desktop/asset-work/global/safe-song/safe-song_13.png
diff --git a/desktop/asset-work/safe-song/safe-song-15.png b/desktop/asset-work/global/safe-song/safe-song_14.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-15.png
rename to desktop/asset-work/global/safe-song/safe-song_14.png
diff --git a/desktop/asset-work/safe-song/safe-song-16.png b/desktop/asset-work/global/safe-song/safe-song_15.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-16.png
rename to desktop/asset-work/global/safe-song/safe-song_15.png
diff --git a/desktop/asset-work/safe-song/safe-song-17.png b/desktop/asset-work/global/safe-song/safe-song_16.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-17.png
rename to desktop/asset-work/global/safe-song/safe-song_16.png
diff --git a/desktop/asset-work/safe-song/safe-song-18.png b/desktop/asset-work/global/safe-song/safe-song_17.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-18.png
rename to desktop/asset-work/global/safe-song/safe-song_17.png
diff --git a/desktop/asset-work/safe-song/safe-song-19.png b/desktop/asset-work/global/safe-song/safe-song_18.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-19.png
rename to desktop/asset-work/global/safe-song/safe-song_18.png
diff --git a/desktop/asset-work/safe-song/safe-song-20.png b/desktop/asset-work/global/safe-song/safe-song_19.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-20.png
rename to desktop/asset-work/global/safe-song/safe-song_19.png
diff --git a/desktop/asset-work/safe-song/safe-song-3.png b/desktop/asset-work/global/safe-song/safe-song_2.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-3.png
rename to desktop/asset-work/global/safe-song/safe-song_2.png
diff --git a/desktop/asset-work/safe-song/safe-song-21.png b/desktop/asset-work/global/safe-song/safe-song_20.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-21.png
rename to desktop/asset-work/global/safe-song/safe-song_20.png
diff --git a/desktop/asset-work/safe-song/safe-song-22.png b/desktop/asset-work/global/safe-song/safe-song_21.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-22.png
rename to desktop/asset-work/global/safe-song/safe-song_21.png
diff --git a/desktop/asset-work/safe-song/safe-song-23.png b/desktop/asset-work/global/safe-song/safe-song_22.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-23.png
rename to desktop/asset-work/global/safe-song/safe-song_22.png
diff --git a/desktop/asset-work/safe-song/safe-song-24.png b/desktop/asset-work/global/safe-song/safe-song_23.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-24.png
rename to desktop/asset-work/global/safe-song/safe-song_23.png
diff --git a/desktop/asset-work/safe-song/safe-song-25.png b/desktop/asset-work/global/safe-song/safe-song_24.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-25.png
rename to desktop/asset-work/global/safe-song/safe-song_24.png
diff --git a/desktop/asset-work/safe-song/safe-song-26.png b/desktop/asset-work/global/safe-song/safe-song_25.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-26.png
rename to desktop/asset-work/global/safe-song/safe-song_25.png
diff --git a/desktop/asset-work/safe-song/safe-song-27.png b/desktop/asset-work/global/safe-song/safe-song_26.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-27.png
rename to desktop/asset-work/global/safe-song/safe-song_26.png
diff --git a/desktop/asset-work/safe-song/safe-song-28.png b/desktop/asset-work/global/safe-song/safe-song_27.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-28.png
rename to desktop/asset-work/global/safe-song/safe-song_27.png
diff --git a/desktop/asset-work/safe-song/safe-song-29.png b/desktop/asset-work/global/safe-song/safe-song_28.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-29.png
rename to desktop/asset-work/global/safe-song/safe-song_28.png
diff --git a/desktop/asset-work/safe-song/safe-song-4.png b/desktop/asset-work/global/safe-song/safe-song_3.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-4.png
rename to desktop/asset-work/global/safe-song/safe-song_3.png
diff --git a/desktop/asset-work/safe-song/safe-song-5.png b/desktop/asset-work/global/safe-song/safe-song_4.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-5.png
rename to desktop/asset-work/global/safe-song/safe-song_4.png
diff --git a/desktop/asset-work/safe-song/safe-song-6.png b/desktop/asset-work/global/safe-song/safe-song_5.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-6.png
rename to desktop/asset-work/global/safe-song/safe-song_5.png
diff --git a/desktop/asset-work/safe-song/safe-song-7.png b/desktop/asset-work/global/safe-song/safe-song_6.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-7.png
rename to desktop/asset-work/global/safe-song/safe-song_6.png
diff --git a/desktop/asset-work/safe-song/safe-song-8.png b/desktop/asset-work/global/safe-song/safe-song_7.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-8.png
rename to desktop/asset-work/global/safe-song/safe-song_7.png
diff --git a/desktop/asset-work/safe-song/safe-song-9.png b/desktop/asset-work/global/safe-song/safe-song_8.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-9.png
rename to desktop/asset-work/global/safe-song/safe-song_8.png
diff --git a/desktop/asset-work/safe-song/safe-song-10.png b/desktop/asset-work/global/safe-song/safe-song_9.png
similarity index 100%
rename from desktop/asset-work/safe-song/safe-song-10.png
rename to desktop/asset-work/global/safe-song/safe-song_9.png
diff --git a/desktop/asset-work/inside-house/inputed-key.png b/desktop/asset-work/global/safe/inputed-key.png
similarity index 100%
rename from desktop/asset-work/inside-house/inputed-key.png
rename to desktop/asset-work/global/safe/inputed-key.png
diff --git a/desktop/asset-work/inside-house/safe-screen.png b/desktop/asset-work/global/safe/safe-screen.png
similarity index 83%
rename from desktop/asset-work/inside-house/safe-screen.png
rename to desktop/asset-work/global/safe/safe-screen.png
index 99877c81..301d00b0 100644
Binary files a/desktop/asset-work/inside-house/safe-screen.png and b/desktop/asset-work/global/safe/safe-screen.png differ
diff --git a/desktop/asset-work/save.png b/desktop/asset-work/global/save.png
similarity index 100%
rename from desktop/asset-work/save.png
rename to desktop/asset-work/global/save.png
diff --git a/desktop/asset-work/global/test/abc.png b/desktop/asset-work/global/test/abc.png
new file mode 100644
index 00000000..aee350fb
Binary files /dev/null and b/desktop/asset-work/global/test/abc.png differ
diff --git a/desktop/asset-work/white.png b/desktop/asset-work/global/white.png
similarity index 100%
rename from desktop/asset-work/white.png
rename to desktop/asset-work/global/white.png
diff --git a/desktop/asset-work/wizard/Untitled.png b/desktop/asset-work/global/wizard/Untitled.png
similarity index 100%
rename from desktop/asset-work/wizard/Untitled.png
rename to desktop/asset-work/global/wizard/Untitled.png
diff --git a/desktop/asset-work/wizard/cloud.png b/desktop/asset-work/global/wizard/cloud.png
similarity index 100%
rename from desktop/asset-work/wizard/cloud.png
rename to desktop/asset-work/global/wizard/cloud.png
diff --git a/desktop/asset-work/wizard/cloud.pxi b/desktop/asset-work/global/wizard/cloud.pxi
similarity index 100%
rename from desktop/asset-work/wizard/cloud.pxi
rename to desktop/asset-work/global/wizard/cloud.pxi
diff --git a/desktop/asset-work/wizard/disappear.png b/desktop/asset-work/global/wizard/disappear.png
similarity index 100%
rename from desktop/asset-work/wizard/disappear.png
rename to desktop/asset-work/global/wizard/disappear.png
diff --git a/desktop/asset-work/wizard/disappear.pxa/0.pxi b/desktop/asset-work/global/wizard/disappear.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/0.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/0.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/1.pxi b/desktop/asset-work/global/wizard/disappear.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/1.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/1.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/10.pxi b/desktop/asset-work/global/wizard/disappear.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/10.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/10.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/11.pxi b/desktop/asset-work/global/wizard/disappear.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/11.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/11.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/12.pxi b/desktop/asset-work/global/wizard/disappear.pxa/12.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/12.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/12.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/13.pxi b/desktop/asset-work/global/wizard/disappear.pxa/13.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/13.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/13.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/14.pxi b/desktop/asset-work/global/wizard/disappear.pxa/14.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/14.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/14.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/15.pxi b/desktop/asset-work/global/wizard/disappear.pxa/15.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/15.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/15.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/16.pxi b/desktop/asset-work/global/wizard/disappear.pxa/16.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/16.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/16.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/17.pxi b/desktop/asset-work/global/wizard/disappear.pxa/17.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/17.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/17.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/18.pxi b/desktop/asset-work/global/wizard/disappear.pxa/18.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/18.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/18.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/2.pxi b/desktop/asset-work/global/wizard/disappear.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/2.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/2.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/3.pxi b/desktop/asset-work/global/wizard/disappear.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/3.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/3.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/4.pxi b/desktop/asset-work/global/wizard/disappear.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/4.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/4.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/5.pxi b/desktop/asset-work/global/wizard/disappear.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/5.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/5.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/6.pxi b/desktop/asset-work/global/wizard/disappear.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/6.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/6.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/7.pxi b/desktop/asset-work/global/wizard/disappear.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/7.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/7.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/8.pxi b/desktop/asset-work/global/wizard/disappear.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/8.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/8.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/9.pxi b/desktop/asset-work/global/wizard/disappear.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/9.pxi
rename to desktop/asset-work/global/wizard/disappear.pxa/9.pxi
diff --git a/desktop/asset-work/wizard/disappear.pxa/CelData.plist b/desktop/asset-work/global/wizard/disappear.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/wizard/disappear.pxa/CelData.plist
rename to desktop/asset-work/global/wizard/disappear.pxa/CelData.plist
diff --git a/desktop/asset-work/wizard/dot.png b/desktop/asset-work/global/wizard/dot.png
similarity index 100%
rename from desktop/asset-work/wizard/dot.png
rename to desktop/asset-work/global/wizard/dot.png
diff --git a/desktop/asset-work/wizard/drip.ogg b/desktop/asset-work/global/wizard/drip.ogg
similarity index 100%
rename from desktop/asset-work/wizard/drip.ogg
rename to desktop/asset-work/global/wizard/drip.ogg
diff --git a/desktop/asset-work/wizard/drip.wav b/desktop/asset-work/global/wizard/drip.wav
similarity index 100%
rename from desktop/asset-work/wizard/drip.wav
rename to desktop/asset-work/global/wizard/drip.wav
diff --git a/desktop/asset-work/wizard/experiment.pxa/0.pxi b/desktop/asset-work/global/wizard/experiment.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/0.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/0.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/1.pxi b/desktop/asset-work/global/wizard/experiment.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/1.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/1.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/10.pxi b/desktop/asset-work/global/wizard/experiment.pxa/10.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/10.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/10.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/11.pxi b/desktop/asset-work/global/wizard/experiment.pxa/11.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/11.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/11.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/12.pxi b/desktop/asset-work/global/wizard/experiment.pxa/12.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/12.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/12.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/13.pxi b/desktop/asset-work/global/wizard/experiment.pxa/13.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/13.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/13.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/14.pxi b/desktop/asset-work/global/wizard/experiment.pxa/14.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/14.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/14.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/15.pxi b/desktop/asset-work/global/wizard/experiment.pxa/15.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/15.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/15.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/16.pxi b/desktop/asset-work/global/wizard/experiment.pxa/16.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/16.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/16.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/17.pxi b/desktop/asset-work/global/wizard/experiment.pxa/17.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/17.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/17.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/18.pxi b/desktop/asset-work/global/wizard/experiment.pxa/18.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/18.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/18.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/19.pxi b/desktop/asset-work/global/wizard/experiment.pxa/19.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/19.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/19.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/2.pxi b/desktop/asset-work/global/wizard/experiment.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/2.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/2.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/20.pxi b/desktop/asset-work/global/wizard/experiment.pxa/20.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/20.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/20.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/21.pxi b/desktop/asset-work/global/wizard/experiment.pxa/21.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/21.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/21.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/22.pxi b/desktop/asset-work/global/wizard/experiment.pxa/22.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/22.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/22.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/23.pxi b/desktop/asset-work/global/wizard/experiment.pxa/23.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/23.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/23.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/24.pxi b/desktop/asset-work/global/wizard/experiment.pxa/24.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/24.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/24.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/25.pxi b/desktop/asset-work/global/wizard/experiment.pxa/25.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/25.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/25.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/26.pxi b/desktop/asset-work/global/wizard/experiment.pxa/26.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/26.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/26.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/27.pxi b/desktop/asset-work/global/wizard/experiment.pxa/27.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/27.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/27.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/28.pxi b/desktop/asset-work/global/wizard/experiment.pxa/28.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/28.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/28.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/29.pxi b/desktop/asset-work/global/wizard/experiment.pxa/29.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/29.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/29.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/3.pxi b/desktop/asset-work/global/wizard/experiment.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/3.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/3.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/30.pxi b/desktop/asset-work/global/wizard/experiment.pxa/30.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/30.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/30.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/31.pxi b/desktop/asset-work/global/wizard/experiment.pxa/31.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/31.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/31.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/32.pxi b/desktop/asset-work/global/wizard/experiment.pxa/32.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/32.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/32.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/33.pxi b/desktop/asset-work/global/wizard/experiment.pxa/33.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/33.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/33.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/34.pxi b/desktop/asset-work/global/wizard/experiment.pxa/34.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/34.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/34.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/35.pxi b/desktop/asset-work/global/wizard/experiment.pxa/35.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/35.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/35.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/36.pxi b/desktop/asset-work/global/wizard/experiment.pxa/36.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/36.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/36.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/37.pxi b/desktop/asset-work/global/wizard/experiment.pxa/37.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/37.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/37.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/38.pxi b/desktop/asset-work/global/wizard/experiment.pxa/38.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/38.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/38.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/4.pxi b/desktop/asset-work/global/wizard/experiment.pxa/4.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/4.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/4.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/5.pxi b/desktop/asset-work/global/wizard/experiment.pxa/5.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/5.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/5.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/6.pxi b/desktop/asset-work/global/wizard/experiment.pxa/6.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/6.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/6.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/7.pxi b/desktop/asset-work/global/wizard/experiment.pxa/7.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/7.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/7.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/8.pxi b/desktop/asset-work/global/wizard/experiment.pxa/8.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/8.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/8.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/9.pxi b/desktop/asset-work/global/wizard/experiment.pxa/9.pxi
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/9.pxi
rename to desktop/asset-work/global/wizard/experiment.pxa/9.pxi
diff --git a/desktop/asset-work/wizard/experiment.pxa/CelData.plist b/desktop/asset-work/global/wizard/experiment.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/wizard/experiment.pxa/CelData.plist
rename to desktop/asset-work/global/wizard/experiment.pxa/CelData.plist
diff --git a/desktop/asset-work/wizard/experiment-1.png b/desktop/asset-work/global/wizard/experiment_0.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-1.png
rename to desktop/asset-work/global/wizard/experiment_0.png
diff --git a/desktop/asset-work/wizard/experiment-2.png b/desktop/asset-work/global/wizard/experiment_1.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-2.png
rename to desktop/asset-work/global/wizard/experiment_1.png
diff --git a/desktop/asset-work/wizard/experiment-11.png b/desktop/asset-work/global/wizard/experiment_10.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-11.png
rename to desktop/asset-work/global/wizard/experiment_10.png
diff --git a/desktop/asset-work/wizard/experiment-12.png b/desktop/asset-work/global/wizard/experiment_11.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-12.png
rename to desktop/asset-work/global/wizard/experiment_11.png
diff --git a/desktop/asset-work/wizard/experiment-13.png b/desktop/asset-work/global/wizard/experiment_12.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-13.png
rename to desktop/asset-work/global/wizard/experiment_12.png
diff --git a/desktop/asset-work/wizard/experiment-14.png b/desktop/asset-work/global/wizard/experiment_13.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-14.png
rename to desktop/asset-work/global/wizard/experiment_13.png
diff --git a/desktop/asset-work/wizard/experiment-15.png b/desktop/asset-work/global/wizard/experiment_14.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-15.png
rename to desktop/asset-work/global/wizard/experiment_14.png
diff --git a/desktop/asset-work/wizard/experiment-16.png b/desktop/asset-work/global/wizard/experiment_15.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-16.png
rename to desktop/asset-work/global/wizard/experiment_15.png
diff --git a/desktop/asset-work/wizard/experiment-17.png b/desktop/asset-work/global/wizard/experiment_16.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-17.png
rename to desktop/asset-work/global/wizard/experiment_16.png
diff --git a/desktop/asset-work/wizard/experiment-18.png b/desktop/asset-work/global/wizard/experiment_17.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-18.png
rename to desktop/asset-work/global/wizard/experiment_17.png
diff --git a/desktop/asset-work/wizard/experiment-19.png b/desktop/asset-work/global/wizard/experiment_18.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-19.png
rename to desktop/asset-work/global/wizard/experiment_18.png
diff --git a/desktop/asset-work/wizard/experiment-20.png b/desktop/asset-work/global/wizard/experiment_19.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-20.png
rename to desktop/asset-work/global/wizard/experiment_19.png
diff --git a/desktop/asset-work/wizard/experiment-3.png b/desktop/asset-work/global/wizard/experiment_2.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-3.png
rename to desktop/asset-work/global/wizard/experiment_2.png
diff --git a/desktop/asset-work/wizard/experiment-21.png b/desktop/asset-work/global/wizard/experiment_20.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-21.png
rename to desktop/asset-work/global/wizard/experiment_20.png
diff --git a/desktop/asset-work/wizard/experiment-22.png b/desktop/asset-work/global/wizard/experiment_21.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-22.png
rename to desktop/asset-work/global/wizard/experiment_21.png
diff --git a/desktop/asset-work/wizard/experiment-23.png b/desktop/asset-work/global/wizard/experiment_22.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-23.png
rename to desktop/asset-work/global/wizard/experiment_22.png
diff --git a/desktop/asset-work/wizard/experiment-24.png b/desktop/asset-work/global/wizard/experiment_23.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-24.png
rename to desktop/asset-work/global/wizard/experiment_23.png
diff --git a/desktop/asset-work/wizard/experiment-25.png b/desktop/asset-work/global/wizard/experiment_24.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-25.png
rename to desktop/asset-work/global/wizard/experiment_24.png
diff --git a/desktop/asset-work/wizard/experiment-26.png b/desktop/asset-work/global/wizard/experiment_25.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-26.png
rename to desktop/asset-work/global/wizard/experiment_25.png
diff --git a/desktop/asset-work/wizard/experiment-27.png b/desktop/asset-work/global/wizard/experiment_26.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-27.png
rename to desktop/asset-work/global/wizard/experiment_26.png
diff --git a/desktop/asset-work/wizard/experiment-28.png b/desktop/asset-work/global/wizard/experiment_27.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-28.png
rename to desktop/asset-work/global/wizard/experiment_27.png
diff --git a/desktop/asset-work/wizard/experiment-29.png b/desktop/asset-work/global/wizard/experiment_28.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-29.png
rename to desktop/asset-work/global/wizard/experiment_28.png
diff --git a/desktop/asset-work/wizard/experiment-30.png b/desktop/asset-work/global/wizard/experiment_29.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-30.png
rename to desktop/asset-work/global/wizard/experiment_29.png
diff --git a/desktop/asset-work/wizard/experiment-4.png b/desktop/asset-work/global/wizard/experiment_3.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-4.png
rename to desktop/asset-work/global/wizard/experiment_3.png
diff --git a/desktop/asset-work/wizard/experiment-31.png b/desktop/asset-work/global/wizard/experiment_30.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-31.png
rename to desktop/asset-work/global/wizard/experiment_30.png
diff --git a/desktop/asset-work/wizard/experiment-32.png b/desktop/asset-work/global/wizard/experiment_31.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-32.png
rename to desktop/asset-work/global/wizard/experiment_31.png
diff --git a/desktop/asset-work/wizard/experiment-33.png b/desktop/asset-work/global/wizard/experiment_32.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-33.png
rename to desktop/asset-work/global/wizard/experiment_32.png
diff --git a/desktop/asset-work/wizard/experiment-34.png b/desktop/asset-work/global/wizard/experiment_33.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-34.png
rename to desktop/asset-work/global/wizard/experiment_33.png
diff --git a/desktop/asset-work/wizard/experiment-35.png b/desktop/asset-work/global/wizard/experiment_34.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-35.png
rename to desktop/asset-work/global/wizard/experiment_34.png
diff --git a/desktop/asset-work/wizard/experiment-36.png b/desktop/asset-work/global/wizard/experiment_35.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-36.png
rename to desktop/asset-work/global/wizard/experiment_35.png
diff --git a/desktop/asset-work/wizard/experiment-37.png b/desktop/asset-work/global/wizard/experiment_36.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-37.png
rename to desktop/asset-work/global/wizard/experiment_36.png
diff --git a/desktop/asset-work/wizard/experiment-38.png b/desktop/asset-work/global/wizard/experiment_37.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-38.png
rename to desktop/asset-work/global/wizard/experiment_37.png
diff --git a/desktop/asset-work/wizard/experiment-39.png b/desktop/asset-work/global/wizard/experiment_38.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-39.png
rename to desktop/asset-work/global/wizard/experiment_38.png
diff --git a/desktop/asset-work/wizard/experiment-5.png b/desktop/asset-work/global/wizard/experiment_4.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-5.png
rename to desktop/asset-work/global/wizard/experiment_4.png
diff --git a/desktop/asset-work/wizard/experiment-6.png b/desktop/asset-work/global/wizard/experiment_5.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-6.png
rename to desktop/asset-work/global/wizard/experiment_5.png
diff --git a/desktop/asset-work/wizard/experiment-7.png b/desktop/asset-work/global/wizard/experiment_6.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-7.png
rename to desktop/asset-work/global/wizard/experiment_6.png
diff --git a/desktop/asset-work/wizard/experiment-8.png b/desktop/asset-work/global/wizard/experiment_7.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-8.png
rename to desktop/asset-work/global/wizard/experiment_7.png
diff --git a/desktop/asset-work/wizard/experiment-9.png b/desktop/asset-work/global/wizard/experiment_8.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-9.png
rename to desktop/asset-work/global/wizard/experiment_8.png
diff --git a/desktop/asset-work/wizard/experiment-10.png b/desktop/asset-work/global/wizard/experiment_9.png
similarity index 100%
rename from desktop/asset-work/wizard/experiment-10.png
rename to desktop/asset-work/global/wizard/experiment_9.png
diff --git a/desktop/asset-work/wizard/explode.ogg b/desktop/asset-work/global/wizard/explode.ogg
similarity index 100%
rename from desktop/asset-work/wizard/explode.ogg
rename to desktop/asset-work/global/wizard/explode.ogg
diff --git a/desktop/asset-work/wizard/explode.wav b/desktop/asset-work/global/wizard/explode.wav
similarity index 100%
rename from desktop/asset-work/wizard/explode.wav
rename to desktop/asset-work/global/wizard/explode.wav
diff --git a/desktop/asset-work/wizard/flame.png b/desktop/asset-work/global/wizard/flame.png
similarity index 100%
rename from desktop/asset-work/wizard/flame.png
rename to desktop/asset-work/global/wizard/flame.png
diff --git a/desktop/asset-work/wizard/gandarf-cloud b/desktop/asset-work/global/wizard/gandarf-cloud
similarity index 100%
rename from desktop/asset-work/wizard/gandarf-cloud
rename to desktop/asset-work/global/wizard/gandarf-cloud
diff --git a/desktop/asset-work/wizard/magic-hands.png b/desktop/asset-work/global/wizard/magic-hands.png
similarity index 100%
rename from desktop/asset-work/wizard/magic-hands.png
rename to desktop/asset-work/global/wizard/magic-hands.png
diff --git a/desktop/asset-work/wizard/magic-hands.pxa/0.pxi b/desktop/asset-work/global/wizard/magic-hands.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/wizard/magic-hands.pxa/0.pxi
rename to desktop/asset-work/global/wizard/magic-hands.pxa/0.pxi
diff --git a/desktop/asset-work/wizard/magic-hands.pxa/1.pxi b/desktop/asset-work/global/wizard/magic-hands.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/wizard/magic-hands.pxa/1.pxi
rename to desktop/asset-work/global/wizard/magic-hands.pxa/1.pxi
diff --git a/desktop/asset-work/wizard/magic-hands.pxa/CelData.plist b/desktop/asset-work/global/wizard/magic-hands.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/wizard/magic-hands.pxa/CelData.plist
rename to desktop/asset-work/global/wizard/magic-hands.pxa/CelData.plist
diff --git a/desktop/asset-work/wizard/snap.ogg b/desktop/asset-work/global/wizard/snap.ogg
similarity index 100%
rename from desktop/asset-work/wizard/snap.ogg
rename to desktop/asset-work/global/wizard/snap.ogg
diff --git a/desktop/asset-work/wizard/snap.wav b/desktop/asset-work/global/wizard/snap.wav
similarity index 100%
rename from desktop/asset-work/wizard/snap.wav
rename to desktop/asset-work/global/wizard/snap.wav
diff --git a/desktop/asset-work/wizard/stand.png b/desktop/asset-work/global/wizard/stand.png
similarity index 100%
rename from desktop/asset-work/wizard/stand.png
rename to desktop/asset-work/global/wizard/stand.png
diff --git a/desktop/asset-work/wizard/talk-angry.png b/desktop/asset-work/global/wizard/talk-angry.png
similarity index 100%
rename from desktop/asset-work/wizard/talk-angry.png
rename to desktop/asset-work/global/wizard/talk-angry.png
diff --git a/desktop/asset-work/wizard/talk-angry.pxa/0.pxi b/desktop/asset-work/global/wizard/talk-angry.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk-angry.pxa/0.pxi
rename to desktop/asset-work/global/wizard/talk-angry.pxa/0.pxi
diff --git a/desktop/asset-work/wizard/talk-angry.pxa/1.pxi b/desktop/asset-work/global/wizard/talk-angry.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk-angry.pxa/1.pxi
rename to desktop/asset-work/global/wizard/talk-angry.pxa/1.pxi
diff --git a/desktop/asset-work/wizard/talk-angry.pxa/2.pxi b/desktop/asset-work/global/wizard/talk-angry.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk-angry.pxa/2.pxi
rename to desktop/asset-work/global/wizard/talk-angry.pxa/2.pxi
diff --git a/desktop/asset-work/wizard/talk-angry.pxa/3.pxi b/desktop/asset-work/global/wizard/talk-angry.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk-angry.pxa/3.pxi
rename to desktop/asset-work/global/wizard/talk-angry.pxa/3.pxi
diff --git a/desktop/asset-work/wizard/talk-angry.pxa/CelData.plist b/desktop/asset-work/global/wizard/talk-angry.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/wizard/talk-angry.pxa/CelData.plist
rename to desktop/asset-work/global/wizard/talk-angry.pxa/CelData.plist
diff --git a/desktop/asset-work/wizard/talk.png b/desktop/asset-work/global/wizard/talk.png
similarity index 100%
rename from desktop/asset-work/wizard/talk.png
rename to desktop/asset-work/global/wizard/talk.png
diff --git a/desktop/asset-work/wizard/talk.pxa/0.pxi b/desktop/asset-work/global/wizard/talk.pxa/0.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk.pxa/0.pxi
rename to desktop/asset-work/global/wizard/talk.pxa/0.pxi
diff --git a/desktop/asset-work/wizard/talk.pxa/1.pxi b/desktop/asset-work/global/wizard/talk.pxa/1.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk.pxa/1.pxi
rename to desktop/asset-work/global/wizard/talk.pxa/1.pxi
diff --git a/desktop/asset-work/wizard/talk.pxa/2.pxi b/desktop/asset-work/global/wizard/talk.pxa/2.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk.pxa/2.pxi
rename to desktop/asset-work/global/wizard/talk.pxa/2.pxi
diff --git a/desktop/asset-work/wizard/talk.pxa/3.pxi b/desktop/asset-work/global/wizard/talk.pxa/3.pxi
similarity index 100%
rename from desktop/asset-work/wizard/talk.pxa/3.pxi
rename to desktop/asset-work/global/wizard/talk.pxa/3.pxi
diff --git a/desktop/asset-work/wizard/talk.pxa/CelData.plist b/desktop/asset-work/global/wizard/talk.pxa/CelData.plist
similarity index 100%
rename from desktop/asset-work/wizard/talk.pxa/CelData.plist
rename to desktop/asset-work/global/wizard/talk.pxa/CelData.plist
diff --git a/desktop/asset-work/wizard.png b/desktop/asset-work/global/wizard/wizard.png
similarity index 100%
rename from desktop/asset-work/wizard.png
rename to desktop/asset-work/global/wizard/wizard.png
diff --git a/desktop/asset-work/held/bloodclot-head-1.png b/desktop/asset-work/held/bloodclot-head_0.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-1.png
rename to desktop/asset-work/held/bloodclot-head_0.png
diff --git a/desktop/asset-work/held/bloodclot-head-2.png b/desktop/asset-work/held/bloodclot-head_1.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-2.png
rename to desktop/asset-work/held/bloodclot-head_1.png
diff --git a/desktop/asset-work/held/bloodclot-head-3.png b/desktop/asset-work/held/bloodclot-head_2.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-3.png
rename to desktop/asset-work/held/bloodclot-head_2.png
diff --git a/desktop/asset-work/held/bloodclot-head-4.png b/desktop/asset-work/held/bloodclot-head_3.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-4.png
rename to desktop/asset-work/held/bloodclot-head_3.png
diff --git a/desktop/asset-work/held/bloodclot-head-5.png b/desktop/asset-work/held/bloodclot-head_4.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-5.png
rename to desktop/asset-work/held/bloodclot-head_4.png
diff --git a/desktop/asset-work/held/bloodclot-head-6.png b/desktop/asset-work/held/bloodclot-head_5.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-6.png
rename to desktop/asset-work/held/bloodclot-head_5.png
diff --git a/desktop/asset-work/held/bloodclot-head-7.png b/desktop/asset-work/held/bloodclot-head_6.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-7.png
rename to desktop/asset-work/held/bloodclot-head_6.png
diff --git a/desktop/asset-work/held/bloodclot-head-8.png b/desktop/asset-work/held/bloodclot-head_7.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-8.png
rename to desktop/asset-work/held/bloodclot-head_7.png
diff --git a/desktop/asset-work/held/bloodclot-head-9.png b/desktop/asset-work/held/bloodclot-head_8.png
similarity index 100%
rename from desktop/asset-work/held/bloodclot-head-9.png
rename to desktop/asset-work/held/bloodclot-head_8.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-1.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_0.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-1.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_0.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-2.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_1.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-2.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_1.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-11.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_10.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-11.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_10.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-12.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_11.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-12.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_11.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-13.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_12.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-13.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_12.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-14.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_13.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-14.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_13.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-3.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_2.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-3.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_2.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-4.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_3.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-4.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_3.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-5.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_4.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-5.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_4.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-6.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_5.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-6.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_5.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-7.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_6.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-7.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_6.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-8.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_7.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-8.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_7.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-9.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_8.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-9.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_8.png
diff --git a/desktop/asset-work/inside-cafeteria/fight-new-assets/fight-10.png b/desktop/asset-work/inside-cafeteria/fight-new-assets/fight_9.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/fight-new-assets/fight-10.png
rename to desktop/asset-work/inside-cafeteria/fight-new-assets/fight_9.png
diff --git a/desktop/asset-work/inside-cafeteria/fight.png b/desktop/asset-work/inside-cafeteria/fight.png
deleted file mode 100644
index 95028aa0..00000000
Binary files a/desktop/asset-work/inside-cafeteria/fight.png and /dev/null differ
diff --git a/desktop/asset-work/inside-cafeteria/hands-fight-3.png b/desktop/asset-work/inside-cafeteria/hands-fight-3.png
deleted file mode 100644
index e775be21..00000000
Binary files a/desktop/asset-work/inside-cafeteria/hands-fight-3.png and /dev/null differ
diff --git a/desktop/asset-work/inside-cafeteria/hands-fight-4.png b/desktop/asset-work/inside-cafeteria/hands-fight-4.png
deleted file mode 100644
index 7fd87fb9..00000000
Binary files a/desktop/asset-work/inside-cafeteria/hands-fight-4.png and /dev/null differ
diff --git a/desktop/asset-work/inside-cafeteria/hands-fight-7.png b/desktop/asset-work/inside-cafeteria/hands-fight-7.png
deleted file mode 100644
index 429722f9..00000000
Binary files a/desktop/asset-work/inside-cafeteria/hands-fight-7.png and /dev/null differ
diff --git a/desktop/asset-work/inside-cafeteria/pack.json b/desktop/asset-work/inside-cafeteria/pack.json
new file mode 100644
index 00000000..0faf94db
--- /dev/null
+++ b/desktop/asset-work/inside-cafeteria/pack.json
@@ -0,0 +1,36 @@
+{
+ pot: true,
+ paddingX: 2,
+ paddingY: 2,
+ bleed: true,
+ edgePadding: true,
+ duplicatePadding: false,
+ rotation: false,
+ minWidth: 128,
+ minHeight: 128,
+ maxWidth: 1024,
+ maxHeight: 1024,
+ square: false,
+ stripWhitespaceX: false,
+ stripWhitespaceY: false,
+ alphaThreshold: -1,
+ filterMin: Nearest,
+ filterMag: Nearest,
+ wrapX: ClampToEdge,
+ wrapY: ClampToEdge,
+ format: RGBA4444,
+ alias: true,
+ outputFormat: png,
+ jpegQuality: 0.9,
+ ignoreBlankImages: true,
+ fast: false,
+ debug: false,
+ combineSubdirectories: true,
+ flattenPaths: false,
+ premultiplyAlpha: false,
+ useIndexes: true,
+ limitMemory: true,
+ grid: false,
+ scale: [ 1 ],
+ scaleSuffix: [ "" ]
+}
diff --git a/desktop/asset-work/inside-cafeteria/warriors-stand.png b/desktop/asset-work/inside-cafeteria/warriors-stand.png
deleted file mode 100644
index ac54ac4d..00000000
Binary files a/desktop/asset-work/inside-cafeteria/warriors-stand.png and /dev/null differ
diff --git a/desktop/asset-work/inside-cafeteria/warriors.png b/desktop/asset-work/inside-cafeteria/warriors.png
deleted file mode 100644
index ed2b3a6e..00000000
Binary files a/desktop/asset-work/inside-cafeteria/warriors.png and /dev/null differ
diff --git a/desktop/asset-work/inside-castle/fight-1.png b/desktop/asset-work/inside-castle/fight-1.png
deleted file mode 100644
index 0c784829..00000000
Binary files a/desktop/asset-work/inside-castle/fight-1.png and /dev/null differ
diff --git a/desktop/asset-work/inside-castle/hands-1.png b/desktop/asset-work/inside-castle/hands-1.png
deleted file mode 100644
index 83201612..00000000
Binary files a/desktop/asset-work/inside-castle/hands-1.png and /dev/null differ
diff --git a/desktop/asset-work/inside-castle/hands-fight.png b/desktop/asset-work/inside-castle/hands-fight.png
deleted file mode 100644
index 0d21ce9d..00000000
Binary files a/desktop/asset-work/inside-castle/hands-fight.png and /dev/null differ
diff --git a/desktop/asset-work/inside-castle/sign-1.png b/desktop/asset-work/inside-castle/sign_0.png
similarity index 100%
rename from desktop/asset-work/inside-castle/sign-1.png
rename to desktop/asset-work/inside-castle/sign_0.png
diff --git a/desktop/asset-work/inside-castle/sign-2.png b/desktop/asset-work/inside-castle/sign_1.png
similarity index 100%
rename from desktop/asset-work/inside-castle/sign-2.png
rename to desktop/asset-work/inside-castle/sign_1.png
diff --git a/desktop/asset-work/inside-castle/sign-3.png b/desktop/asset-work/inside-castle/sign_2.png
similarity index 100%
rename from desktop/asset-work/inside-castle/sign-3.png
rename to desktop/asset-work/inside-castle/sign_2.png
diff --git a/desktop/asset-work/inside-cafeteria/hands-fight-5.png b/desktop/asset-work/inside-jail/candle-aura.png
similarity index 65%
rename from desktop/asset-work/inside-cafeteria/hands-fight-5.png
rename to desktop/asset-work/inside-jail/candle-aura.png
index 4631c783..d183821d 100644
Binary files a/desktop/asset-work/inside-cafeteria/hands-fight-5.png and b/desktop/asset-work/inside-jail/candle-aura.png differ
diff --git a/desktop/asset-work/inside-cafeteria/hands-fight-2.png b/desktop/asset-work/inside-stash/candle-aura.png
similarity index 65%
rename from desktop/asset-work/inside-cafeteria/hands-fight-2.png
rename to desktop/asset-work/inside-stash/candle-aura.png
index 700b07b9..d183821d 100644
Binary files a/desktop/asset-work/inside-cafeteria/hands-fight-2.png and b/desktop/asset-work/inside-stash/candle-aura.png differ
diff --git a/desktop/asset-work/intro.wav b/desktop/asset-work/intro.wav
deleted file mode 100644
index 91790100..00000000
Binary files a/desktop/asset-work/intro.wav and /dev/null differ
diff --git a/desktop/asset-work/inventory.png b/desktop/asset-work/inventory.png
deleted file mode 100644
index 081412eb..00000000
Binary files a/desktop/asset-work/inventory.png and /dev/null differ
diff --git a/desktop/asset-work/outside-castle/flies.png b/desktop/asset-work/outside-castle/flies.png
index 6e5b5bdb..12a0dfed 100644
Binary files a/desktop/asset-work/outside-castle/flies.png and b/desktop/asset-work/outside-castle/flies.png differ
diff --git a/desktop/asset-work/inside-cafeteria/ladder-guard.png b/desktop/asset-work/outside-jail/guard.png
similarity index 100%
rename from desktop/asset-work/inside-cafeteria/ladder-guard.png
rename to desktop/asset-work/outside-jail/guard.png
diff --git a/desktop/asset-work/outsidehouse/butterfly.png b/desktop/asset-work/outsidehouse/butterfly.png
new file mode 100644
index 00000000..7b6e0439
Binary files /dev/null and b/desktop/asset-work/outsidehouse/butterfly.png differ
diff --git a/desktop/asset-work/outsidehouse/charcoal-2.png b/desktop/asset-work/outsidehouse/charcoal_0.png
similarity index 81%
rename from desktop/asset-work/outsidehouse/charcoal-2.png
rename to desktop/asset-work/outsidehouse/charcoal_0.png
index 38e8278f..0a3b2702 100644
Binary files a/desktop/asset-work/outsidehouse/charcoal-2.png and b/desktop/asset-work/outsidehouse/charcoal_0.png differ
diff --git a/desktop/asset-work/outsidehouse/charcoal-3.png b/desktop/asset-work/outsidehouse/charcoal_1.png
similarity index 81%
rename from desktop/asset-work/outsidehouse/charcoal-3.png
rename to desktop/asset-work/outsidehouse/charcoal_1.png
index 5626f71f..5d5211ed 100644
Binary files a/desktop/asset-work/outsidehouse/charcoal-3.png and b/desktop/asset-work/outsidehouse/charcoal_1.png differ
diff --git a/desktop/asset-work/outsidehouse/charcoal-1.png b/desktop/asset-work/outsidehouse/charcoal_2.png
similarity index 81%
rename from desktop/asset-work/outsidehouse/charcoal-1.png
rename to desktop/asset-work/outsidehouse/charcoal_2.png
index cd5e9dd4..7bad9a6e 100644
Binary files a/desktop/asset-work/outsidehouse/charcoal-1.png and b/desktop/asset-work/outsidehouse/charcoal_2.png differ
diff --git a/desktop/asset-work/outsidehouse/charcoal-4.png b/desktop/asset-work/outsidehouse/charcoal_3.png
similarity index 82%
rename from desktop/asset-work/outsidehouse/charcoal-4.png
rename to desktop/asset-work/outsidehouse/charcoal_3.png
index 035f456f..62173a1b 100644
Binary files a/desktop/asset-work/outsidehouse/charcoal-4.png and b/desktop/asset-work/outsidehouse/charcoal_3.png differ
diff --git a/desktop/asset-work/outsidehouse/pack.json b/desktop/asset-work/outsidehouse/pack.json
new file mode 100644
index 00000000..0faf94db
--- /dev/null
+++ b/desktop/asset-work/outsidehouse/pack.json
@@ -0,0 +1,36 @@
+{
+ pot: true,
+ paddingX: 2,
+ paddingY: 2,
+ bleed: true,
+ edgePadding: true,
+ duplicatePadding: false,
+ rotation: false,
+ minWidth: 128,
+ minHeight: 128,
+ maxWidth: 1024,
+ maxHeight: 1024,
+ square: false,
+ stripWhitespaceX: false,
+ stripWhitespaceY: false,
+ alphaThreshold: -1,
+ filterMin: Nearest,
+ filterMag: Nearest,
+ wrapX: ClampToEdge,
+ wrapY: ClampToEdge,
+ format: RGBA4444,
+ alias: true,
+ outputFormat: png,
+ jpegQuality: 0.9,
+ ignoreBlankImages: true,
+ fast: false,
+ debug: false,
+ combineSubdirectories: true,
+ flattenPaths: false,
+ premultiplyAlpha: false,
+ useIndexes: true,
+ limitMemory: true,
+ grid: false,
+ scale: [ 1 ],
+ scaleSuffix: [ "" ]
+}
diff --git a/desktop/asset-work/pack.json b/desktop/asset-work/pack.json
index b8370f92..0faf94db 100644
--- a/desktop/asset-work/pack.json
+++ b/desktop/asset-work/pack.json
@@ -6,19 +6,19 @@
edgePadding: true,
duplicatePadding: false,
rotation: false,
- minWidth: 1024,
- minHeight: 1024,
- maxWidth: 2048,
- maxHeight: 2048,
+ minWidth: 128,
+ minHeight: 128,
+ maxWidth: 1024,
+ maxHeight: 1024,
square: false,
stripWhitespaceX: false,
stripWhitespaceY: false,
- alphaThreshold: 0,
+ alphaThreshold: -1,
filterMin: Nearest,
filterMag: Nearest,
wrapX: ClampToEdge,
wrapY: ClampToEdge,
- format: RGBA8888,
+ format: RGBA4444,
alias: true,
outputFormat: png,
jpegQuality: 0.9,
diff --git a/desktop/asset-work/space/bloodclot-explode-1.png b/desktop/asset-work/space/bloodclot-explode_0.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-1.png
rename to desktop/asset-work/space/bloodclot-explode_0.png
diff --git a/desktop/asset-work/space/bloodclot-explode-2.png b/desktop/asset-work/space/bloodclot-explode_1.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-2.png
rename to desktop/asset-work/space/bloodclot-explode_1.png
diff --git a/desktop/asset-work/space/bloodclot-explode-11.png b/desktop/asset-work/space/bloodclot-explode_10.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-11.png
rename to desktop/asset-work/space/bloodclot-explode_10.png
diff --git a/desktop/asset-work/space/bloodclot-explode-12.png b/desktop/asset-work/space/bloodclot-explode_11.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-12.png
rename to desktop/asset-work/space/bloodclot-explode_11.png
diff --git a/desktop/asset-work/space/bloodclot-explode-13.png b/desktop/asset-work/space/bloodclot-explode_12.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-13.png
rename to desktop/asset-work/space/bloodclot-explode_12.png
diff --git a/desktop/asset-work/space/bloodclot-explode-14.png b/desktop/asset-work/space/bloodclot-explode_13.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-14.png
rename to desktop/asset-work/space/bloodclot-explode_13.png
diff --git a/desktop/asset-work/space/bloodclot-explode-15.png b/desktop/asset-work/space/bloodclot-explode_14.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-15.png
rename to desktop/asset-work/space/bloodclot-explode_14.png
diff --git a/desktop/asset-work/space/bloodclot-explode-16.png b/desktop/asset-work/space/bloodclot-explode_15.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-16.png
rename to desktop/asset-work/space/bloodclot-explode_15.png
diff --git a/desktop/asset-work/space/bloodclot-explode-17.png b/desktop/asset-work/space/bloodclot-explode_16.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-17.png
rename to desktop/asset-work/space/bloodclot-explode_16.png
diff --git a/desktop/asset-work/space/bloodclot-explode-18.png b/desktop/asset-work/space/bloodclot-explode_17.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-18.png
rename to desktop/asset-work/space/bloodclot-explode_17.png
diff --git a/desktop/asset-work/space/bloodclot-explode-19.png b/desktop/asset-work/space/bloodclot-explode_18.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-19.png
rename to desktop/asset-work/space/bloodclot-explode_18.png
diff --git a/desktop/asset-work/space/bloodclot-explode-20.png b/desktop/asset-work/space/bloodclot-explode_19.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-20.png
rename to desktop/asset-work/space/bloodclot-explode_19.png
diff --git a/desktop/asset-work/space/bloodclot-explode-3.png b/desktop/asset-work/space/bloodclot-explode_2.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-3.png
rename to desktop/asset-work/space/bloodclot-explode_2.png
diff --git a/desktop/asset-work/space/bloodclot-explode-21.png b/desktop/asset-work/space/bloodclot-explode_20.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-21.png
rename to desktop/asset-work/space/bloodclot-explode_20.png
diff --git a/desktop/asset-work/space/bloodclot-explode-22.png b/desktop/asset-work/space/bloodclot-explode_21.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-22.png
rename to desktop/asset-work/space/bloodclot-explode_21.png
diff --git a/desktop/asset-work/space/bloodclot-explode-23.png b/desktop/asset-work/space/bloodclot-explode_22.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-23.png
rename to desktop/asset-work/space/bloodclot-explode_22.png
diff --git a/desktop/asset-work/space/bloodclot-explode-4.png b/desktop/asset-work/space/bloodclot-explode_3.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-4.png
rename to desktop/asset-work/space/bloodclot-explode_3.png
diff --git a/desktop/asset-work/space/bloodclot-explode-5.png b/desktop/asset-work/space/bloodclot-explode_4.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-5.png
rename to desktop/asset-work/space/bloodclot-explode_4.png
diff --git a/desktop/asset-work/space/bloodclot-explode-6.png b/desktop/asset-work/space/bloodclot-explode_5.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-6.png
rename to desktop/asset-work/space/bloodclot-explode_5.png
diff --git a/desktop/asset-work/space/bloodclot-explode-7.png b/desktop/asset-work/space/bloodclot-explode_6.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-7.png
rename to desktop/asset-work/space/bloodclot-explode_6.png
diff --git a/desktop/asset-work/space/bloodclot-explode-8.png b/desktop/asset-work/space/bloodclot-explode_7.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-8.png
rename to desktop/asset-work/space/bloodclot-explode_7.png
diff --git a/desktop/asset-work/space/bloodclot-explode-9.png b/desktop/asset-work/space/bloodclot-explode_8.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-9.png
rename to desktop/asset-work/space/bloodclot-explode_8.png
diff --git a/desktop/asset-work/space/bloodclot-explode-10.png b/desktop/asset-work/space/bloodclot-explode_9.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-explode-10.png
rename to desktop/asset-work/space/bloodclot-explode_9.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-1.png b/desktop/asset-work/space/bloodclot-head-talk_0.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-1.png
rename to desktop/asset-work/space/bloodclot-head-talk_0.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-2.png b/desktop/asset-work/space/bloodclot-head-talk_1.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-2.png
rename to desktop/asset-work/space/bloodclot-head-talk_1.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-11.png b/desktop/asset-work/space/bloodclot-head-talk_10.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-11.png
rename to desktop/asset-work/space/bloodclot-head-talk_10.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-12.png b/desktop/asset-work/space/bloodclot-head-talk_11.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-12.png
rename to desktop/asset-work/space/bloodclot-head-talk_11.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-13.png b/desktop/asset-work/space/bloodclot-head-talk_12.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-13.png
rename to desktop/asset-work/space/bloodclot-head-talk_12.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-14.png b/desktop/asset-work/space/bloodclot-head-talk_13.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-14.png
rename to desktop/asset-work/space/bloodclot-head-talk_13.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-3.png b/desktop/asset-work/space/bloodclot-head-talk_2.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-3.png
rename to desktop/asset-work/space/bloodclot-head-talk_2.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-4.png b/desktop/asset-work/space/bloodclot-head-talk_3.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-4.png
rename to desktop/asset-work/space/bloodclot-head-talk_3.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-5.png b/desktop/asset-work/space/bloodclot-head-talk_4.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-5.png
rename to desktop/asset-work/space/bloodclot-head-talk_4.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-6.png b/desktop/asset-work/space/bloodclot-head-talk_5.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-6.png
rename to desktop/asset-work/space/bloodclot-head-talk_5.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-7.png b/desktop/asset-work/space/bloodclot-head-talk_6.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-7.png
rename to desktop/asset-work/space/bloodclot-head-talk_6.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-8.png b/desktop/asset-work/space/bloodclot-head-talk_7.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-8.png
rename to desktop/asset-work/space/bloodclot-head-talk_7.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-9.png b/desktop/asset-work/space/bloodclot-head-talk_8.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-9.png
rename to desktop/asset-work/space/bloodclot-head-talk_8.png
diff --git a/desktop/asset-work/space/bloodclot-head-talk-10.png b/desktop/asset-work/space/bloodclot-head-talk_9.png
similarity index 100%
rename from desktop/asset-work/space/bloodclot-head-talk-10.png
rename to desktop/asset-work/space/bloodclot-head-talk_9.png
diff --git a/desktop/asset-work/splash/POPPixelLogo_02_00.png b/desktop/asset-work/splash/POPPixelLogo_02_00.png
new file mode 100644
index 00000000..d782bec7
Binary files /dev/null and b/desktop/asset-work/splash/POPPixelLogo_02_00.png differ
diff --git a/desktop/asset-work/inside-cafeteria/hands-fight-1.png b/desktop/asset-work/splash/dbh.png
similarity index 66%
rename from desktop/asset-work/inside-cafeteria/hands-fight-1.png
rename to desktop/asset-work/splash/dbh.png
index 83263b7b..2051950b 100644
Binary files a/desktop/asset-work/inside-cafeteria/hands-fight-1.png and b/desktop/asset-work/splash/dbh.png differ
diff --git a/desktop/asset-work/title/pack.json b/desktop/asset-work/title/pack.json
new file mode 100644
index 00000000..0faf94db
--- /dev/null
+++ b/desktop/asset-work/title/pack.json
@@ -0,0 +1,36 @@
+{
+ pot: true,
+ paddingX: 2,
+ paddingY: 2,
+ bleed: true,
+ edgePadding: true,
+ duplicatePadding: false,
+ rotation: false,
+ minWidth: 128,
+ minHeight: 128,
+ maxWidth: 1024,
+ maxHeight: 1024,
+ square: false,
+ stripWhitespaceX: false,
+ stripWhitespaceY: false,
+ alphaThreshold: -1,
+ filterMin: Nearest,
+ filterMag: Nearest,
+ wrapX: ClampToEdge,
+ wrapY: ClampToEdge,
+ format: RGBA4444,
+ alias: true,
+ outputFormat: png,
+ jpegQuality: 0.9,
+ ignoreBlankImages: true,
+ fast: false,
+ debug: false,
+ combineSubdirectories: true,
+ flattenPaths: false,
+ premultiplyAlpha: false,
+ useIndexes: true,
+ limitMemory: true,
+ grid: false,
+ scale: [ 1 ],
+ scaleSuffix: [ "" ]
+}
diff --git a/desktop/build-app-store.sh b/desktop/build-app-store.sh
index 481c726c..16c57b20 100755
--- a/desktop/build-app-store.sh
+++ b/desktop/build-app-store.sh
@@ -1,4 +1,4 @@
-/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/javapackager -deploy \
+/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/javapackager -deploy \
-native \
-name "Tick's Tales" \
-outdir "./target/appstore/" -outfile "Tick's Tales" \
diff --git a/desktop/build-osx-mobilesim.json b/desktop/build-osx-mobilesim.json
new file mode 100644
index 00000000..a038384b
--- /dev/null
+++ b/desktop/build-osx-mobilesim.json
@@ -0,0 +1,12 @@
+{
+ "platform": "mac",
+ "jdk": "/Users/brycecovert/dev/jvms/jre1.8.0_112.jre/Contents/jre.zip",
+ "executable": "Tick's Tales",
+ "vmargs": ["-Dui_scale=1.5"],
+ "classpath": ["target/advent-standalone.jar"],
+ "mainclass": "advent.core.desktop_launcher",
+ "resources": ["resources/icon", "steam_appid.txt"],
+ "minimizejre": "oraclejre8",
+ "output": "target/osx-mobilesim/Tick's Tales.app",
+ "bundleidentifier": "com.tickstales.upallknight"
+}
diff --git a/desktop/build-osx.json b/desktop/build-osx.json
index e3b777c3..67ca9bc2 100644
--- a/desktop/build-osx.json
+++ b/desktop/build-osx.json
@@ -1,11 +1,13 @@
{
"platform": "mac",
- "jdk": "/Users/brycecovert/dev/jvms/jre1.7.0_80.jre/Contents/Home/Archive.zip",
+ "jdk": "/Users/brycecovert/dev/jvms/jre1.8.0_112.jre/Contents/jre.zip",
"executable": "Tick's Tales",
- "vmargs": ["-verbose"],
- "appjar": "target/advent-standalone.jar",
- "mainclass": "advent/core/desktop_launcher",
+ "vmargs": ["-Dui_scale=1.0"],
+ "classpath": ["target/advent-standalone.jar"],
+ "mainclass": "advent.core.desktop_launcher",
"resources": ["resources/icon", "steam_appid.txt"],
- "minimizejre": "soft",
- "outdir": "target/osx/Tick's Tales.app"
+ "minimizejre": "oraclejre8",
+ "output": "target/osx/Tick's Tales.app",
+ "bundle": "com.tickstales.upallknight",
+ "verbose": true
}
diff --git a/desktop/build-windows-mobilesim.json b/desktop/build-windows-mobilesim.json
new file mode 100644
index 00000000..4d0c9f7b
--- /dev/null
+++ b/desktop/build-windows-mobilesim.json
@@ -0,0 +1,11 @@
+{
+ "platform": "windows64",
+ "jdk": "/Users/brycecovert/Downloads/openjdk-1.7.0-u80-unofficial-windows-amd64-image.zip",
+ "executable": "TicksTales",
+ "classpath": ["target/advent-standalone.jar"],
+ "vmargs": ["-Dui_scale=1.5"],
+ "mainclass": "advent.core.desktop_launcher",
+ "resources": ["steam_appid.txt"],
+ "minimizejre": "soft",
+ "output": "target/windows-mobilesim/"
+}
diff --git a/desktop/build-windows.json b/desktop/build-windows.json
index 3e03ed2f..f9c325ae 100644
--- a/desktop/build-windows.json
+++ b/desktop/build-windows.json
@@ -1,10 +1,11 @@
{
- "platform": "windows",
- "jdk": "/Users/brycecovert/dev/jvms/openjdk-1.7.0-u80-unofficial-windows-i586-image.zip",
+ "platform": "windows64",
+ "vmargs": ["-Dui_scale=1.0"],
+ "jdk": "/Users/brycecovert/Downloads/openjdk-1.7.0-u80-unofficial-windows-amd64-image.zip",
"executable": "TicksTales",
- "appjar": "target/advent-standalone.jar",
- "mainclass": "advent/core/desktop_launcher",
+ "mainclass": "advent.core.desktop_launcher",
"resources": ["steam_appid.txt"],
+ "classpath": ["target/advent-standalone.jar"],
"minimizejre": "soft",
- "outdir": "target/windows/"
+ "output": "target/windows/"
}
diff --git a/desktop/build-zip.sh b/desktop/build-zip.sh
index 08dd7771..032f3497 100755
--- a/desktop/build-zip.sh
+++ b/desktop/build-zip.sh
@@ -6,11 +6,15 @@ cd target
# cp -r "/Users/brycecovert/Music/Tick's Tales OST" osx/OST
# cp -r "/Users/brycecovert/Music/Tick's Tales OST" windows/OST
mv osx "Tick's Tales - OS X"
+mv osx-mobilesim "Tick's Tales - OS X - Mobile Sim"
mv linux "Tick's Tales - Linux"
mv windows "Tick's Tales - Windows"
-zip -r linux-1.2.`cat ../last-release`.zip "Tick's Tales - Linux"
-zip -r osx-1.2.`cat ../last-release`.zip "Tick's Tales - OS X"
-zip -r windows-1.2.`cat ../last-release`.zip "Tick's Tales - Windows"
+mv windows-mobilesim "Tick's Tales - Windows - Mobile Sim"
+zip -r linux-2.0.`cat ../last-release`.zip "Tick's Tales - Linux"
+zip -r osx-2.0.`cat ../last-release`.zip "Tick's Tales - OS X"
+zip -r osx-mobilesim-2.0.`cat ../last-release`.zip "Tick's Tales - OS X - Mobile Sim"
+zip -r windows-2.0.`cat ../last-release`.zip "Tick's Tales - Windows"
+zip -r windows-mobilesim-2.0.`cat ../last-release`.zip "Tick's Tales - Windows - Mobile Sim"
popd
rm ~/Dropbox/TicksTalesBuilds/*.zip
cp target/*.zip ~/Dropbox/TicksTalesBuilds/
diff --git a/desktop/build.boot b/desktop/build.boot
new file mode 100644
index 00000000..f006017c
--- /dev/null
+++ b/desktop/build.boot
@@ -0,0 +1,21 @@
+(set-env! :dependencies '[[com.badlogicgames.gdx/gdx "1.9.3"]
+ [com.badlogicgames.gdx/gdx-backend-lwjgl "1.9.3"]
+ [com.badlogicgames.gdx/gdx-platform "1.9.3" :classifier "natives-desktop"]
+ [org.clojure/clojure "1.8.0"]
+ [play-clj "0.4.6-BRYCE"]
+ [log4j/log4j "1.2.16"]
+ [org.clojure/data.priority-map "0.0.5"]
+ [org.clojure/core.async "0.2.385"]
+ [org.clojure/tools.logging "0.3.1"]
+ [org.im4java/im4java "1.4.0"]]
+ :resource-paths #{"resources/"})
+
+(task-options! pom {:project 'advent
+ :version (str "2.0." (clojure.string/trim-newline (slurp "last-release")))}
+ aot {:namespace '#{advent.core}}
+ jar {:main 'advent.core.desktop-launcher
+ :file "advent-standalone.jar"})
+
+(deftask build
+ []
+ (comp (aot) (pom) (uber) (jar) (install)))
diff --git a/desktop/gametodos.txt b/desktop/gametodos.txt
index 2c58c6bc..4d16da53 100644
--- a/desktop/gametodos.txt
+++ b/desktop/gametodos.txt
@@ -1,41 +1,5 @@
-ART
-+ Update all collisions
+MOBILE
-PROGRAMMING
-+ try to have dialogue for every wrong interaction
-+ preload all sounds
-+ behind house left direction not great
-+ magic sound busted when fading music in
-+ brian goes down after wrong item
+Desktop buttons are wrong size
+loading image?
-IOS
-+ all mp3s
-+ pngcrush breaks colors
-+ renable pickup sound once it's been replaced
-+ update-override slow on IOS
-
-AUDIO
- + scratch
- + magic hands
- + gandarf explosion
- + crying
- + cat
- + strength potion
- + cafe sound
- + milking
- + antique sigh
- + bloodclot grunt
- + bloodclot explode
- + crowbar
- + get sick
- + sigh
- + jump
- + chop wood
- + step backwards creep
- + shoot slinger's
- + new music for night
-
-
-+ EDGES
- + Gandarf magic handskkk
- + arm wrestle
diff --git a/desktop/inv-todo.txt b/desktop/inv-todo.txt
new file mode 100644
index 00000000..e411a991
--- /dev/null
+++ b/desktop/inv-todo.txt
@@ -0,0 +1,7 @@
+make sure to dissoc, sometimes item still appears hovering
+cursor starting in the black not being valid
+sound duration on android
+choosing interaction feels wrong - flies hard to touch
+change hotspots as necessary
+delay in update with label causes jumpiness
+
diff --git a/desktop/packr.jar b/desktop/packr.jar
index 312d19a0..579a1404 100644
Binary files a/desktop/packr.jar and b/desktop/packr.jar differ
diff --git a/desktop/pom.xml b/desktop/pom.xml
index cb3e6588..f802c26b 100644
--- a/desktop/pom.xml
+++ b/desktop/pom.xml
@@ -3,7 +3,7 @@
advent
advent
jar
- 0.0.1-SNAPSHOT
+ 2.0.5-SNAPSHOT
advent
FIXME: write description
@@ -15,9 +15,6 @@
-
- dev-resources
-
resources
@@ -68,71 +65,45 @@
+
+
+
com.badlogicgames.gdx
gdx
- 1.5.3
+ 1.9.4
com.badlogicgames.gdx
gdx-backend-lwjgl
- 1.5.3
-
-
- com.badlogicgames.gdx
- gdx-box2d
- 1.5.3
-
-
- com.badlogicgames.gdx
- gdx-tools
- 1.5.3
-
-
- com.badlogicgames.gdx
- gdx-box2d-platform
- 1.5.3
- natives-desktop
-
-
- com.badlogicgames.gdx
- gdx-bullet
- 1.5.3
-
-
- com.badlogicgames.gdx
- gdx-bullet-platform
- 1.5.3
- natives-desktop
+ 1.9.4
com.badlogicgames.gdx
gdx-platform
- 1.5.3
+ 1.9.4
natives-desktop
org.clojure
clojure
- 1.6.0
+ 1.8.0
- org.clojure
- tools.nrepl
- 0.2.6
-
-
- org.clojure
- clojure
-
-
- test
+ org.clojars.notid
+ tools.logging
+ 0.3.2-SNAPSHOT
play-clj
play-clj
- 0.4.5-BRYCE
+ 0.4.6-BRYCE
+
+
+ log4j
+ log4j
+ 1.2.16
org.clojure
@@ -142,20 +113,44 @@
org.clojure
core.async
- 0.1.338.0-5c5012-alpha
+ 0.2.385
- clojure-complete
- clojure-complete
- 0.2.3
+ com.badlogicgames.gdx
+ gdx-tools
+ 1.5.3
+ test
+
+
+ org.clojure
+ tools.nrepl
+ 0.2.12
+ test
+
+
+ play-clj-nrepl
+ play-clj-nrepl
+ 0.1.0
- org.clojure
- clojure
+ play-clj
+ play-clj
test
+
+ slamhound
+ slamhound
+ 1.5.5
+ test
+
+
+ org.clojure
+ data.csv
+ 0.1.3
+ test
+
diff --git a/desktop/project.clj b/desktop/project.clj
index ad4ffdea..cc1ead49 100644
--- a/desktop/project.clj
+++ b/desktop/project.clj
@@ -1,49 +1,77 @@
-(def version (str "1.2." (clojure.string/trim-newline (slurp "last-release"))))
+(def version (str "2.0." (clojure.string/trim-newline (slurp "last-release")) "-snapshot"))
+(def packs (into ["do"]
+ (mapcat (fn [directory]
+ ["run" "-m" "com.badlogic.gdx.tools.texturepacker.TexturePacker" (str "asset-work/" directory) "resources/packed/" (str directory ",")])
+ ["global" "ending-castle"]
+ #_["behindhouse" "dream" "georgia" "inside-cafeteria" "inside-jail" "outsidehouse" "safe-song" "title"
+ "castle-gate" "ego" "held" "inside-castle" "inside-stash" "outside-castle" "screenshots" "wizard"
+ "cat-tree" "ending-castle" "inside-antique" "inside-house" "outside-jail" "space" ])))
+;; behindhouse/ dream/ georgia/ inside-cafeteria/ inside-jail/ open-inventory.pxa/ outsidehouse/ safe-song/ title/
+;; castle-gate/ ego/ held/ inside-castle/ inside-stash/ outside-castle/ right.pxa/ screenshots/ wizard/
+;; cat-tree/ ending-castle/ inside-antique/ inside-house/ left.pxa/ outside-jail/ safe-song.pxa/ space/
-(defproject advent version
+
+(defproject advent "2.0.5-SNAPSHOT"
:description "FIXME: write description"
:manifest {"Implementation-Version" ~version}
:uberjar-name "advent-standalone.jar"
- :dependencies [[com.badlogicgames.gdx/gdx "1.5.3"]
- [com.badlogicgames.gdx/gdx-backend-lwjgl "1.5.3"]
- [com.badlogicgames.gdx/gdx-platform "1.5.3" :classifier "natives-desktop"]
- [org.clojure/clojure "1.6.0"]
- [play-clj "0.4.5-BRYCE"]
+ :dependencies [[com.badlogicgames.gdx/gdx "1.9.4"]
+ [com.badlogicgames.gdx/gdx-backend-lwjgl "1.9.4"]
+ [com.badlogicgames.gdx/gdx-platform "1.9.4" :classifier "natives-desktop"]
+ [org.clojure/clojure "1.8.0"]
+ [org.clojars.notid/tools.logging "0.3.2-SNAPSHOT"]
+ [play-clj "0.4.6-BRYCE"]
[log4j/log4j "1.2.16"]
[org.clojure/data.priority-map "0.0.5"]
- [org.clojure/core.async "0.1.338.0-5c5012-alpha"]
- [org.clojure/tools.logging "0.3.1"]
- [org.im4java/im4java "1.4.0"]]
+ [org.clojure/core.async "0.2.385"]]
+
:source-paths ["src" "src-common"]
:javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
:omit-source true
- :aliases {"pack" ["run" "-m" "com.badlogic.gdx.tools.texturepacker.TexturePacker" "asset-work/" "resources/packed/"]
+ :aliases {"pack" ~packs
+ "ultrapack" ["run" "-m" "com.badlogic.gdx.tools.texturepacker.TexturePacker" "asset-work/" "resources/packed/"]
"pack-pop" ["run" "-m" "com.badlogic.gdx.tools.texturepacker.TexturePacker"
- "/Users/brycecovert/Documents/POPPixelLogo_Pack/POPPixelLogo2_PNG/processed" "resources/packed-pop-logo/"]
+ "/Users/brycecovert/Downloads/processed" "resources/packed-pop-logo/"]
"pack-font" ["run" "-m" "com.badlogic.gdx.tools.texturepacker.TexturePacker" "resources/font-pack/" "resources/font-pack/packed/"]
"script" ["run" "-m" "advent.analyze/dump-speech"]}
:profiles {
+ :uberjar {
+ :jvm-opts ["-Duse-repl=false" "-Dui_scale=1.0" "-Dno-steam=true" "-Dclojure.compiler.direct-linking=true" "-Dis-desktop=true"]
+ :aot :all
+ }
:dev {
:source-paths ["src" "src-common" "src-dev"]
- :jvm-opts ["-Duse-repl=true" "-Dno-steam=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.7"]
+ [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}
- :app-store {
+ :mobile-dev {
:source-paths ["src" "src-common" "src-dev"]
- :jvm-opts ["-Dapp-store=true" "-Dno-steam=true"]
- :dependencies [[org.clojure/data.csv "0.1.3"]]
+ :jvm-opts ["-Duse-repl=true" "-Dui_scale=1.5" "-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}
+ :app-store {
+ :source-paths ["src" "src-common" "src-dev"]
+ :jvm-opts ["-Dapp-store=true" "-Dui_scale=1.0" "-Dno-steam=true" "-Dis-desktop=true"]
+
+ :aot :all
:warn-on-reflection true}
- :steam {:dependencies [[com.code-disaster.steamworks4j/steamworks4j "1.2.2"]]}
+ :steam {:dependencies [[com.code-disaster.steamworks4j/steamworks4j "1.2.2"]]
+ :jvm-opts ["-Dis-desktop=true" "-Dui_scale=1.0" ]}
:steam-dev {
:source-paths ["src" "src-common" "src-dev"]
- :jvm-opts ["-Duse-repl=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]]
@@ -51,6 +79,7 @@
[org.clojure/data.csv "0.1.3"]
[com.code-disaster.steamworks4j/steamworks4j "1.2.2"]]
+ :aot :all
:warn-on-reflection true}
}
:aot [advent.core.desktop-launcher]
diff --git a/desktop/release-non-steam.sh b/desktop/release-non-steam.sh
index 14aed710..30407914 100755
--- a/desktop/release-non-steam.sh
+++ b/desktop/release-non-steam.sh
@@ -1,8 +1,11 @@
#!/bin/bash
lein do clean, compile, uberjar
java -jar packr.jar build-windows.json
+java -jar packr.jar build-windows-mobilesim.json
java -jar packr.jar build-osx.json
-java -jar packr.jar build-linux-32.json
-java -jar packr.jar build-linux-64.json
+java -jar packr.jar build-osx-mobilesim.json
+# java -jar packr.jar build-linux-32.json
+# java -jar packr.jar build-linux-64.json
cp icons.icns target/osx/Tick\'s\ Tales.app/Contents/Resources/
+cp icons.icns target/osx-mobilesim/Tick\'s\ Tales.app/Contents/Resources/
diff --git a/desktop/release-notes.md b/desktop/release-notes.md
index 91c53904..2b55c8cc 100644
--- a/desktop/release-notes.md
+++ b/desktop/release-notes.md
@@ -1,3 +1,12 @@
+1.2
+* Fixed typo from warden
+* Added steam achievement Eye of the Beholder
+* Larger hotspot for monocle
+* Better owl responses for flasks (should omit this one from public)
+* Force you to read the voting survey first
+* Can't tell Frankie you found the stash after reacquiring slingshot
+* Fixed crash from using flask on itself
+
1.1.6
* Fixed issue with mints eaten count being reset
* Added a music staff to correspond with the safe
diff --git a/desktop/resources/blink-other.ogg.mp3 b/desktop/resources/blink-other.ogg.mp3
index 761eb068..17f8d008 100644
Binary files a/desktop/resources/blink-other.ogg.mp3 and b/desktop/resources/blink-other.ogg.mp3 differ
diff --git a/desktop/resources/blink.ogg.mp3 b/desktop/resources/blink.ogg.mp3
index 291751f2..04b76ea1 100644
Binary files a/desktop/resources/blink.ogg.mp3 and b/desktop/resources/blink.ogg.mp3 differ
diff --git a/desktop/resources/castle-gate/flip.ogg.mp3 b/desktop/resources/castle-gate/flip.ogg.mp3
new file mode 100644
index 00000000..4e615686
Binary files /dev/null and b/desktop/resources/castle-gate/flip.ogg.mp3 differ
diff --git a/desktop/resources/cat-tree/cat.ogg.mp3 b/desktop/resources/cat-tree/cat.ogg.mp3
index 9871e687..24db7d29 100644
Binary files a/desktop/resources/cat-tree/cat.ogg.mp3 and b/desktop/resources/cat-tree/cat.ogg.mp3 differ
diff --git a/desktop/resources/cat-tree/cry.ogg.mp3 b/desktop/resources/cat-tree/cry.ogg.mp3
new file mode 100644
index 00000000..287883fb
Binary files /dev/null and b/desktop/resources/cat-tree/cry.ogg.mp3 differ
diff --git a/desktop/resources/cat-tree/kiss.ogg.mp3 b/desktop/resources/cat-tree/kiss.ogg.mp3
index 49818208..038c4ff4 100644
Binary files a/desktop/resources/cat-tree/kiss.ogg.mp3 and b/desktop/resources/cat-tree/kiss.ogg.mp3 differ
diff --git a/desktop/resources/cat-tree/ladder-break.ogg.mp3 b/desktop/resources/cat-tree/ladder-break.ogg.mp3
new file mode 100644
index 00000000..1d8b8e01
Binary files /dev/null and b/desktop/resources/cat-tree/ladder-break.ogg.mp3 differ
diff --git a/desktop/resources/cat-tree/owl-puke.ogg.mp3 b/desktop/resources/cat-tree/owl-puke.ogg.mp3
new file mode 100644
index 00000000..857d3566
Binary files /dev/null and b/desktop/resources/cat-tree/owl-puke.ogg.mp3 differ
diff --git a/desktop/resources/cursor.png b/desktop/resources/cursor.png
index 39ce24f7..ee68e441 100644
Binary files a/desktop/resources/cursor.png and b/desktop/resources/cursor.png differ
diff --git a/desktop/resources/cursor_light.png b/desktop/resources/cursor_light.png
index 9b627dbd..af5bd3ba 100644
Binary files a/desktop/resources/cursor_light.png and b/desktop/resources/cursor_light.png differ
diff --git a/desktop/resources/door.ogg.mp3 b/desktop/resources/door.ogg.mp3
index 00eb6a02..a5fc098e 100644
Binary files a/desktop/resources/door.ogg.mp3 and b/desktop/resources/door.ogg.mp3 differ
diff --git a/desktop/resources/dream/SUCCESS CHEERS Win Cute Vocal Chime 03.ogg.mp3 b/desktop/resources/dream/SUCCESS CHEERS Win Cute Vocal Chime 03.ogg.mp3
index 779bb851..cb819fd9 100644
Binary files a/desktop/resources/dream/SUCCESS CHEERS Win Cute Vocal Chime 03.ogg.mp3 and b/desktop/resources/dream/SUCCESS CHEERS Win Cute Vocal Chime 03.ogg.mp3 differ
diff --git a/desktop/resources/dream/appear.ogg.mp3 b/desktop/resources/dream/appear.ogg.mp3
index 779bb851..60703aa4 100644
Binary files a/desktop/resources/dream/appear.ogg.mp3 and b/desktop/resources/dream/appear.ogg.mp3 differ
diff --git a/desktop/resources/dream/music.ogg.mp3 b/desktop/resources/dream/music.ogg.mp3
index 3dbcb128..4762ccbc 100644
Binary files a/desktop/resources/dream/music.ogg.mp3 and b/desktop/resources/dream/music.ogg.mp3 differ
diff --git a/desktop/resources/ego/axe.ogg.mp3 b/desktop/resources/ego/axe.ogg.mp3
new file mode 100644
index 00000000..1977e71d
Binary files /dev/null and b/desktop/resources/ego/axe.ogg.mp3 differ
diff --git a/desktop/resources/ego/blink2.ogg.mp3 b/desktop/resources/ego/blink2.ogg.mp3
index 3887b47e..cd03b86c 100644
Binary files a/desktop/resources/ego/blink2.ogg.mp3 and b/desktop/resources/ego/blink2.ogg.mp3 differ
diff --git a/desktop/resources/ego/breakglass.ogg.mp3 b/desktop/resources/ego/breakglass.ogg.mp3
index 20c44303..50ab87a9 100644
Binary files a/desktop/resources/ego/breakglass.ogg.mp3 and b/desktop/resources/ego/breakglass.ogg.mp3 differ
diff --git a/desktop/resources/ego/crowbar.ogg.mp3 b/desktop/resources/ego/crowbar.ogg.mp3
new file mode 100644
index 00000000..e8770d3c
Binary files /dev/null and b/desktop/resources/ego/crowbar.ogg.mp3 differ
diff --git a/desktop/resources/ego/drop.ogg.mp3 b/desktop/resources/ego/drop.ogg.mp3
new file mode 100644
index 00000000..a1ab8e91
Binary files /dev/null and b/desktop/resources/ego/drop.ogg.mp3 differ
diff --git a/desktop/resources/ego/font.png b/desktop/resources/ego/font.png
index 9ff06e1a..d3df5362 100644
Binary files a/desktop/resources/ego/font.png and b/desktop/resources/ego/font.png differ
diff --git a/desktop/resources/ego/font.tif b/desktop/resources/ego/font.tif
deleted file mode 100644
index d51b931f..00000000
Binary files a/desktop/resources/ego/font.tif and /dev/null differ
diff --git a/desktop/resources/ego/font1.png b/desktop/resources/ego/font1.png
deleted file mode 100644
index 8c0dbe31..00000000
Binary files a/desktop/resources/ego/font1.png and /dev/null differ
diff --git a/desktop/resources/ego/font2.png b/desktop/resources/ego/font2.png
deleted file mode 100644
index 529aa946..00000000
Binary files a/desktop/resources/ego/font2.png and /dev/null differ
diff --git a/desktop/resources/ego/get-sick.ogg.mp3 b/desktop/resources/ego/get-sick.ogg.mp3
new file mode 100644
index 00000000..28167d50
Binary files /dev/null and b/desktop/resources/ego/get-sick.ogg.mp3 differ
diff --git a/desktop/resources/ego/glad.ogg.mp3 b/desktop/resources/ego/glad.ogg.mp3
new file mode 100644
index 00000000..d7d2185a
Binary files /dev/null and b/desktop/resources/ego/glad.ogg.mp3 differ
diff --git a/desktop/resources/ego/idea.ogg.mp3 b/desktop/resources/ego/idea.ogg.mp3
index 8f64369c..92c8d2f1 100644
Binary files a/desktop/resources/ego/idea.ogg.mp3 and b/desktop/resources/ego/idea.ogg.mp3 differ
diff --git a/desktop/resources/ego/inside-step-1.ogg.mp3 b/desktop/resources/ego/inside-step-1.ogg.mp3
new file mode 100644
index 00000000..86dafc8a
Binary files /dev/null and b/desktop/resources/ego/inside-step-1.ogg.mp3 differ
diff --git a/desktop/resources/ego/inside-step-2.ogg.mp3 b/desktop/resources/ego/inside-step-2.ogg.mp3
new file mode 100644
index 00000000..4765ef6e
Binary files /dev/null and b/desktop/resources/ego/inside-step-2.ogg.mp3 differ
diff --git a/desktop/resources/ego/inside-step-3.ogg.mp3 b/desktop/resources/ego/inside-step-3.ogg.mp3
new file mode 100644
index 00000000..28d26270
Binary files /dev/null and b/desktop/resources/ego/inside-step-3.ogg.mp3 differ
diff --git a/desktop/resources/ego/inside-step-4.ogg.mp3 b/desktop/resources/ego/inside-step-4.ogg.mp3
new file mode 100644
index 00000000..4a1138af
Binary files /dev/null and b/desktop/resources/ego/inside-step-4.ogg.mp3 differ
diff --git a/desktop/resources/ego/potion.ogg.mp3 b/desktop/resources/ego/potion.ogg.mp3
index 350b14bb..ec7040fe 100644
Binary files a/desktop/resources/ego/potion.ogg.mp3 and b/desktop/resources/ego/potion.ogg.mp3 differ
diff --git a/desktop/resources/ego/scared-step.ogg.mp3 b/desktop/resources/ego/scared-step.ogg.mp3
new file mode 100644
index 00000000..06f5d680
Binary files /dev/null and b/desktop/resources/ego/scared-step.ogg.mp3 differ
diff --git a/desktop/resources/ego/scratch.ogg.mp3 b/desktop/resources/ego/scratch.ogg.mp3
new file mode 100644
index 00000000..03328eb4
Binary files /dev/null and b/desktop/resources/ego/scratch.ogg.mp3 differ
diff --git a/desktop/resources/ego/sigh.ogg.mp3 b/desktop/resources/ego/sigh.ogg.mp3
index 4975cbfc..b24a985b 100644
Binary files a/desktop/resources/ego/sigh.ogg.mp3 and b/desktop/resources/ego/sigh.ogg.mp3 differ
diff --git a/desktop/resources/ego/slingshot.ogg.mp3 b/desktop/resources/ego/slingshot.ogg.mp3
new file mode 100644
index 00000000..f5378416
Binary files /dev/null and b/desktop/resources/ego/slingshot.ogg.mp3 differ
diff --git a/desktop/resources/ego/step-1.ogg.mp3 b/desktop/resources/ego/step-1.ogg.mp3
index b6eeb94e..9f63a44a 100644
Binary files a/desktop/resources/ego/step-1.ogg.mp3 and b/desktop/resources/ego/step-1.ogg.mp3 differ
diff --git a/desktop/resources/ego/step-2.ogg.mp3 b/desktop/resources/ego/step-2.ogg.mp3
index 2142924e..0b378aef 100644
Binary files a/desktop/resources/ego/step-2.ogg.mp3 and b/desktop/resources/ego/step-2.ogg.mp3 differ
diff --git a/desktop/resources/ego/step-3.ogg.mp3 b/desktop/resources/ego/step-3.ogg.mp3
new file mode 100644
index 00000000..d247a445
Binary files /dev/null and b/desktop/resources/ego/step-3.ogg.mp3 differ
diff --git a/desktop/resources/ego/step-4.ogg.mp3 b/desktop/resources/ego/step-4.ogg.mp3
new file mode 100644
index 00000000..9b1db5b2
Binary files /dev/null and b/desktop/resources/ego/step-4.ogg.mp3 differ
diff --git a/desktop/resources/ego/step.ogg.mp3 b/desktop/resources/ego/step.ogg.mp3
index 94b273c1..1d096741 100644
Binary files a/desktop/resources/ego/step.ogg.mp3 and b/desktop/resources/ego/step.ogg.mp3 differ
diff --git a/desktop/resources/ending-castle/cloud.ogg.mp3 b/desktop/resources/ending-castle/cloud.ogg.mp3
new file mode 100644
index 00000000..5e367e53
Binary files /dev/null and b/desktop/resources/ending-castle/cloud.ogg.mp3 differ
diff --git a/desktop/resources/ending-castle/fall.ogg.mp3 b/desktop/resources/ending-castle/fall.ogg.mp3
new file mode 100644
index 00000000..76af75f2
Binary files /dev/null and b/desktop/resources/ending-castle/fall.ogg.mp3 differ
diff --git a/desktop/resources/ending-castle/georgia-appear.ogg.mp3 b/desktop/resources/ending-castle/georgia-appear.ogg.mp3
new file mode 100644
index 00000000..6c0ea9b4
Binary files /dev/null and b/desktop/resources/ending-castle/georgia-appear.ogg.mp3 differ
diff --git a/desktop/resources/georgia/kick.ogg.mp3 b/desktop/resources/georgia/kick.ogg.mp3
new file mode 100644
index 00000000..17528f15
Binary files /dev/null and b/desktop/resources/georgia/kick.ogg.mp3 differ
diff --git a/desktop/resources/inside-antique/fire-1.ogg.mp3 b/desktop/resources/inside-antique/fire-1.ogg.mp3
index fa43625a..6883cbbc 100644
Binary files a/desktop/resources/inside-antique/fire-1.ogg.mp3 and b/desktop/resources/inside-antique/fire-1.ogg.mp3 differ
diff --git a/desktop/resources/inside-antique/fire-2.ogg.mp3 b/desktop/resources/inside-antique/fire-2.ogg.mp3
index 528202b9..c29da0ba 100644
Binary files a/desktop/resources/inside-antique/fire-2.ogg.mp3 and b/desktop/resources/inside-antique/fire-2.ogg.mp3 differ
diff --git a/desktop/resources/inside-antique/fire-3.ogg.mp3 b/desktop/resources/inside-antique/fire-3.ogg.mp3
index cfd168f8..d7d7f72b 100644
Binary files a/desktop/resources/inside-antique/fire-3.ogg.mp3 and b/desktop/resources/inside-antique/fire-3.ogg.mp3 differ
diff --git a/desktop/resources/inside-antique/shopkeep-sigh.ogg.mp3 b/desktop/resources/inside-antique/shopkeep-sigh.ogg.mp3
new file mode 100644
index 00000000..c84c1feb
Binary files /dev/null and b/desktop/resources/inside-antique/shopkeep-sigh.ogg.mp3 differ
diff --git a/desktop/resources/inside-castle/chorus.ogg.mp3 b/desktop/resources/inside-castle/chorus.ogg.mp3
index 49e8211e..2246cf10 100644
Binary files a/desktop/resources/inside-castle/chorus.ogg.mp3 and b/desktop/resources/inside-castle/chorus.ogg.mp3 differ
diff --git a/desktop/resources/inside-castle/flex.ogg.mp3 b/desktop/resources/inside-castle/flex.ogg.mp3
index d967361b..e884bbe6 100644
Binary files a/desktop/resources/inside-castle/flex.ogg.mp3 and b/desktop/resources/inside-castle/flex.ogg.mp3 differ
diff --git a/desktop/resources/inside-castle/writing.ogg.mp3 b/desktop/resources/inside-castle/writing.ogg.mp3
new file mode 100644
index 00000000..2eeffe5a
Binary files /dev/null and b/desktop/resources/inside-castle/writing.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/close-safe.ogg.mp3 b/desktop/resources/inside-house/close-safe.ogg.mp3
index fc72fced..ae7ebff5 100644
Binary files a/desktop/resources/inside-house/close-safe.ogg.mp3 and b/desktop/resources/inside-house/close-safe.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/disappear.ogg.mp3 b/desktop/resources/inside-house/disappear.ogg.mp3
index 3c7fc1eb..655d30d9 100644
Binary files a/desktop/resources/inside-house/disappear.ogg.mp3 and b/desktop/resources/inside-house/disappear.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/open-safe.ogg.mp3 b/desktop/resources/inside-house/open-safe.ogg.mp3
index 03f84279..4bb92a69 100644
Binary files a/desktop/resources/inside-house/open-safe.ogg.mp3 and b/desktop/resources/inside-house/open-safe.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/safe-1.ogg.mp3 b/desktop/resources/inside-house/safe-1.ogg.mp3
index 4390dccf..cbb482fe 100644
Binary files a/desktop/resources/inside-house/safe-1.ogg.mp3 and b/desktop/resources/inside-house/safe-1.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/safe-2.ogg.mp3 b/desktop/resources/inside-house/safe-2.ogg.mp3
index 688939dd..f4a8b719 100644
Binary files a/desktop/resources/inside-house/safe-2.ogg.mp3 and b/desktop/resources/inside-house/safe-2.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/safe-3.ogg.mp3 b/desktop/resources/inside-house/safe-3.ogg.mp3
index 4c2751b1..41bc6502 100644
Binary files a/desktop/resources/inside-house/safe-3.ogg.mp3 and b/desktop/resources/inside-house/safe-3.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/safe-4.ogg.mp3 b/desktop/resources/inside-house/safe-4.ogg.mp3
index a916662b..4ad9d452 100644
Binary files a/desktop/resources/inside-house/safe-4.ogg.mp3 and b/desktop/resources/inside-house/safe-4.ogg.mp3 differ
diff --git a/desktop/resources/inside-house/safe-5.ogg.mp3 b/desktop/resources/inside-house/safe-5.ogg.mp3
index a5475f84..eee89f60 100644
Binary files a/desktop/resources/inside-house/safe-5.ogg.mp3 and b/desktop/resources/inside-house/safe-5.ogg.mp3 differ
diff --git a/desktop/resources/inside-jail/exhale.ogg.mp3 b/desktop/resources/inside-jail/exhale.ogg.mp3
index 086009a8..adc8dae1 100644
Binary files a/desktop/resources/inside-jail/exhale.ogg.mp3 and b/desktop/resources/inside-jail/exhale.ogg.mp3 differ
diff --git a/desktop/resources/inside-jail/guard-crash.ogg.mp3 b/desktop/resources/inside-jail/guard-crash.ogg.mp3
new file mode 100644
index 00000000..7f2230a6
Binary files /dev/null and b/desktop/resources/inside-jail/guard-crash.ogg.mp3 differ
diff --git a/desktop/resources/inside-jail/inhale.ogg.mp3 b/desktop/resources/inside-jail/inhale.ogg.mp3
index f7ab04a9..927ae4a6 100644
Binary files a/desktop/resources/inside-jail/inhale.ogg.mp3 and b/desktop/resources/inside-jail/inhale.ogg.mp3 differ
diff --git a/desktop/resources/inside-jail/open-door.ogg.mp3 b/desktop/resources/inside-jail/open-door.ogg.mp3
new file mode 100644
index 00000000..2709e6b2
Binary files /dev/null and b/desktop/resources/inside-jail/open-door.ogg.mp3 differ
diff --git a/desktop/resources/inside-jail/squeak.ogg.mp3 b/desktop/resources/inside-jail/squeak.ogg.mp3
new file mode 100644
index 00000000..b7d754ae
Binary files /dev/null and b/desktop/resources/inside-jail/squeak.ogg.mp3 differ
diff --git a/desktop/resources/intro.wav b/desktop/resources/intro.wav
deleted file mode 100644
index 91790100..00000000
Binary files a/desktop/resources/intro.wav and /dev/null differ
diff --git a/desktop/resources/label-font.fnt b/desktop/resources/label-font.fnt
new file mode 100644
index 00000000..6cd0a7aa
--- /dev/null
+++ b/desktop/resources/label-font.fnt
@@ -0,0 +1,104 @@
+info face="OpenDyslexic Bold" size=98 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=0 aa=0 padding=16,16,16,16 spacing=-30,-8
+common lineHeight=122 base=74 scaleW=1024 scaleH=1024 pages=1 packed=0
+page id=0 file="ego/font.png"
+chars count=99
+char id=10 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=0
+char id=32 x=0 y=0 width=0 height=0 xoffset=-16 yoffset=107 xadvance=40 page=0 chnl=0
+char id=33 x=78 y=551 width=48 height=102 xoffset=-8 yoffset=37 xadvance=33 page=0 chnl=0
+char id=34 x=0 y=741 width=67 height=62 xoffset=-9 yoffset=36 xadvance=51 page=0 chnl=0
+char id=35 x=330 y=551 width=98 height=101 xoffset=-9 yoffset=37 xadvance=82 page=0 chnl=0
+char id=36 x=309 y=0 width=78 height=119 xoffset=-8 yoffset=33 xadvance=63 page=0 chnl=0
+char id=37 x=571 y=238 width=113 height=105 xoffset=-9 yoffset=35 xadvance=97 page=0 chnl=0
+char id=38 x=684 y=238 width=101 height=105 xoffset=-9 yoffset=35 xadvance=85 page=0 chnl=0
+char id=39 x=67 y=741 width=43 height=61 xoffset=-9 yoffset=36 xadvance=27 page=0 chnl=0
+char id=40 x=387 y=0 width=61 height=118 xoffset=-9 yoffset=33 xadvance=45 page=0 chnl=0
+char id=41 x=448 y=0 width=61 height=118 xoffset=-9 yoffset=32 xadvance=45 page=0 chnl=0
+char id=42 x=935 y=653 width=77 height=77 xoffset=-9 yoffset=36 xadvance=61 page=0 chnl=0
+char id=43 x=545 y=551 width=93 height=93 xoffset=-9 yoffset=46 xadvance=77 page=0 chnl=0
+char id=44 x=301 y=741 width=52 height=59 xoffset=-9 yoffset=93 xadvance=36 page=0 chnl=0
+char id=45 x=638 y=741 width=60 height=43 xoffset=-9 yoffset=74 xadvance=44 page=0 chnl=0
+char id=46 x=506 y=741 width=49 height=50 xoffset=-11 yoffset=89 xadvance=31 page=0 chnl=0
+char id=47 x=0 y=127 width=70 height=111 xoffset=-9 yoffset=37 xadvance=54 page=0 chnl=0
+char id=48 x=490 y=238 width=81 height=105 xoffset=-9 yoffset=35 xadvance=66 page=0 chnl=0
+char id=49 x=833 y=447 width=75 height=103 xoffset=-8 yoffset=36 xadvance=60 page=0 chnl=0
+char id=50 x=186 y=447 width=78 height=104 xoffset=-9 yoffset=35 xadvance=62 page=0 chnl=0
+char id=51 x=248 y=238 width=79 height=105 xoffset=-8 yoffset=35 xadvance=64 page=0 chnl=0
+char id=52 x=908 y=447 width=84 height=103 xoffset=-9 yoffset=36 xadvance=68 page=0 chnl=0
+char id=53 x=264 y=447 width=79 height=104 xoffset=-9 yoffset=36 xadvance=63 page=0 chnl=0
+char id=54 x=327 y=238 width=81 height=105 xoffset=-9 yoffset=35 xadvance=65 page=0 chnl=0
+char id=55 x=0 y=551 width=78 height=102 xoffset=-9 yoffset=37 xadvance=62 page=0 chnl=0
+char id=56 x=343 y=447 width=83 height=104 xoffset=-9 yoffset=36 xadvance=67 page=0 chnl=0
+char id=57 x=408 y=238 width=82 height=105 xoffset=-9 yoffset=35 xadvance=66 page=0 chnl=0
+char id=58 x=968 y=551 width=47 height=85 xoffset=-9 yoffset=54 xadvance=31 page=0 chnl=0
+char id=59 x=428 y=551 width=50 height=100 xoffset=-8 yoffset=54 xadvance=35 page=0 chnl=0
+char id=60 x=638 y=551 width=96 height=89 xoffset=-9 yoffset=50 xadvance=80 page=0 chnl=0
+char id=61 x=208 y=741 width=93 height=61 xoffset=-9 yoffset=62 xadvance=77 page=0 chnl=0
+char id=62 x=154 y=653 width=96 height=88 xoffset=-9 yoffset=45 xadvance=80 page=0 chnl=0
+char id=63 x=426 y=447 width=70 height=104 xoffset=-9 yoffset=35 xadvance=55 page=0 chnl=0
+char id=64 x=721 y=0 width=115 height=116 xoffset=-9 yoffset=39 xadvance=99 page=0 chnl=0
+char id=65 x=785 y=238 width=100 height=104 xoffset=-9 yoffset=35 xadvance=84 page=0 chnl=0
+char id=66 x=885 y=238 width=85 height=104 xoffset=-9 yoffset=35 xadvance=69 page=0 chnl=0
+char id=67 x=234 y=127 width=91 height=106 xoffset=-9 yoffset=34 xadvance=75 page=0 chnl=0
+char id=68 x=0 y=343 width=92 height=104 xoffset=-9 yoffset=35 xadvance=76 page=0 chnl=0
+char id=69 x=92 y=343 width=80 height=104 xoffset=-9 yoffset=35 xadvance=64 page=0 chnl=0
+char id=70 x=496 y=447 width=74 height=103 xoffset=-8 yoffset=35 xadvance=59 page=0 chnl=0
+char id=71 x=325 y=127 width=95 height=106 xoffset=-9 yoffset=34 xadvance=79 page=0 chnl=0
+char id=72 x=172 y=343 width=87 height=104 xoffset=-8 yoffset=35 xadvance=73 page=0 chnl=0
+char id=73 x=970 y=238 width=46 height=104 xoffset=-8 yoffset=35 xadvance=32 page=0 chnl=0
+char id=74 x=104 y=0 width=62 height=123 xoffset=-8 yoffset=35 xadvance=49 page=0 chnl=0
+char id=75 x=259 y=343 width=92 height=104 xoffset=-8 yoffset=35 xadvance=77 page=0 chnl=0
+char id=76 x=351 y=343 width=78 height=104 xoffset=-8 yoffset=35 xadvance=63 page=0 chnl=0
+char id=77 x=429 y=343 width=100 height=104 xoffset=-7 yoffset=35 xadvance=88 page=0 chnl=0
+char id=78 x=529 y=343 width=87 height=104 xoffset=-8 yoffset=35 xadvance=72 page=0 chnl=0
+char id=79 x=420 y=127 width=98 height=106 xoffset=-9 yoffset=34 xadvance=82 page=0 chnl=0
+char id=80 x=570 y=447 width=80 height=103 xoffset=-7 yoffset=36 xadvance=66 page=0 chnl=0
+char id=81 x=509 y=0 width=103 height=117 xoffset=-9 yoffset=34 xadvance=88 page=0 chnl=0
+char id=82 x=650 y=447 width=90 height=103 xoffset=-9 yoffset=35 xadvance=74 page=0 chnl=0
+char id=83 x=518 y=127 width=83 height=106 xoffset=-9 yoffset=34 xadvance=67 page=0 chnl=0
+char id=84 x=740 y=447 width=93 height=103 xoffset=-9 yoffset=35 xadvance=77 page=0 chnl=0
+char id=85 x=0 y=238 width=87 height=105 xoffset=-9 yoffset=35 xadvance=71 page=0 chnl=0
+char id=86 x=616 y=343 width=99 height=104 xoffset=-9 yoffset=35 xadvance=84 page=0 chnl=0
+char id=87 x=715 y=343 width=123 height=104 xoffset=-9 yoffset=35 xadvance=107 page=0 chnl=0
+char id=88 x=838 y=343 width=97 height=104 xoffset=-9 yoffset=35 xadvance=82 page=0 chnl=0
+char id=89 x=0 y=447 width=95 height=104 xoffset=-9 yoffset=35 xadvance=79 page=0 chnl=0
+char id=90 x=95 y=447 width=91 height=104 xoffset=-9 yoffset=35 xadvance=75 page=0 chnl=0
+char id=91 x=612 y=0 width=55 height=117 xoffset=-9 yoffset=34 xadvance=39 page=0 chnl=0
+char id=92 x=914 y=0 width=65 height=112 xoffset=-9 yoffset=36 xadvance=49 page=0 chnl=0
+char id=93 x=667 y=0 width=54 height=117 xoffset=-8 yoffset=34 xadvance=39 page=0 chnl=0
+char id=94 x=110 y=741 width=98 height=61 xoffset=-9 yoffset=36 xadvance=82 page=0 chnl=0
+char id=95 x=555 y=741 width=83 height=44 xoffset=-9 yoffset=117 xadvance=67 page=0 chnl=0
+char id=96 x=446 y=741 width=60 height=52 xoffset=-9 yoffset=30 xadvance=44 page=0 chnl=0
+char id=97 x=734 y=551 width=78 height=88 xoffset=-9 yoffset=52 xadvance=62 page=0 chnl=0
+char id=98 x=601 y=127 width=79 height=106 xoffset=-7 yoffset=34 xadvance=65 page=0 chnl=0
+char id=99 x=812 y=551 width=75 height=88 xoffset=-9 yoffset=52 xadvance=59 page=0 chnl=0
+char id=100 x=680 y=127 width=81 height=106 xoffset=-9 yoffset=34 xadvance=66 page=0 chnl=0
+char id=101 x=887 y=551 width=81 height=88 xoffset=-9 yoffset=52 xadvance=65 page=0 chnl=0
+char id=102 x=935 y=343 width=65 height=104 xoffset=-9 yoffset=34 xadvance=49 page=0 chnl=0
+char id=103 x=70 y=127 width=80 height=109 xoffset=-9 yoffset=52 xadvance=65 page=0 chnl=0
+char id=104 x=87 y=238 width=78 height=105 xoffset=-8 yoffset=34 xadvance=64 page=0 chnl=0
+char id=105 x=979 y=0 width=43 height=105 xoffset=-9 yoffset=34 xadvance=28 page=0 chnl=0
+char id=106 x=45 y=0 width=59 height=124 xoffset=-9 yoffset=34 xadvance=43 page=0 chnl=0
+char id=107 x=165 y=238 width=83 height=105 xoffset=-8 yoffset=34 xadvance=68 page=0 chnl=0
+char id=108 x=761 y=127 width=50 height=106 xoffset=-8 yoffset=34 xadvance=35 page=0 chnl=0
+char id=109 x=250 y=653 width=109 height=87 xoffset=-8 yoffset=52 xadvance=95 page=0 chnl=0
+char id=110 x=359 y=653 width=79 height=87 xoffset=-8 yoffset=52 xadvance=65 page=0 chnl=0
+char id=111 x=0 y=653 width=81 height=88 xoffset=-9 yoffset=52 xadvance=65 page=0 chnl=0
+char id=112 x=150 y=127 width=84 height=107 xoffset=-12 yoffset=51 xadvance=65 page=0 chnl=0
+char id=113 x=811 y=127 width=92 height=106 xoffset=-9 yoffset=52 xadvance=76 page=0 chnl=0
+char id=114 x=515 y=653 width=64 height=86 xoffset=-8 yoffset=53 xadvance=49 page=0 chnl=0
+char id=115 x=81 y=653 width=73 height=88 xoffset=-8 yoffset=52 xadvance=58 page=0 chnl=0
+char id=116 x=478 y=551 width=67 height=98 xoffset=-9 yoffset=41 xadvance=51 page=0 chnl=0
+char id=117 x=438 y=653 width=77 height=87 xoffset=-9 yoffset=53 xadvance=62 page=0 chnl=0
+char id=118 x=579 y=653 width=86 height=86 xoffset=-9 yoffset=53 xadvance=70 page=0 chnl=0
+char id=119 x=665 y=653 width=104 height=86 xoffset=-9 yoffset=53 xadvance=88 page=0 chnl=0
+char id=120 x=769 y=653 width=90 height=86 xoffset=-9 yoffset=53 xadvance=74 page=0 chnl=0
+char id=121 x=903 y=127 width=86 height=106 xoffset=-9 yoffset=53 xadvance=70 page=0 chnl=0
+char id=122 x=859 y=653 width=76 height=86 xoffset=-9 yoffset=53 xadvance=60 page=0 chnl=0
+char id=123 x=166 y=0 width=72 height=120 xoffset=-9 yoffset=34 xadvance=56 page=0 chnl=0
+char id=124 x=0 y=0 width=45 height=127 xoffset=-8 yoffset=34 xadvance=31 page=0 chnl=0
+char id=125 x=238 y=0 width=71 height=120 xoffset=-9 yoffset=34 xadvance=55 page=0 chnl=0
+char id=126 x=353 y=741 width=93 height=56 xoffset=-9 yoffset=65 xadvance=77 page=0 chnl=0
+char id=169 x=126 y=551 width=102 height=102 xoffset=-9 yoffset=37 xadvance=86 page=0 chnl=0
+char id=174 x=228 y=551 width=102 height=102 xoffset=-9 yoffset=37 xadvance=86 page=0 chnl=0
+char id=228 x=836 y=0 width=78 height=115 xoffset=-9 yoffset=25 xadvance=62 page=0 chnl=0
+kernings count=0
diff --git a/desktop/resources/music/POPPixelLogo2Audiomix_mixdown.ogg.mp3 b/desktop/resources/music/POPPixelLogo2Audiomix_mixdown.ogg.mp3
new file mode 100644
index 00000000..af4bbf30
Binary files /dev/null and b/desktop/resources/music/POPPixelLogo2Audiomix_mixdown.ogg.mp3 differ
diff --git a/desktop/resources/music/forest.ogg.mp3 b/desktop/resources/music/forest.ogg.mp3
new file mode 100644
index 00000000..2da457ff
Binary files /dev/null and b/desktop/resources/music/forest.ogg.mp3 differ
diff --git a/desktop/resources/music/inside-antique.ogg.mp3 b/desktop/resources/music/inside-antique.ogg.mp3
index 7399d079..aa1f3d71 100644
Binary files a/desktop/resources/music/inside-antique.ogg.mp3 and b/desktop/resources/music/inside-antique.ogg.mp3 differ
diff --git a/desktop/resources/music/inside-fangald.ogg.mp3 b/desktop/resources/music/inside-fangald.ogg.mp3
index 99937d85..4608a44a 100644
Binary files a/desktop/resources/music/inside-fangald.ogg.mp3 and b/desktop/resources/music/inside-fangald.ogg.mp3 differ
diff --git a/desktop/resources/music/intro.ogg.mp3 b/desktop/resources/music/intro.ogg.mp3
index c9cb4980..c3769184 100644
Binary files a/desktop/resources/music/intro.ogg.mp3 and b/desktop/resources/music/intro.ogg.mp3 differ
diff --git a/desktop/resources/music/love.ogg.mp3 b/desktop/resources/music/love.ogg.mp3
index e89545eb..ba91b38a 100644
Binary files a/desktop/resources/music/love.ogg.mp3 and b/desktop/resources/music/love.ogg.mp3 differ
diff --git a/desktop/resources/music/megaboss.mp3.mp3 b/desktop/resources/music/megaboss.mp3.mp3
new file mode 100644
index 00000000..3dc3cc80
Binary files /dev/null and b/desktop/resources/music/megaboss.mp3.mp3 differ
diff --git a/desktop/resources/music/night.mp3 b/desktop/resources/music/night.mp3
deleted file mode 100644
index 08196ca3..00000000
Binary files a/desktop/resources/music/night.mp3 and /dev/null differ
diff --git a/desktop/resources/music/night.ogg.mp3 b/desktop/resources/music/night.ogg.mp3
index 08196ca3..c468039d 100644
Binary files a/desktop/resources/music/night.ogg.mp3 and b/desktop/resources/music/night.ogg.mp3 differ
diff --git a/desktop/resources/music/pull-sword.ogg.mp3 b/desktop/resources/music/pull-sword.ogg.mp3
index e5a15214..e22becf2 100644
Binary files a/desktop/resources/music/pull-sword.ogg.mp3 and b/desktop/resources/music/pull-sword.ogg.mp3 differ
diff --git a/desktop/resources/music/secret-hideout.ogg.mp3 b/desktop/resources/music/secret-hideout.ogg.mp3
index 9bc3332c..e597f854 100644
Binary files a/desktop/resources/music/secret-hideout.ogg.mp3 and b/desktop/resources/music/secret-hideout.ogg.mp3 differ
diff --git a/desktop/resources/music/town-music-1.ogg.mp3 b/desktop/resources/music/town-music-1.ogg.mp3
index 0fee8992..55854b3f 100644
Binary files a/desktop/resources/music/town-music-1.ogg.mp3 and b/desktop/resources/music/town-music-1.ogg.mp3 differ
diff --git a/desktop/resources/music/town-music-2.ogg.mp3 b/desktop/resources/music/town-music-2.ogg.mp3
index 266ee236..a08c4a05 100644
Binary files a/desktop/resources/music/town-music-2.ogg.mp3 and b/desktop/resources/music/town-music-2.ogg.mp3 differ
diff --git a/desktop/resources/music/town-music.ogg.mp3 b/desktop/resources/music/town-music.ogg.mp3
index d38ec333..a585a36a 100644
Binary files a/desktop/resources/music/town-music.ogg.mp3 and b/desktop/resources/music/town-music.ogg.mp3 differ
diff --git a/desktop/resources/music/wind.ogg.mp3 b/desktop/resources/music/wind.ogg.mp3
new file mode 100644
index 00000000..3075439b
Binary files /dev/null and b/desktop/resources/music/wind.ogg.mp3 differ
diff --git a/desktop/resources/outside-castle/flies.ogg.mp3 b/desktop/resources/outside-castle/flies.ogg.mp3
index c028424d..27e7f019 100644
Binary files a/desktop/resources/outside-castle/flies.ogg.mp3 and b/desktop/resources/outside-castle/flies.ogg.mp3 differ
diff --git a/desktop/resources/outside-castle/flies2.ogg.mp3 b/desktop/resources/outside-castle/flies2.ogg.mp3
index 192f5df2..a6384eb1 100644
Binary files a/desktop/resources/outside-castle/flies2.ogg.mp3 and b/desktop/resources/outside-castle/flies2.ogg.mp3 differ
diff --git a/desktop/resources/outside-castle/moo.ogg.mp3 b/desktop/resources/outside-castle/moo.ogg.mp3
new file mode 100644
index 00000000..2744420e
Binary files /dev/null and b/desktop/resources/outside-castle/moo.ogg.mp3 differ
diff --git a/desktop/resources/outside-castle/scratch.ogg.mp3 b/desktop/resources/outside-castle/scratch.ogg.mp3
index bd565ef5..d976b23a 100644
Binary files a/desktop/resources/outside-castle/scratch.ogg.mp3 and b/desktop/resources/outside-castle/scratch.ogg.mp3 differ
diff --git a/desktop/resources/outside-jail/fountain-2.ogg.mp3 b/desktop/resources/outside-jail/fountain-2.ogg.mp3
index 9f045878..ce6413ef 100644
Binary files a/desktop/resources/outside-jail/fountain-2.ogg.mp3 and b/desktop/resources/outside-jail/fountain-2.ogg.mp3 differ
diff --git a/desktop/resources/outsidehouse/cauldron-done.ogg.mp3 b/desktop/resources/outsidehouse/cauldron-done.ogg.mp3
new file mode 100644
index 00000000..63c43179
Binary files /dev/null and b/desktop/resources/outsidehouse/cauldron-done.ogg.mp3 differ
diff --git a/desktop/resources/outsidehouse/cauldron.ogg.mp3 b/desktop/resources/outsidehouse/cauldron.ogg.mp3
new file mode 100644
index 00000000..c33f7b49
Binary files /dev/null and b/desktop/resources/outsidehouse/cauldron.ogg.mp3 differ
diff --git a/desktop/resources/outsidehouse/drop.ogg.mp3 b/desktop/resources/outsidehouse/drop.ogg.mp3
new file mode 100644
index 00000000..fc6f8fa0
Binary files /dev/null and b/desktop/resources/outsidehouse/drop.ogg.mp3 differ
diff --git a/desktop/resources/outsidehouse/milk.ogg.mp3 b/desktop/resources/outsidehouse/milk.ogg.mp3
index d136c900..97ea16f2 100644
Binary files a/desktop/resources/outsidehouse/milk.ogg.mp3 and b/desktop/resources/outsidehouse/milk.ogg.mp3 differ
diff --git a/desktop/resources/outsidehouse/sheep-bleet.ogg.mp3 b/desktop/resources/outsidehouse/sheep-bleet.ogg.mp3
new file mode 100644
index 00000000..bca7e966
Binary files /dev/null and b/desktop/resources/outsidehouse/sheep-bleet.ogg.mp3 differ
diff --git a/desktop/resources/outsidehouse/sheep-eat.ogg.mp3 b/desktop/resources/outsidehouse/sheep-eat.ogg.mp3
new file mode 100644
index 00000000..533ae287
Binary files /dev/null and b/desktop/resources/outsidehouse/sheep-eat.ogg.mp3 differ
diff --git a/desktop/resources/packed-pop-logo/pack.atlas b/desktop/resources/packed-pop-logo/pack.atlas
index a9bbc970..3124dc25 100644
--- a/desktop/resources/packed-pop-logo/pack.atlas
+++ b/desktop/resources/packed-pop-logo/pack.atlas
@@ -1,7 +1,7 @@
pack.png
size: 4096,4096
-format: RGBA8888
+format: RGBA4444
filter: Nearest,Nearest
repeat: none
POPPixelLogo_02_1
@@ -11,13 +11,6 @@ POPPixelLogo_02_1
orig: 320, 240
offset: 0, 0
index: -1
-POPPixelLogo_02_198
- rotate: false
- xy: 2, 3632
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
POPPixelLogo_02_5
rotate: false
xy: 2, 3632
@@ -25,42 +18,7 @@ POPPixelLogo_02_5
orig: 320, 240
offset: 0, 0
index: -1
-POPPixelLogo_02_188
- rotate: false
- xy: 2, 3632
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-POPPixelLogo_02_193
- rotate: false
- xy: 2, 3632
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-POPPixelLogo_02_192
- rotate: false
- xy: 2, 3632
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-POPPixelLogo_02_195
- rotate: false
- xy: 2, 3632
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-POPPixelLogo_02_194
- rotate: false
- xy: 2, 3632
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-POPPixelLogo_02_196
+POPPixelLogo_02_3
rotate: false
xy: 2, 3632
size: 320, 240
@@ -74,7 +32,28 @@ POPPixelLogo_02_191
orig: 320, 240
offset: 0, 0
index: -1
-POPPixelLogo_02_2
+POPPixelLogo_02_195
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+POPPixelLogo_02_193
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+POPPixelLogo_02_188
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+POPPixelLogo_02_192
rotate: false
xy: 2, 3632
size: 320, 240
@@ -88,6 +67,34 @@ POPPixelLogo_02_199
orig: 320, 240
offset: 0, 0
index: -1
+POPPixelLogo_02_200
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+POPPixelLogo_02_196
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+POPPixelLogo_02_194
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+POPPixelLogo_02_2
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
POPPixelLogo_02_189
rotate: false
xy: 2, 3632
@@ -95,7 +102,7 @@ POPPixelLogo_02_189
orig: 320, 240
offset: 0, 0
index: -1
-POPPixelLogo_02_3
+POPPixelLogo_02_4
rotate: false
xy: 2, 3632
size: 320, 240
@@ -109,14 +116,7 @@ POPPixelLogo_02_197
orig: 320, 240
offset: 0, 0
index: -1
-POPPixelLogo_02_200
- rotate: false
- xy: 2, 3632
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-POPPixelLogo_02_4
+POPPixelLogo_02_198
rotate: false
xy: 2, 3632
size: 320, 240
diff --git a/desktop/resources/packed/pack.atlas b/desktop/resources/packed/.atlas
similarity index 58%
rename from desktop/resources/packed/pack.atlas
rename to desktop/resources/packed/.atlas
index c37c0dd7..9c674917 100644
--- a/desktop/resources/packed/pack.atlas
+++ b/desktop/resources/packed/.atlas
@@ -1,3134 +1,3593 @@
-pack.png
-size: 2048,2048
-format: RGBA8888
+packed28.png
+size: 1024,512
+format: RGBA4444
filter: Nearest,Nearest
repeat: none
-behindhouse/abc
- rotate: false
- xy: 1334, 900
- size: 320, 62
- orig: 320, 62
- offset: 0, 0
- index: -1
-behindhouse/background
- rotate: false
- xy: 2, 255
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-behindhouse/fg2
- rotate: false
- xy: 324, 135
- size: 183, 360
- orig: 183, 360
- offset: 0, 0
- index: -1
-behindhouse/stick
- rotate: false
- xy: 1282, 763
- size: 24, 42
- orig: 24, 42
- offset: 0, 0
- index: -1
black
rotate: false
- xy: 2013, 134
+ xy: 2, 2
size: 32, 24
orig: 32, 24
offset: 0, 0
index: -1
butterfly
rotate: false
- xy: 1867, 1471
+ xy: 792, 445
size: 14, 7
orig: 14, 7
offset: 0, 0
index: -1
-castle-gate/background
- rotate: false
- xy: 2, 13
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-castle-gate/coinflip
- rotate: false
- xy: 1978, 876
- size: 50, 10
- orig: 50, 10
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-1
- rotate: false
- xy: 2013, 234
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-2
- rotate: false
- xy: 2013, 197
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-3
- rotate: false
- xy: 2013, 160
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-4
- rotate: false
- xy: 2021, 97
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-5
- rotate: false
- xy: 2021, 60
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-6
- rotate: false
- xy: 2020, 1665
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/goon-1
- rotate: false
- xy: 2020, 1723
- size: 26, 33
- orig: 26, 33
- offset: 0, 0
- index: -1
-castle-gate/goon-2-flip
- rotate: false
- xy: 1606, 1044
- size: 48, 32
- orig: 48, 32
- offset: 0, 0
- index: -1
-castle-gate/overlay
- rotate: false
- xy: 1832, 635
- size: 138, 239
- orig: 138, 239
- offset: 0, 0
- index: -1
-castle-gate/stash-closed
- rotate: false
- xy: 1972, 645
- size: 70, 41
- orig: 70, 41
- offset: 0, 0
- index: -1
-cat-tree/Untitled
- rotate: false
- xy: 1767, 89
- size: 28, 18
- orig: 28, 18
- offset: 0, 0
- index: -1
-cat-tree/pounce
- rotate: false
- xy: 1767, 89
- size: 28, 18
- orig: 28, 18
- offset: 0, 0
- index: -1
-cat-tree/background
- rotate: false
- xy: 1284, 1037
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-cat-tree/cat
- rotate: false
- xy: 1228, 903
- size: 22, 11
- orig: 22, 11
- offset: 0, 0
- index: -1
-cat-tree/cat-stand
- rotate: false
- xy: 1432, 6
- size: 198, 11
- orig: 198, 11
- offset: 0, 0
- index: -1
-cat-tree/destroy-ladder
- rotate: false
- xy: 704, 876
- size: 522, 38
- orig: 522, 38
- offset: 0, 0
- index: -1
-cat-tree/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-inside-antique/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-wizard/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-ego/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-title/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-inside-jail/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-outsidehouse/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-inside-house/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-dream/dot
- rotate: false
- xy: 704, 916
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-cat-tree/grandma
- rotate: false
- xy: 1228, 839
- size: 275, 36
- orig: 275, 36
- offset: 0, 0
- index: -1
-cat-tree/grandma-cry-1
- rotate: false
- xy: 1606, 1237
- size: 58, 40
- orig: 58, 40
- offset: 0, 0
- index: -1
-cat-tree/grandma-cry-2
- rotate: false
- xy: 1988, 1345
- size: 58, 40
- orig: 58, 40
- offset: 0, 0
- index: -1
-cat-tree/grandma-cry-3
- rotate: false
- xy: 1988, 1303
- size: 58, 40
- orig: 58, 40
- offset: 0, 0
- index: -1
-cat-tree/grandma-cry-4
- rotate: false
- xy: 1988, 1261
- size: 58, 40
- orig: 58, 40
- offset: 0, 0
- index: -1
-cat-tree/grandma-cry-5
- rotate: false
- xy: 1988, 1219
- size: 58, 40
- orig: 58, 40
- offset: 0, 0
- index: -1
-cat-tree/grandma-cry-6
- rotate: false
- xy: 1978, 888
- size: 58, 40
- orig: 58, 40
- offset: 0, 0
- index: -1
-cat-tree/monocle
- rotate: false
- xy: 1856, 1573
- size: 28, 7
- orig: 28, 7
- offset: 0, 0
- index: -1
-cat-tree/tree-r
- rotate: false
- xy: 1832, 393
- size: 65, 240
- orig: 65, 240
- offset: 0, 0
- index: -1
close
rotate: false
- xy: 463, 4
+ xy: 70, 10
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
cloud
rotate: false
- xy: 1679, 2
+ xy: 324, 28
size: 15, 15
orig: 15, 15
offset: 0, 0
index: -1
-space/cloud
- rotate: false
- xy: 1679, 2
- size: 15, 15
- orig: 15, 15
- offset: 0, 0
- index: -1
-dbh
- rotate: false
- xy: 2, 1086
- size: 1280, 960
- orig: 1280, 960
- offset: 0, 0
- index: -1
-dbhlogo
- rotate: false
- xy: 2, 1086
- size: 1280, 960
- orig: 1280, 960
- offset: 0, 0
- index: -1
-dream/background
- rotate: false
- xy: 544, 517
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-dream/broom
- rotate: false
- xy: 2014, 1942
- size: 15, 66
- orig: 15, 66
- offset: 0, 0
- index: -1
-dream/case
- rotate: false
- xy: 2031, 1970
- size: 15, 38
- orig: 15, 38
- offset: 0, 0
- index: -1
-dream/cliff
- rotate: false
- xy: 1952, 1130
- size: 81, 87
- orig: 81, 87
- offset: 0, 0
- index: -1
-dream/fairy-godfather
- rotate: false
- xy: 1284, 1654
- size: 567, 77
- orig: 567, 77
- offset: 0, 0
- index: -1
-dream/fairy-godfather-magic
- rotate: false
- xy: 1284, 1471
- size: 500, 77
- orig: 500, 77
- offset: 0, 0
- index: -1
-dream/plaque1
- rotate: false
- xy: 1787, 76
- size: 8, 11
- orig: 8, 11
- offset: 0, 0
- index: -1
-dream/plaque2
- rotate: false
- xy: 1853, 50
- size: 10, 6
- orig: 10, 6
- offset: 0, 0
- index: -1
-dream/plaque3
- rotate: false
- xy: 1274, 1055
- size: 8, 11
- orig: 8, 11
- offset: 0, 0
- index: -1
-dream/shovel
- rotate: false
- xy: 1999, 1669
- size: 19, 64
- orig: 19, 64
- offset: 0, 0
- index: -1
-dream/sword
- rotate: false
- xy: 2031, 20
- size: 15, 38
- orig: 15, 38
- offset: 0, 0
- index: -1
-ego/axe
- rotate: false
- xy: 852, 1014
- size: 420, 70
- orig: 420, 70
- offset: 0, 0
- index: -1
-ego/axe-wood
- rotate: false
- xy: 1284, 1870
- size: 660, 70
- orig: 660, 70
- offset: 0, 0
- index: -1
-ego/base
- rotate: false
- xy: 1491, 444
- size: 16, 36
- orig: 16, 36
- offset: 0, 0
- index: -1
-ego/whistle-1
- rotate: false
- xy: 1491, 444
- size: 16, 36
- orig: 16, 36
- offset: 0, 0
- index: -1
-ego/burnt
- rotate: false
- xy: 852, 916
- size: 480, 46
- orig: 480, 46
- offset: 0, 0
- index: -1
-ego/climb
- rotate: false
- xy: 1016, 759
- size: 242, 46
- orig: 242, 46
- offset: 0, 0
- index: -1
-ego/crawl
- rotate: false
- xy: 829, 6
- size: 273, 25
- orig: 273, 25
- offset: 0, 0
- index: -1
-ego/flying
- rotate: false
- xy: 1995, 4
- size: 34, 44
- orig: 34, 44
- offset: 0, 0
- index: -1
-ego/frog
- rotate: false
- xy: 2014, 2010
- size: 32, 36
- orig: 32, 36
- offset: 0, 0
- index: -1
-ego/georgia
- rotate: false
- xy: 1135, 844
- size: 90, 30
- orig: 90, 30
- offset: 0, 0
- index: -1
-ego/glad
- rotate: false
- xy: 1853, 2
- size: 140, 46
- orig: 140, 46
- offset: 0, 0
- index: -1
-ego/hold-hand
- rotate: false
- xy: 1491, 406
- size: 16, 36
- orig: 16, 36
- offset: 0, 0
- index: -1
-ego/ida
- rotate: false
- xy: 1786, 1478
- size: 54, 70
- orig: 54, 70
- offset: 0, 0
- index: -1
-ego/idea
- rotate: false
- xy: 1978, 930
- size: 54, 70
- orig: 54, 70
- offset: 0, 0
- index: -1
-ego/in-love
- rotate: false
- xy: 1284, 1550
- size: 570, 30
- orig: 570, 30
- offset: 0, 0
- index: -1
-ego/scoot
- rotate: false
- xy: 1106, 807
- size: 200, 30
- orig: 200, 30
- offset: 0, 0
- index: -1
-ego/shock
- rotate: false
- xy: 1294, 964
- size: 360, 48
- orig: 360, 48
- offset: 0, 0
- index: -1
-ego/spear
- rotate: false
- xy: 1944, 1758
- size: 90, 100
- orig: 90, 100
- offset: 0, 0
- index: -1
-ego/swing-shovel
- rotate: false
- xy: 2, 760
- size: 630, 70
- orig: 630, 70
- offset: 0, 0
- index: -1
-ending-castle/Untitled
- rotate: false
- xy: 1767, 109
- size: 28, 39
- orig: 28, 39
- offset: 0, 0
- index: -1
-ending-castle/game-player
- rotate: false
- xy: 1767, 109
- size: 28, 39
- orig: 28, 39
- offset: 0, 0
- index: -1
-ending-castle/crowd-left
- rotate: false
- xy: 1826, 1733
- size: 116, 135
- orig: 116, 135
- offset: 0, 0
- index: -1
-ending-castle/duke
- rotate: false
- xy: 852, 964
- size: 440, 48
- orig: 440, 48
- offset: 0, 0
- index: -1
-ending-castle/ending-castle2-assets/background
- rotate: false
- xy: 509, 275
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-ending-castle/ending-castle2-assets/foreground
- rotate: false
- xy: 1606, 1118
- size: 344, 109
- orig: 344, 109
- offset: 0, 0
- index: -1
-ending-castle/guard-1
- rotate: false
- xy: 2007, 512
- size: 27, 56
- orig: 27, 56
- offset: 0, 0
- index: -1
-ending-castle/guard-2
- rotate: false
- xy: 2013, 413
- size: 27, 56
- orig: 27, 56
- offset: 0, 0
- index: -1
-georgia/stand
- rotate: false
- xy: 1946, 1897
- size: 100, 43
- orig: 100, 43
- offset: 0, 0
- index: -1
-georgia/walk
- rotate: false
- xy: 1886, 1568
- size: 160, 43
- orig: 160, 43
- offset: 0, 0
- index: -1
-held/background
- rotate: false
- xy: 509, 33
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-held/bloodclot-head-1
- rotate: false
- xy: 1905, 50
- size: 114, 82
- orig: 114, 82
- offset: 0, 0
- index: -1
-held/dot
- rotate: false
- xy: 2007, 468
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-outside-jail/dot
- rotate: false
- xy: 2007, 468
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-space/dot
- rotate: false
- xy: 2007, 468
- size: 1, 1
- orig: 1, 1
- offset: 0, 0
- index: -1
-inside-antique/antique-sigh
- rotate: false
- xy: 1104, 10
- size: 216, 21
- orig: 216, 21
- offset: 0, 0
- index: -1
-inside-antique/background
- rotate: false
- xy: 866, 517
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/beard
- rotate: false
- xy: 1767, 2
- size: 84, 54
- orig: 84, 54
- offset: 0, 0
- index: -1
-inside-antique/bowl
- rotate: false
- xy: 481, 7
- size: 14, 13
- orig: 14, 13
- offset: 0, 0
- index: -1
-inside-antique/bowl-0
- rotate: false
- xy: 481, 7
- size: 14, 13
- orig: 14, 13
- offset: 0, 0
- index: -1
-inside-antique/bowl-1
- rotate: false
- xy: 2031, 1955
- size: 14, 13
- orig: 14, 13
- offset: 0, 0
- index: -1
-inside-antique/bowl-2
- rotate: false
- xy: 2031, 5
- size: 14, 13
- orig: 14, 13
- offset: 0, 0
- index: -1
-inside-antique/bowl-3
- rotate: false
- xy: 1696, 4
- size: 14, 13
- orig: 14, 13
- offset: 0, 0
- index: -1
-inside-antique/shopkeep-talk
- rotate: false
- xy: 1944, 1735
- size: 72, 21
- orig: 72, 21
- offset: 0, 0
- index: -1
-inside-antique/sword
- rotate: false
- xy: 1274, 1068
- size: 8, 16
- orig: 8, 16
- offset: 0, 0
- index: -1
-inside-castle/sword
- rotate: false
- xy: 1274, 1068
- size: 8, 16
- orig: 8, 16
- offset: 0, 0
- index: -1
-inside-cafeteria/background
- rotate: false
- xy: 831, 275
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-cafeteria/doorway
- rotate: false
- xy: 1475, 402
- size: 14, 113
- orig: 14, 113
- offset: 0, 0
- index: -1
-inside-cafeteria/knight-a
- rotate: false
- xy: 2, 832
- size: 700, 85
- orig: 700, 85
- offset: 0, 0
- index: -1
-inside-cafeteria/knights
- rotate: false
- xy: 1972, 777
- size: 74, 97
- orig: 74, 97
- offset: 0, 0
- index: -1
-inside-cafeteria/knights-stand
- rotate: false
- xy: 2, 497
- size: 490, 80
- orig: 490, 80
- offset: 0, 0
- index: -1
-inside-cafeteria/ladder
- rotate: false
- xy: 2013, 350
- size: 29, 38
- orig: 29, 38
- offset: 0, 0
- index: -1
-inside-cafeteria/ladder-guard
- rotate: false
- xy: 1972, 688
- size: 74, 87
- orig: 74, 87
- offset: 0, 0
- index: -1
-inside-cafeteria/ladder-guard-2
- rotate: false
- xy: 2007, 570
- size: 30, 73
- orig: 30, 73
- offset: 0, 0
- index: -1
-inside-cafeteria/warriors
- rotate: false
- xy: 1978, 1002
- size: 66, 126
- orig: 66, 126
- offset: 0, 0
- index: -1
-inside-castle/Untitled
- rotate: false
- xy: 1886, 1613
- size: 160, 44
- orig: 160, 44
- offset: 0, 0
- index: -1
-inside-castle/background
- rotate: false
- xy: 831, 33
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-castle/bookstack
- rotate: false
- xy: 2013, 313
- size: 27, 35
- orig: 27, 35
- offset: 0, 0
- index: -1
-inside-castle/game-player-talk
- rotate: false
- xy: 704, 807
- size: 400, 44
- orig: 400, 44
- offset: 0, 0
- index: -1
-inside-castle/hands-fight
- rotate: false
- xy: 1284, 1942
- size: 728, 104
- orig: 728, 104
- offset: 0, 0
- index: -1
-inside-castle/monocle
- rotate: false
- xy: 1560, 879
- size: 76, 19
- orig: 76, 19
- offset: 0, 0
- index: -1
-inside-castle/pull-sword
- rotate: false
- xy: 1284, 1279
- size: 380, 190
- orig: 380, 190
- offset: 0, 0
- index: -1
-inside-castle/sign1
- rotate: false
- xy: 494, 517
- size: 44, 20
- orig: 44, 20
- offset: 0, 0
- index: -1
-inside-castle/sign-1
- rotate: false
- xy: 494, 517
- size: 44, 20
- orig: 44, 20
- offset: 0, 0
- index: -1
-inside-castle/sign2
- rotate: false
- xy: 1606, 1022
- size: 44, 20
- orig: 44, 20
- offset: 0, 0
- index: -1
-inside-castle/sign-2
- rotate: false
- xy: 1606, 1022
- size: 44, 20
- orig: 44, 20
- offset: 0, 0
- index: -1
-inside-castle/trophy
- rotate: false
- xy: 634, 814
- size: 64, 16
- orig: 64, 16
- offset: 0, 0
- index: -1
-inside-castle/watch
- rotate: false
- xy: 2021, 50
- size: 8, 8
- orig: 8, 8
- offset: 0, 0
- index: -1
-inside-house/background
- rotate: false
- xy: 1666, 1229
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-house/candle-aura
- rotate: false
- xy: 1322, 4
- size: 108, 27
- orig: 108, 27
- offset: 0, 0
- index: -1
-inside-house/flask
- rotate: false
- xy: 1638, 877
- size: 16, 21
- orig: 16, 21
- offset: 0, 0
- index: -1
-inside-house/frog-legs
- rotate: false
- xy: 444, 4
- size: 17, 16
- orig: 17, 16
- offset: 0, 0
- index: -1
-inside-house/inputed-key
- rotate: false
- xy: 498, 122
- size: 9, 11
- orig: 9, 11
- offset: 0, 0
- index: -1
-inside-house/safe-lock
- rotate: false
- xy: 2, 3
- size: 243, 8
- orig: 243, 8
- offset: 0, 0
- index: -1
-inside-house/safe-screen
- rotate: false
- xy: 1308, 762
- size: 200, 75
- orig: 200, 75
- offset: 0, 0
- index: -1
-inside-jail/background
- rotate: false
- xy: 1656, 876
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-jail/ball-n-chain
- rotate: false
- xy: 324, 4
- size: 38, 16
- orig: 38, 16
- offset: 0, 0
- index: -1
-inside-jail/moveable-bars
- rotate: false
- xy: 1988, 1387
- size: 53, 91
- orig: 53, 91
- offset: 0, 0
- index: -1
-inside-jail/window
- rotate: false
- xy: 1767, 58
- size: 18, 29
- orig: 18, 29
- offset: 0, 0
- index: -1
-inside-stash/background
- rotate: false
- xy: 1188, 517
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-stash/candle
- rotate: false
- xy: 1606, 1231
- size: 16, 4
- orig: 16, 4
- offset: 0, 0
- index: -1
-inside-stash/lid
- rotate: false
- xy: 1842, 1471
- size: 23, 7
- orig: 23, 7
- offset: 0, 0
- index: -1
-outside-castle/background
- rotate: false
- xy: 1153, 275
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-outside-castle/bird
- rotate: false
- xy: 540, 535
- size: 2, 2
- orig: 2, 2
- offset: 0, 0
- index: -1
-outside-castle/flies
- rotate: false
- xy: 1632, 2
- size: 45, 15
- orig: 45, 15
- offset: 0, 0
- index: -1
-outside-jail/Untitled
- rotate: false
- xy: 1284, 1582
- size: 600, 70
- orig: 600, 70
- offset: 0, 0
- index: -1
-outside-jail/alarm-clock
- rotate: false
- xy: 1432, 20
- size: 16, 11
- orig: 16, 11
- offset: 0, 0
- index: -1
-outside-jail/background
- rotate: false
- xy: 1153, 33
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-outside-jail/bent-bar-window
- rotate: false
- xy: 1491, 482
- size: 17, 33
- orig: 17, 33
- offset: 0, 0
- index: -1
-outside-jail/candle-aura
- rotate: false
- xy: 1284, 1733
- size: 540, 135
- orig: 540, 135
- offset: 0, 0
- index: -1
-outside-jail/candle-aura2
- rotate: false
- xy: 2, 623
- size: 540, 135
- orig: 540, 135
- offset: 0, 0
- index: -1
-outside-jail/guard-sleep
- rotate: false
- xy: 324, 66
- size: 172, 67
- orig: 172, 67
- offset: 0, 0
- index: -1
-outside-jail/rope
- rotate: false
- xy: 1856, 1480
- size: 185, 86
- orig: 185, 86
- offset: 0, 0
- index: -1
-outside-jail/spear
- rotate: false
- xy: 2035, 1166
- size: 11, 51
- orig: 11, 51
- offset: 0, 0
- index: -1
-outsidehouse/background
- rotate: false
- xy: 1510, 634
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-outsidehouse/charcoal-1
- rotate: false
- xy: 364, 2
- size: 18, 18
- orig: 18, 18
- offset: 0, 0
- index: -1
-outsidehouse/charcoal-2
- rotate: false
- xy: 384, 2
- size: 18, 18
- orig: 18, 18
- offset: 0, 0
- index: -1
-outsidehouse/charcoal-3
- rotate: false
- xy: 404, 2
- size: 18, 18
- orig: 18, 18
- offset: 0, 0
- index: -1
-outsidehouse/charcoal-4
- rotate: false
- xy: 424, 2
- size: 18, 18
- orig: 18, 18
- offset: 0, 0
- index: -1
-outsidehouse/lamb
- rotate: false
- xy: 2020, 1702
- size: 26, 19
- orig: 26, 19
- offset: 0, 0
- index: -1
-outsidehouse/sheep
- rotate: false
- xy: 2013, 390
- size: 33, 21
- orig: 33, 21
- offset: 0, 0
- index: -1
-outsidehouse/sheep-1
- rotate: false
- xy: 1274, 1014
- size: 330, 21
- orig: 330, 21
- offset: 0, 0
- index: -1
-outsidehouse/sheep-2
- rotate: false
- xy: 1228, 877
- size: 330, 21
- orig: 330, 21
- offset: 0, 0
- index: -1
-outsidehouse/sheep-3
- rotate: false
- xy: 497, 10
- size: 330, 21
- orig: 330, 21
- offset: 0, 0
- index: -1
-outsidehouse/sheep-anim
- rotate: false
- xy: 704, 853
- size: 429, 21
- orig: 429, 21
- offset: 0, 0
- index: -1
-player
- rotate: false
- xy: 1853, 1659
- size: 144, 72
- orig: 144, 72
- offset: 0, 0
- index: -1
-pos
- rotate: false
- xy: 1475, 19
- size: 290, 129
- orig: 290, 129
- offset: 0, 0
- index: -1
-safe-anim
- rotate: false
- xy: 1946, 1860
- size: 100, 35
- orig: 100, 35
- offset: 0, 0
- index: -1
-space/Blergh
- rotate: false
- xy: 1899, 468
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/background
- rotate: false
- xy: 1510, 392
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-space/blergh-flex
- rotate: false
- xy: 1797, 225
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/blergh-stand
- rotate: false
- xy: 1797, 225
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/blergh-talk
- rotate: false
- xy: 1905, 301
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-1
- rotate: false
- xy: 1905, 134
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-2
- rotate: false
- xy: 1797, 58
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-talk
- rotate: false
- xy: 2, 919
- size: 848, 165
- orig: 848, 165
- offset: 0, 0
- index: -1
-space/broken-jewel
- rotate: false
- xy: 2036, 1844
- size: 10, 14
- orig: 10, 14
- offset: 0, 0
- index: -1
-talk-bg-2
- rotate: false
- xy: 2013, 271
- size: 21, 40
- orig: 21, 40
- offset: 0, 0
- index: -1
-title/background
- rotate: false
- xy: 1475, 150
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-title/banner
- rotate: false
- xy: 324, 22
- size: 171, 42
- orig: 171, 42
- offset: 0, 0
- index: -1
-title/banner-back
- rotate: false
- xy: 2, 579
- size: 540, 42
- orig: 540, 42
- offset: 0, 0
- index: -1
-title/quill
- rotate: false
- xy: 2007, 471
- size: 33, 39
- orig: 33, 39
- offset: 0, 0
- index: -1
-title/save-indicator
- rotate: false
- xy: 1883, 1471
- size: 7, 7
- orig: 7, 7
- offset: 0, 0
- index: -1
-title/save-indicator-active
- rotate: false
- xy: 1892, 1471
- size: 7, 7
- orig: 7, 7
- offset: 0, 0
- index: -1
-title/screenshot-backdrop
- rotate: false
- xy: 494, 539
- size: 48, 38
- orig: 48, 38
- offset: 0, 0
- index: -1
-title/screenshot-backdrop-active
- rotate: false
- xy: 1606, 1078
- size: 48, 38
- orig: 48, 38
- offset: 0, 0
- index: -1
-wizard/disappear
- rotate: false
- xy: 634, 759
- size: 380, 46
- orig: 380, 46
- offset: 0, 0
- index: -1
-wizard/flame
- rotate: false
- xy: 1952, 1118
- size: 5, 10
- orig: 5, 10
- offset: 0, 0
- index: -1
-wizard/stand
- rotate: false
- xy: 1260, 759
- size: 20, 46
- orig: 20, 46
- offset: 0, 0
- index: -1
-wizard
- rotate: false
- xy: 1260, 759
- size: 20, 46
- orig: 20, 46
- offset: 0, 0
- index: -1
-
-pack2.png
-size: 2048,2048
-format: RGBA8888
-filter: Nearest,Nearest
-repeat: none
-behindhouse/brush
- rotate: false
- xy: 2, 1322
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-behindhouse/fg
- rotate: false
- xy: 1290, 1806
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-outsidehouse/fg
- rotate: false
- xy: 1290, 1806
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-behindhouse/house
- rotate: false
- xy: 324, 354
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-behindhouse/house-cover
- rotate: false
- xy: 1590, 473
- size: 20, 21
- orig: 20, 21
- offset: 0, 0
- index: -1
-castle-gate/frankie
- rotate: false
- xy: 2, 29
- size: 312, 35
- orig: 312, 35
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-7
- rotate: false
- xy: 2022, 468
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/frankie-walk-8
- rotate: false
- xy: 2022, 431
- size: 24, 35
- orig: 24, 35
- offset: 0, 0
- index: -1
-castle-gate/goon-2
- rotate: false
- xy: 2022, 397
- size: 24, 32
- orig: 24, 32
- offset: 0, 0
- index: -1
-castle-gate/goon-2-talk
- rotate: false
- xy: 2022, 363
- size: 24, 32
- orig: 24, 32
- offset: 0, 0
- index: -1
-cat-tree/brush-l
- rotate: false
- xy: 1133, 40
- size: 152, 70
- orig: 152, 70
- offset: 0, 0
- index: -1
-cat-tree/sillhoute
- rotate: false
- xy: 1290, 838
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-cat-tree/tree-and-rock
- rotate: false
- xy: 1290, 596
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
cloudy
rotate: false
- xy: 1590, 451
+ xy: 748, 416
size: 20, 20
orig: 20, 20
offset: 0, 0
index: -1
cursorr
rotate: false
- xy: 2030, 646
+ xy: 494, 121
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
dawn
rotate: false
- xy: 968, 1806
+ xy: 2, 270
size: 320, 240
orig: 320, 240
offset: 0, 0
index: -1
-dream/clouds1
+goon-2-walk
rotate: false
- xy: 2, 1080
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-dream/far
- rotate: false
- xy: 646, 1322
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-dream/fountain
- rotate: false
- xy: 2, 354
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-outside-jail/fountain
- rotate: false
- xy: 2, 354
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-dream/island
- rotate: false
- xy: 284, 7
- size: 30, 20
- orig: 30, 20
- offset: 0, 0
- index: -1
-dream/pedestals
- rotate: false
- xy: 968, 596
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-dream/sky
- rotate: false
- xy: 646, 112
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-ego/Untitled
- rotate: false
- xy: 996, 2
- size: 144, 36
- orig: 144, 36
- offset: 0, 0
- index: -1
-ego/talk
- rotate: false
- xy: 996, 2
- size: 144, 36
- orig: 144, 36
- offset: 0, 0
- index: -1
-ego/crowbar
- rotate: false
- xy: 1142, 2
- size: 144, 36
- orig: 144, 36
- offset: 0, 0
- index: -1
-ego/fire
- rotate: false
- xy: 614, 31
- size: 216, 36
- orig: 216, 36
- offset: 0, 0
- index: -1
-ego/get-sick
- rotate: false
- xy: 1934, 841
- size: 108, 36
- orig: 108, 36
- offset: 0, 0
- index: -1
-ego/love-1
- rotate: false
- xy: 1978, 706
- size: 50, 70
- orig: 50, 70
- offset: 0, 0
- index: -1
-ego/love-2
- rotate: false
- xy: 1978, 634
- size: 50, 70
- orig: 50, 70
- offset: 0, 0
- index: -1
-ego/love-3
- rotate: false
- xy: 1978, 562
- size: 50, 70
- orig: 50, 70
- offset: 0, 0
- index: -1
-ego/pant
- rotate: false
- xy: 1548, 558
- size: 62, 36
- orig: 62, 36
- offset: 0, 0
- index: -1
-ego/sigh
- rotate: false
- xy: 832, 2
- size: 162, 36
- orig: 162, 36
- offset: 0, 0
- index: -1
-ego/standup
- rotate: false
- xy: 906, 55
- size: 225, 55
- orig: 225, 55
- offset: 0, 0
- index: -1
-ego/swing
- rotate: false
- xy: 324, 35
- size: 288, 75
- orig: 288, 75
- offset: 0, 0
- index: -1
-ego/whistle-2
- rotate: false
- xy: 2030, 740
- size: 16, 36
- orig: 16, 36
- offset: 0, 0
- index: -1
-ego/whistle-3
- rotate: false
- xy: 2030, 702
- size: 16, 36
- orig: 16, 36
- offset: 0, 0
- index: -1
-ego/whistle-4
- rotate: false
- xy: 2030, 664
- size: 16, 36
- orig: 16, 36
- offset: 0, 0
- index: -1
-ending-castle/ending-castle2-assets/collision
- rotate: false
- xy: 324, 1322
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-held/flesh
- rotate: false
- xy: 592, 13
- size: 20, 20
- orig: 20, 20
- offset: 0, 0
- index: -1
-held/hand
- rotate: false
- xy: 1612, 1564
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-held/head
- rotate: false
- xy: 2, 112
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/closed-blinds
- rotate: false
- xy: 324, 1564
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/darken
- rotate: false
- xy: 646, 1564
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/desk
- rotate: false
- xy: 2, 838
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/fg
- rotate: false
- xy: 2, 596
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/glow
- rotate: false
- xy: 324, 596
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/open-blinds
- rotate: false
- xy: 324, 112
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-antique/portrait
- rotate: false
- xy: 2030, 574
- size: 16, 16
- orig: 16, 16
- offset: 0, 0
- index: -1
-inside-antique/shopkeep
- rotate: false
- xy: 2022, 236
- size: 18, 21
- orig: 18, 21
- offset: 0, 0
- index: -1
-inside-antique/teddy
- rotate: false
- xy: 684, 13
- size: 16, 16
- orig: 16, 16
- offset: 0, 0
- index: -1
-inside-cafeteria/fg
- rotate: false
- xy: 324, 838
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-cafeteria/fight
- rotate: false
- xy: 968, 1322
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-cafeteria/fight-new-assets/fight-1
- rotate: false
- xy: 1290, 402
- size: 256, 192
- orig: 256, 192
- offset: 0, 0
- index: -1
-inside-cafeteria/fight-new-assets/fight-2
- rotate: false
- xy: 1612, 644
- size: 256, 192
- orig: 256, 192
- offset: 0, 0
- index: -1
-inside-cafeteria/fight-new-assets/fight-3
- rotate: false
- xy: 1290, 208
- size: 256, 192
- orig: 256, 192
- offset: 0, 0
- index: -1
-inside-cafeteria/fight-new-assets/fight-4
- rotate: false
- xy: 1290, 14
- size: 256, 192
- orig: 256, 192
- offset: 0, 0
- index: -1
-inside-cafeteria/fight-new-assets/fight-5
- rotate: false
- xy: 1612, 450
- size: 256, 192
- orig: 256, 192
- offset: 0, 0
- index: -1
-inside-cafeteria/fight-new-assets/fight-6
- rotate: false
- xy: 1548, 256
- size: 256, 192
- orig: 256, 192
- offset: 0, 0
- index: -1
-inside-cafeteria/fight-new-assets/fight-7
- rotate: false
- xy: 1548, 62
- size: 256, 192
- orig: 256, 192
- offset: 0, 0
- index: -1
-inside-cafeteria/glow
- rotate: false
- xy: 646, 838
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-castle/books
- rotate: false
- xy: 614, 10
- size: 34, 19
- orig: 34, 19
- offset: 0, 0
- index: -1
-inside-castle/brian-working
- rotate: false
- xy: 2, 66
- size: 320, 44
- orig: 320, 44
- offset: 0, 0
- index: -1
-inside-castle/fight-1
- rotate: false
- xy: 1290, 1564
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-castle/gameplayer
- rotate: false
- xy: 1548, 450
- size: 40, 44
- orig: 40, 44
- offset: 0, 0
- index: -1
-inside-castle/hands-1
- rotate: false
- xy: 1808, 10
- size: 104, 104
- orig: 104, 104
- offset: 0, 0
- index: -1
-inside-castle/magic
- rotate: false
- xy: 878, 47
- size: 20, 20
- orig: 20, 20
- offset: 0, 0
- index: -1
-inside-castle/pedestal-overlay
- rotate: false
- xy: 646, 354
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-castle/sign3
- rotate: false
- xy: 832, 47
- size: 44, 20
- orig: 44, 20
- offset: 0, 0
- index: -1
-inside-castle/sign-3
- rotate: false
- xy: 832, 47
- size: 44, 20
- orig: 44, 20
- offset: 0, 0
- index: -1
-inside-castle/way-back-tree
- rotate: false
- xy: 968, 112
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-house/desk
- rotate: false
- xy: 324, 1080
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-house/glow
- rotate: false
- xy: 968, 1080
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-house/sillhoute
- rotate: false
- xy: 1612, 1080
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-jail/bars
- rotate: false
- xy: 2, 1564
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-jail/bars-
- rotate: false
- xy: 324, 1806
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-jail/candle
- rotate: false
- xy: 202, 2
- size: 80, 25
- orig: 80, 25
- offset: 0, 0
- index: -1
-inside-jail/fg
- rotate: false
- xy: 646, 1080
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-jail/glow
- rotate: false
- xy: 1290, 1322
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-inside-jail/warden
- rotate: false
- xy: 1548, 2
- size: 258, 58
- orig: 258, 58
- offset: 0, 0
- index: -1
-inside-jail/window-bent
- rotate: false
- xy: 2022, 259
- size: 18, 29
- orig: 18, 29
+ xy: 324, 103
+ size: 168, 34
+ orig: 168, 34
offset: 0, 0
index: -1
inventory
rotate: false
- xy: 1870, 460
- size: 42, 42
- orig: 42, 42
+ xy: 792, 454
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: -1
+open-inventory-1
+ rotate: false
+ xy: 792, 454
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
inventory-overlay
rotate: false
- xy: 968, 838
+ xy: 2, 28
size: 320, 240
orig: 320, 240
offset: 0, 0
index: -1
-outside-castle/brush-bl
+open-inventory-11
rotate: false
- xy: 1548, 496
- size: 60, 60
- orig: 60, 60
+ xy: 690, 285
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outside-castle/note
+open-inventory-12
rotate: false
- xy: 2030, 628
- size: 16, 16
- orig: 16, 16
+ xy: 924, 454
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outside-castle/peddler
+open-inventory-13
rotate: false
- xy: 2022, 290
- size: 18, 36
- orig: 18, 36
+ xy: 968, 454
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outside-castle/walk-behind
+open-inventory-2
rotate: false
- xy: 1612, 838
- size: 320, 240
- orig: 320, 240
+ xy: 324, 45
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outside-jail/axe
+open-inventory-3
rotate: false
- xy: 2022, 328
- size: 22, 33
- orig: 22, 33
+ xy: 646, 343
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outside-jail/candle
+open-inventory-4
rotate: false
- xy: 510, 8
- size: 80, 25
- orig: 80, 25
+ xy: 836, 454
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outside-jail/open-stash
+open-inventory-5
rotate: false
- xy: 614, 69
- size: 290, 41
- orig: 290, 41
+ xy: 368, 45
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outsidehouse/background-trees
+open-inventory-6
rotate: false
- xy: 2, 1806
- size: 320, 240
- orig: 320, 240
+ xy: 646, 285
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outsidehouse/fence
+open-inventory-7
rotate: false
- xy: 968, 1564
- size: 320, 240
- orig: 320, 240
+ xy: 690, 343
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outsidehouse/fg2
+open-inventory-8
rotate: false
- xy: 1978, 778
- size: 59, 61
- orig: 59, 61
+ xy: 880, 454
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outsidehouse/foreground
+open-inventory-10
rotate: false
- xy: 1612, 1806
- size: 320, 240
- orig: 320, 240
+ xy: 880, 454
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
-outsidehouse/house
+open-inventory-9
rotate: false
- xy: 646, 596
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-outsidehouse/note
- rotate: false
- xy: 2030, 610
- size: 16, 16
- orig: 16, 16
- offset: 0, 0
- index: -1
-outsidehouse/sheep-walk
- rotate: false
- xy: 2, 6
- size: 198, 21
- orig: 198, 21
+ xy: 412, 45
+ size: 42, 56
+ orig: 42, 56
offset: 0, 0
index: -1
pathfind-test
rotate: false
- xy: 2030, 592
+ xy: 494, 103
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
+player
+ rotate: false
+ xy: 646, 438
+ size: 144, 72
+ orig: 144, 72
+ offset: 0, 0
+ index: -1
+pos
+ rotate: false
+ xy: 324, 139
+ size: 290, 129
+ orig: 290, 129
+ offset: 0, 0
+ index: -1
+safe-anim
+ rotate: false
+ xy: 646, 401
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
save
rotate: false
- xy: 2030, 556
+ xy: 616, 162
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
-space/bloodclot-explode-10
+talk-bg
rotate: false
- xy: 1870, 671
- size: 106, 165
- orig: 106, 165
+ xy: 456, 61
+ size: 40, 40
+ orig: 40, 40
offset: 0, 0
index: -1
-space/bloodclot-explode-11
+talk-bg-2
rotate: false
- xy: 1870, 504
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-12
- rotate: false
- xy: 1806, 283
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-13
- rotate: false
- xy: 1806, 116
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-14
- rotate: false
- xy: 1914, 337
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-15
- rotate: false
- xy: 1914, 170
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-16
- rotate: false
- xy: 1914, 3
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-3
- rotate: false
- xy: 1934, 1881
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-4
- rotate: false
- xy: 1934, 1714
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-5
- rotate: false
- xy: 1934, 1547
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-6
- rotate: false
- xy: 1934, 1380
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-7
- rotate: false
- xy: 1934, 1213
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-8
- rotate: false
- xy: 1934, 1046
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bloodclot-explode-9
- rotate: false
- xy: 1934, 879
- size: 106, 165
- orig: 106, 165
- offset: 0, 0
- index: -1
-space/bullet
- rotate: false
- xy: 316, 9
- size: 192, 24
- orig: 192, 24
- offset: 0, 0
- index: -1
-space/later
- rotate: false
- xy: 1290, 1080
- size: 320, 240
- orig: 320, 240
+ xy: 616, 180
+ size: 21, 40
+ orig: 21, 40
offset: 0, 0
index: -1
the-end
rotate: false
- xy: 968, 354
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-title/clouds
- rotate: false
- xy: 646, 1806
- size: 320, 240
- orig: 320, 240
- offset: 0, 0
- index: -1
-title/logo
- rotate: false
- xy: 1612, 1322
+ xy: 324, 270
size: 320, 240
orig: 320, 240
offset: 0, 0
index: -1
white
rotate: false
- xy: 650, 5
+ xy: 36, 2
size: 32, 24
orig: 32, 24
offset: 0, 0
index: -1
-wizard/experiment-1
+wizard
rotate: false
- xy: 1978, 505
- size: 45, 55
- orig: 45, 55
+ xy: 616, 222
+ size: 20, 46
+ orig: 20, 46
offset: 0, 0
index: -1
-pack3.png
-size: 2048,1024
-format: RGBA8888
+packed29.png
+size: 1024,512
+format: RGBA4444
filter: Nearest,Nearest
repeat: none
+behindhouse/abc
+ rotate: false
+ xy: 646, 83
+ size: 320, 62
+ orig: 320, 62
+ offset: 0, 0
+ index: -1
+behindhouse/background
+ rotate: false
+ xy: 2, 267
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+behindhouse/brush
+ rotate: false
+ xy: 2, 25
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+behindhouse/fg
+ rotate: false
+ xy: 324, 267
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+behindhouse/fg2
+ rotate: false
+ xy: 646, 147
+ size: 183, 360
+ orig: 183, 360
+ offset: 0, 0
+ index: -1
behindhouse/fgleft
rotate: false
- xy: 218, 33
+ xy: 646, 31
size: 161, 50
orig: 161, 50
offset: 0, 0
index: -1
+behindhouse/house
+ rotate: false
+ xy: 324, 25
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+behindhouse/house-cover
+ rotate: false
+ xy: 2, 2
+ size: 20, 21
+ orig: 20, 21
+ offset: 0, 0
+ index: -1
+behindhouse/stick
+ rotate: false
+ xy: 831, 465
+ size: 24, 42
+ orig: 24, 42
+ offset: 0, 0
+ index: -1
+
+packed30.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
castle-gate/Untitled
rotate: false
- xy: 209, 119
+ xy: 638, 460
size: 192, 35
orig: 192, 35
offset: 0, 0
index: -1
+castle-gate/background
+ rotate: false
+ xy: 2, 255
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+castle-gate/coinflip
+ rotate: false
+ xy: 2, 2
+ size: 50, 10
+ orig: 50, 10
+ offset: 0, 0
+ index: -1
+castle-gate/frankie
+ rotate: false
+ xy: 324, 460
+ size: 312, 35
+ orig: 312, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-1
+ rotate: false
+ xy: 763, 104
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-2
+ rotate: false
+ xy: 835, 147
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-3
+ rotate: false
+ xy: 763, 67
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-4
+ rotate: false
+ xy: 789, 104
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-5
+ rotate: false
+ xy: 861, 147
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-6
+ rotate: false
+ xy: 789, 67
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-7
+ rotate: false
+ xy: 887, 147
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/frankie-walk-8
+ rotate: false
+ xy: 913, 147
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: -1
+castle-gate/goon-1
+ rotate: false
+ xy: 142, 14
+ size: 26, 33
+ orig: 26, 33
+ offset: 0, 0
+ index: -1
+castle-gate/goon-2
+ rotate: false
+ xy: 192, 49
+ size: 24, 32
+ orig: 24, 32
+ offset: 0, 0
+ index: -1
+castle-gate/goon-2-flip
+ rotate: false
+ xy: 142, 49
+ size: 48, 32
+ orig: 48, 32
+ offset: 0, 0
+ index: -1
castle-gate/goon-2-search
rotate: false
- xy: 218, 85
+ xy: 142, 83
size: 192, 32
orig: 192, 32
offset: 0, 0
index: -1
+castle-gate/goon-2-talk
+ rotate: false
+ xy: 939, 150
+ size: 24, 32
+ orig: 24, 32
+ offset: 0, 0
+ index: -1
+castle-gate/goon-2-walk
+ rotate: false
+ xy: 832, 461
+ size: 168, 34
+ orig: 168, 34
+ offset: 0, 0
+ index: -1
+castle-gate/overlay
+ rotate: false
+ xy: 2, 14
+ size: 138, 239
+ orig: 138, 239
+ offset: 0, 0
+ index: -1
+castle-gate/stash-closed
+ rotate: false
+ xy: 763, 141
+ size: 70, 41
+ orig: 70, 41
+ offset: 0, 0
+ index: -1
castle-gate/throw-walkie-1
rotate: false
- xy: 518, 692
+ xy: 324, 322
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-2
rotate: false
- xy: 2, 110
+ xy: 142, 117
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-3
rotate: false
- xy: 260, 331
+ xy: 349, 184
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-4
rotate: false
- xy: 1042, 886
+ xy: 349, 46
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-5
rotate: false
- xy: 1249, 886
+ xy: 531, 322
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-6
rotate: false
- xy: 1456, 886
+ xy: 556, 184
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-7
rotate: false
- xy: 1663, 886
+ xy: 556, 46
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-8
rotate: false
- xy: 260, 193
+ xy: 738, 322
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
castle-gate/throw-walkie-9
rotate: false
- xy: 776, 758
+ xy: 763, 184
size: 205, 136
orig: 205, 136
offset: 0, 0
index: -1
+
+packed31.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+cat-tree/Untitled
+ rotate: false
+ xy: 713, 242
+ size: 28, 18
+ orig: 28, 18
+ offset: 0, 0
+ index: -1
+cat-tree/pounce
+ rotate: false
+ xy: 713, 242
+ size: 28, 18
+ orig: 28, 18
+ offset: 0, 0
+ index: -1
+cat-tree/background
+ rotate: false
+ xy: 2, 270
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+cat-tree/brush-l
+ rotate: false
+ xy: 324, 120
+ size: 152, 70
+ orig: 152, 70
+ offset: 0, 0
+ index: -1
+cat-tree/cat
+ rotate: false
+ xy: 2, 2
+ size: 22, 11
+ orig: 22, 11
+ offset: 0, 0
+ index: -1
+cat-tree/cat-stand
+ rotate: false
+ xy: 2, 15
+ size: 198, 11
+ orig: 198, 11
+ offset: 0, 0
+ index: -1
+cat-tree/destroy-ladder
+ rotate: false
+ xy: 324, 472
+ size: 522, 38
+ orig: 522, 38
+ offset: 0, 0
+ index: -1
+cat-tree/dot
+ rotate: false
+ xy: 598, 189
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
cat-tree/eye-1
rotate: false
- xy: 209, 198
+ xy: 444, 70
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-6
rotate: false
- xy: 209, 198
+ xy: 444, 70
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-10
rotate: false
- xy: 1130, 281
+ xy: 628, 96
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-11
rotate: false
- xy: 1144, 231
+ xy: 674, 96
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-12
rotate: false
- xy: 1176, 281
+ xy: 582, 46
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-13
rotate: false
- xy: 1190, 231
+ xy: 628, 46
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-2
rotate: false
- xy: 725, 723
+ xy: 444, 20
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-3
rotate: false
- xy: 631, 7
+ xy: 490, 100
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-4
rotate: false
- xy: 1572, 502
+ xy: 490, 50
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-5
rotate: false
- xy: 1618, 502
+ xy: 536, 100
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-7
rotate: false
- xy: 1618, 502
+ xy: 536, 100
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-8
rotate: false
- xy: 1815, 315
+ xy: 536, 50
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
cat-tree/eye-9
rotate: false
- xy: 1084, 281
+ xy: 582, 96
size: 44, 48
orig: 44, 48
offset: 0, 0
index: -1
+cat-tree/grandma
+ rotate: false
+ xy: 324, 192
+ size: 275, 36
+ orig: 275, 36
+ offset: 0, 0
+ index: -1
+cat-tree/grandma-cry-1
+ rotate: false
+ xy: 713, 430
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: -1
cat-tree/grandma-cry-10
rotate: false
- xy: 412, 79
+ xy: 773, 388
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-11
rotate: false
- xy: 1374, 449
+ xy: 384, 36
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-12
rotate: false
- xy: 571, 15
+ xy: 713, 304
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-13
rotate: false
- xy: 1374, 407
+ xy: 773, 346
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-14
rotate: false
- xy: 1374, 365
+ xy: 713, 262
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-15
rotate: false
- xy: 1986, 600
+ xy: 773, 304
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-16
rotate: false
- xy: 1986, 558
+ xy: 773, 262
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-17
rotate: false
- xy: 381, 37
+ xy: 601, 188
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-18
rotate: false
- xy: 729, 55
+ xy: 598, 146
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-19
rotate: false
- xy: 724, 13
+ xy: 661, 188
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: -1
+cat-tree/grandma-cry-2
+ rotate: false
+ xy: 324, 78
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-20
rotate: false
- xy: 789, 43
+ xy: 658, 146
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: -1
+cat-tree/grandma-cry-3
+ rotate: false
+ xy: 478, 150
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: -1
+cat-tree/grandma-cry-4
+ rotate: false
+ xy: 713, 388
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: -1
+cat-tree/grandma-cry-5
+ rotate: false
+ xy: 773, 430
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: -1
+cat-tree/grandma-cry-6
+ rotate: false
+ xy: 324, 36
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-7
rotate: false
- xy: 1988, 982
+ xy: 384, 78
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-8
rotate: false
- xy: 1988, 940
+ xy: 538, 150
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/grandma-cry-9
rotate: false
- xy: 1988, 898
+ xy: 713, 346
size: 58, 40
orig: 58, 40
offset: 0, 0
index: -1
cat-tree/inventory
rotate: false
- xy: 1664, 507
+ xy: 674, 52
size: 42, 42
orig: 42, 42
offset: 0, 0
index: -1
+cat-tree/monocle
+ rotate: false
+ xy: 202, 19
+ size: 28, 7
+ orig: 28, 7
+ offset: 0, 0
+ index: -1
cat-tree/owl
rotate: false
- xy: 1415, 854
+ xy: 848, 480
size: 168, 30
orig: 168, 30
offset: 0, 0
index: -1
+cat-tree/sillhoute
+ rotate: false
+ xy: 2, 28
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+cat-tree/tree-and-rock
+ rotate: false
+ xy: 324, 230
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+cat-tree/tree-r
+ rotate: false
+ xy: 646, 230
+ size: 65, 240
+ orig: 65, 240
+ offset: 0, 0
+ index: -1
+
+packed32.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+dream/background
+ rotate: false
+ xy: 2, 587
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dream/broom
+ rotate: false
+ xy: 504, 840
+ size: 15, 66
+ orig: 15, 66
+ offset: 0, 0
+ index: -1
+dream/case
+ rotate: false
+ xy: 2, 2
+ size: 15, 38
+ orig: 15, 38
+ offset: 0, 0
+ index: -1
+dream/cliff
+ rotate: false
+ xy: 2, 345
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dream/clouds1
+ rotate: false
+ xy: 2, 103
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
dream/corner-l
rotate: false
- xy: 791, 325
+ xy: 2, 42
size: 112, 59
orig: 112, 59
offset: 0, 0
index: -1
dream/corner-r
rotate: false
- xy: 693, 97
+ xy: 646, 684
size: 112, 59
orig: 112, 59
offset: 0, 0
index: -1
+dream/dot
+ rotate: false
+ xy: 968, 918
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+dream/fairy-godfather
+ rotate: false
+ xy: 2, 908
+ size: 567, 77
+ orig: 567, 77
+ offset: 0, 0
+ index: -1
+dream/fairy-godfather-magic
+ rotate: false
+ xy: 2, 829
+ size: 500, 77
+ orig: 500, 77
+ offset: 0, 0
+ index: -1
+dream/far
+ rotate: false
+ xy: 324, 587
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dream/fountain
+ rotate: false
+ xy: 324, 345
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dream/island
+ rotate: false
+ xy: 614, 965
+ size: 30, 20
+ orig: 30, 20
+ offset: 0, 0
+ index: -1
+dream/pedestals
+ rotate: false
+ xy: 324, 103
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dream/plaque1
+ rotate: false
+ xy: 646, 671
+ size: 8, 11
+ orig: 8, 11
+ offset: 0, 0
+ index: -1
+dream/plaque2
+ rotate: false
+ xy: 571, 919
+ size: 10, 6
+ orig: 10, 6
+ offset: 0, 0
+ index: -1
+dream/plaque3
+ rotate: false
+ xy: 760, 732
+ size: 8, 11
+ orig: 8, 11
+ offset: 0, 0
+ index: -1
+dream/shovel
+ rotate: false
+ xy: 968, 921
+ size: 19, 64
+ orig: 19, 64
+ offset: 0, 0
+ index: -1
dream/sign
rotate: false
- xy: 1939, 669
+ xy: 571, 927
size: 41, 58
orig: 41, 58
offset: 0, 0
index: -1
+dream/sky
+ rotate: false
+ xy: 646, 745
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dream/sword
+ rotate: false
+ xy: 116, 63
+ size: 15, 38
+ orig: 15, 38
+ offset: 0, 0
+ index: -1
+
+packed33.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+ego/Untitled
+ rotate: false
+ xy: 664, 897
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+ego/talk
+ rotate: false
+ xy: 664, 897
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+ego/axe
+ rotate: false
+ xy: 2, 704
+ size: 420, 70
+ orig: 420, 70
+ offset: 0, 0
+ index: -1
+ego/axe-wood
+ rotate: false
+ xy: 2, 928
+ size: 660, 70
+ orig: 660, 70
+ offset: 0, 0
+ index: -1
+ego/base
+ rotate: false
+ xy: 454, 514
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+ego/whistle-1
+ rotate: false
+ xy: 454, 514
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+ego/burnt
+ rotate: false
+ xy: 2, 776
+ size: 480, 46
+ orig: 480, 46
+ offset: 0, 0
+ index: -1
ego/cat-toy
rotate: false
- xy: 518, 640
+ xy: 2, 420
size: 205, 50
orig: 205, 50
offset: 0, 0
index: -1
+ego/climb
+ rotate: false
+ xy: 2, 529
+ size: 242, 46
+ orig: 242, 46
+ offset: 0, 0
+ index: -1
+ego/crawl
+ rotate: false
+ xy: 664, 973
+ size: 273, 25
+ orig: 273, 25
+ offset: 0, 0
+ index: -1
+ego/crowbar
+ rotate: false
+ xy: 634, 859
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+ego/dot
+ rotate: false
+ xy: 295, 502
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+ego/fire
+ rotate: false
+ xy: 664, 935
+ size: 216, 36
+ orig: 216, 36
+ offset: 0, 0
+ index: -1
+ego/flying
+ rotate: false
+ xy: 988, 879
+ size: 34, 44
+ orig: 34, 44
+ offset: 0, 0
+ index: -1
+ego/frog
+ rotate: false
+ xy: 261, 467
+ size: 32, 36
+ orig: 32, 36
+ offset: 0, 0
+ index: -1
ego/frustrated-talk
rotate: false
- xy: 801, 162
+ xy: 484, 786
size: 96, 36
orig: 96, 36
offset: 0, 0
index: -1
+ego/georgia
+ rotate: false
+ xy: 492, 602
+ size: 90, 30
+ orig: 90, 30
+ offset: 0, 0
+ index: -1
+ego/get-sick
+ rotate: false
+ xy: 480, 710
+ size: 108, 36
+ orig: 108, 36
+ offset: 0, 0
+ index: -1
+ego/glad
+ rotate: false
+ xy: 882, 925
+ size: 140, 46
+ orig: 140, 46
+ offset: 0, 0
+ index: -1
ego/grow
rotate: false
- xy: 907, 374
+ xy: 492, 634
size: 90, 36
orig: 90, 36
offset: 0, 0
index: -1
ego/grow-talk
rotate: false
- xy: 830, 2
+ xy: 166, 350
size: 36, 36
orig: 36, 36
offset: 0, 0
index: -1
ego/hand-hold
rotate: false
- xy: 1855, 536
+ xy: 204, 362
size: 36, 36
orig: 36, 36
offset: 0, 0
index: -1
-ending-castle/hand-hold
+ego/hold-hand
rotate: false
- xy: 1855, 536
- size: 36, 36
- orig: 36, 36
+ xy: 958, 815
+ size: 16, 36
+ orig: 16, 36
offset: 0, 0
index: -1
ego/hold-up-to-window
rotate: false
- xy: 966, 580
+ xy: 492, 672
size: 108, 36
orig: 108, 36
offset: 0, 0
index: -1
+ego/ida
+ rotate: false
+ xy: 424, 704
+ size: 54, 70
+ orig: 54, 70
+ offset: 0, 0
+ index: -1
+ego/idea
+ rotate: false
+ xy: 94, 278
+ size: 54, 70
+ orig: 54, 70
+ offset: 0, 0
+ index: -1
+ego/in-love
+ rotate: false
+ xy: 2, 824
+ size: 570, 30
+ orig: 570, 30
+ offset: 0, 0
+ index: -1
ego/jump-straight
rotate: false
- xy: 905, 324
+ xy: 2, 198
size: 90, 48
orig: 90, 48
offset: 0, 0
index: -1
+ego/love-1
+ rotate: false
+ xy: 582, 784
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
ego/love-10
rotate: false
- xy: 571, 57
+ xy: 884, 853
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-11
rotate: false
- xy: 623, 57
+ xy: 936, 853
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-12
rotate: false
- xy: 1070, 55
+ xy: 246, 505
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-13
rotate: false
- xy: 1166, 489
+ xy: 150, 278
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-14
rotate: false
- xy: 1166, 417
+ xy: 146, 206
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-15
rotate: false
- xy: 1218, 489
+ xy: 584, 600
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-16
rotate: false
- xy: 1218, 417
+ xy: 546, 528
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-17
rotate: false
- xy: 1270, 489
+ xy: 598, 528
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-18
rotate: false
- xy: 1270, 417
+ xy: 298, 467
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-19
rotate: false
- xy: 1322, 514
+ xy: 350, 480
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+ego/love-2
+ rotate: false
+ xy: 2, 74
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-20
rotate: false
- xy: 1322, 442
+ xy: 402, 480
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-21
rotate: false
- xy: 1374, 491
+ xy: 198, 206
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-22
rotate: false
- xy: 1426, 491
+ xy: 202, 278
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-23
rotate: false
- xy: 1322, 370
+ xy: 250, 206
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-24
rotate: false
- xy: 1434, 362
+ xy: 209, 400
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-25
rotate: false
- xy: 1887, 657
+ xy: 261, 395
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-26
rotate: false
- xy: 1887, 585
+ xy: 313, 395
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+ego/love-3
+ rotate: false
+ xy: 292, 582
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-4
rotate: false
- xy: 914, 566
+ xy: 94, 206
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-5
rotate: false
- xy: 1961, 731
+ xy: 2, 2
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-6
rotate: false
- xy: 1783, 612
+ xy: 780, 825
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-7
rotate: false
- xy: 1835, 612
+ xy: 832, 825
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-8
rotate: false
- xy: 411, 121
+ xy: 54, 74
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
ego/love-9
rotate: false
- xy: 472, 63
+ xy: 54, 2
size: 50, 70
orig: 50, 70
offset: 0, 0
index: -1
+ego/pant
+ rotate: false
+ xy: 810, 897
+ size: 62, 36
+ orig: 62, 36
+ offset: 0, 0
+ index: -1
ego/poke
rotate: false
- xy: 899, 161
+ xy: 2, 146
size: 80, 50
orig: 80, 50
offset: 0, 0
index: -1
ego/reach
rotate: false
- xy: 1779, 684
+ xy: 884, 815
size: 72, 36
orig: 72, 36
offset: 0, 0
index: -1
ego/scared
rotate: false
- xy: 1783, 574
+ xy: 472, 564
size: 72, 36
orig: 72, 36
offset: 0, 0
index: -1
ego/scared-walk
rotate: false
- xy: 1681, 662
+ xy: 484, 748
size: 96, 36
orig: 96, 36
offset: 0, 0
index: -1
+ego/scoot
+ rotate: false
+ xy: 2, 388
+ size: 200, 30
+ orig: 200, 30
+ offset: 0, 0
+ index: -1
+ego/shock
+ rotate: false
+ xy: 2, 654
+ size: 360, 48
+ orig: 360, 48
+ offset: 0, 0
+ index: -1
ego/shoot
rotate: false
- xy: 1585, 848
+ xy: 634, 821
size: 144, 36
orig: 144, 36
offset: 0, 0
index: -1
+ego/sigh
+ rotate: false
+ xy: 2, 350
+ size: 162, 36
+ orig: 162, 36
+ offset: 0, 0
+ index: -1
+ego/spear
+ rotate: false
+ xy: 2, 248
+ size: 90, 100
+ orig: 90, 100
+ offset: 0, 0
+ index: -1
ego/squat
rotate: false
- xy: 1111, 740
+ xy: 364, 666
size: 126, 36
orig: 126, 36
offset: 0, 0
index: -1
ego/squat-talk
rotate: false
- xy: 1781, 536
+ xy: 472, 526
size: 72, 36
orig: 72, 36
offset: 0, 0
index: -1
ego/stand
rotate: false
- xy: 1239, 740
+ xy: 364, 628
size: 126, 36
orig: 126, 36
offset: 0, 0
index: -1
+ego/standup
+ rotate: false
+ xy: 2, 472
+ size: 225, 55
+ orig: 225, 55
+ offset: 0, 0
+ index: -1
ego/suspended
rotate: false
- xy: 1731, 848
+ xy: 634, 783
size: 140, 36
orig: 140, 36
offset: 0, 0
index: -1
+ego/swing
+ rotate: false
+ xy: 2, 577
+ size: 288, 75
+ orig: 288, 75
+ offset: 0, 0
+ index: -1
+ego/swing-shovel
+ rotate: false
+ xy: 2, 856
+ size: 630, 70
+ orig: 630, 70
+ offset: 0, 0
+ index: -1
ego/thorw
rotate: false
- xy: 1101, 618
+ xy: 344, 590
size: 126, 36
orig: 126, 36
offset: 0, 0
index: -1
ego/throw
rotate: false
- xy: 1415, 751
+ xy: 344, 552
size: 126, 36
orig: 126, 36
offset: 0, 0
index: -1
ego/warden
rotate: false
- xy: 1708, 508
+ xy: 298, 539
size: 42, 41
orig: 42, 41
offset: 0, 0
index: -1
-ending-castle/crowd-right
+ego/whistle-2
rotate: false
- xy: 1870, 887
+ xy: 242, 362
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+ego/whistle-3
+ rotate: false
+ xy: 454, 476
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+ego/whistle-4
+ rotate: false
+ xy: 472, 488
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+
+packed34.png
+size: 512,256
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+ending-castle/Untitled
+ rotate: false
+ xy: 238, 98
+ size: 28, 39
+ orig: 28, 39
+ offset: 0, 0
+ index: -1
+ending-castle/game-player
+ rotate: false
+ xy: 238, 98
+ size: 28, 39
+ orig: 28, 39
+ offset: 0, 0
+ index: -1
+ending-castle/crowd-left
+ rotate: false
+ xy: 2, 60
size: 116, 135
orig: 116, 135
offset: 0, 0
index: -1
+ending-castle/crowd-right
+ rotate: false
+ xy: 120, 60
+ size: 116, 135
+ orig: 116, 135
+ offset: 0, 0
+ index: -1
+ending-castle/duke
+ rotate: false
+ xy: 2, 197
+ size: 440, 48
+ orig: 440, 48
+ offset: 0, 0
+ index: -1
ending-castle/frankie-fall-1
rotate: false
- xy: 1089, 201
+ xy: 31, 23
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-10
rotate: false
- xy: 1299, 163
+ xy: 241, 23
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-11
rotate: false
- xy: 1256, 126
+ xy: 268, 123
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-12
rotate: false
- xy: 1298, 126
+ xy: 310, 123
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-2
rotate: false
- xy: 1173, 194
+ xy: 267, 160
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-3
rotate: false
- xy: 1215, 194
+ xy: 73, 23
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-4
rotate: false
- xy: 1674, 299
+ xy: 309, 160
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-5
rotate: false
- xy: 1165, 380
+ xy: 115, 23
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-6
rotate: false
- xy: 1207, 380
+ xy: 351, 160
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-7
rotate: false
- xy: 1249, 380
+ xy: 157, 23
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-8
rotate: false
- xy: 1081, 344
+ xy: 393, 160
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
ending-castle/frankie-fall-9
rotate: false
- xy: 1257, 163
+ xy: 199, 23
size: 40, 35
orig: 40, 35
offset: 0, 0
index: -1
+ending-castle/guard-1
+ rotate: false
+ xy: 2, 2
+ size: 27, 56
+ orig: 27, 56
+ offset: 0, 0
+ index: -1
+ending-castle/guard-2
+ rotate: false
+ xy: 238, 139
+ size: 27, 56
+ orig: 27, 56
+ offset: 0, 0
+ index: -1
+ending-castle/hand-hold
+ rotate: false
+ xy: 238, 60
+ size: 36, 36
+ orig: 36, 36
+ offset: 0, 0
+ index: -1
ending-castle/warden-2
rotate: false
- xy: 1100, 238
+ xy: 444, 204
size: 42, 41
orig: 42, 41
offset: 0, 0
index: -1
+
+packed35.png
+size: 1024,256
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+ending-castle/ending-castle2-assets/background
+ rotate: false
+ xy: 2, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+ending-castle/ending-castle2-assets/collision
+ rotate: false
+ xy: 324, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+ending-castle/ending-castle2-assets/foreground
+ rotate: false
+ xy: 646, 133
+ size: 344, 109
+ orig: 344, 109
+ offset: 0, 0
+ index: -1
+
+packed36.png
+size: 4096,4096
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+full-splash/POPPixelLogo_02_1
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_188
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_191
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_4
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_5
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_194
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_195
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_2
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_198
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_192
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_197
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_193
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_189
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_3
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_200
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_196
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_199
+ rotate: false
+ xy: 2, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_10
+ rotate: false
+ xy: 324, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_100
+ rotate: false
+ xy: 2256, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_101
+ rotate: false
+ xy: 2578, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_102
+ rotate: false
+ xy: 2900, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_103
+ rotate: false
+ xy: 3222, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_104
+ rotate: false
+ xy: 3544, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_105
+ rotate: false
+ xy: 2, 486
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_106
+ rotate: false
+ xy: 324, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_107
+ rotate: false
+ xy: 646, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_108
+ rotate: false
+ xy: 968, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_109
+ rotate: false
+ xy: 968, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_11
+ rotate: false
+ xy: 646, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_110
+ rotate: false
+ xy: 1290, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_111
+ rotate: false
+ xy: 1612, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_112
+ rotate: false
+ xy: 1934, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_113
+ rotate: false
+ xy: 2256, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_114
+ rotate: false
+ xy: 2578, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_115
+ rotate: false
+ xy: 2900, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_116
+ rotate: false
+ xy: 3222, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_117
+ rotate: false
+ xy: 3544, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_118
+ rotate: false
+ xy: 2, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_119
+ rotate: false
+ xy: 2, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_12
+ rotate: false
+ xy: 2, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_120
+ rotate: false
+ xy: 324, 486
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_121
+ rotate: false
+ xy: 646, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_122
+ rotate: false
+ xy: 968, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_123
+ rotate: false
+ xy: 1290, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_124
+ rotate: false
+ xy: 1612, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_125
+ rotate: false
+ xy: 1934, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_126
+ rotate: false
+ xy: 2256, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_127
+ rotate: false
+ xy: 2578, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_128
+ rotate: false
+ xy: 2900, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_129
+ rotate: false
+ xy: 2900, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_13
+ rotate: false
+ xy: 324, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_130
+ rotate: false
+ xy: 3222, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_131
+ rotate: false
+ xy: 3544, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_132
+ rotate: false
+ xy: 2, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_133
+ rotate: false
+ xy: 324, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_134
+ rotate: false
+ xy: 646, 486
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_135
+ rotate: false
+ xy: 968, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_136
+ rotate: false
+ xy: 1290, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_137
+ rotate: false
+ xy: 1612, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_138
+ rotate: false
+ xy: 1934, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_139
+ rotate: false
+ xy: 1934, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_14
+ rotate: false
+ xy: 646, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_140
+ rotate: false
+ xy: 2256, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_141
+ rotate: false
+ xy: 2578, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_142
+ rotate: false
+ xy: 2900, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_143
+ rotate: false
+ xy: 3222, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_144
+ rotate: false
+ xy: 3544, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_145
+ rotate: false
+ xy: 324, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_146
+ rotate: false
+ xy: 646, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_147
+ rotate: false
+ xy: 968, 486
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_148
+ rotate: false
+ xy: 1290, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_149
+ rotate: false
+ xy: 1290, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_15
+ rotate: false
+ xy: 968, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_150
+ rotate: false
+ xy: 1612, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_151
+ rotate: false
+ xy: 1934, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_152
+ rotate: false
+ xy: 2256, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_153
+ rotate: false
+ xy: 2578, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_154
+ rotate: false
+ xy: 2900, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_155
+ rotate: false
+ xy: 3222, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_156
+ rotate: false
+ xy: 3544, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_157
+ rotate: false
+ xy: 646, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_158
+ rotate: false
+ xy: 968, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_159
+ rotate: false
+ xy: 968, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_16
+ rotate: false
+ xy: 2, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_160
+ rotate: false
+ xy: 1290, 486
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_161
+ rotate: false
+ xy: 1612, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_162
+ rotate: false
+ xy: 1934, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_163
+ rotate: false
+ xy: 2256, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_164
+ rotate: false
+ xy: 2578, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_165
+ rotate: false
+ xy: 2900, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_166
+ rotate: false
+ xy: 3222, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_167
+ rotate: false
+ xy: 3544, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_168
+ rotate: false
+ xy: 968, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_169
+ rotate: false
+ xy: 968, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_17
+ rotate: false
+ xy: 324, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_170
+ rotate: false
+ xy: 1290, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_171
+ rotate: false
+ xy: 1612, 486
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_172
+ rotate: false
+ xy: 1934, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_173
+ rotate: false
+ xy: 2256, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_174
+ rotate: false
+ xy: 2578, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_175
+ rotate: false
+ xy: 2900, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_176
+ rotate: false
+ xy: 3222, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_177
+ rotate: false
+ xy: 3544, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_178
+ rotate: false
+ xy: 1290, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_179
+ rotate: false
+ xy: 1290, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_18
+ rotate: false
+ xy: 646, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_19
+ rotate: false
+ xy: 646, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_180
+ rotate: false
+ xy: 1612, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_181
+ rotate: false
+ xy: 1934, 486
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_182
+ rotate: false
+ xy: 2256, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_183
+ rotate: false
+ xy: 2578, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_184
+ rotate: false
+ xy: 2900, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_185
+ rotate: false
+ xy: 3222, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_186
+ rotate: false
+ xy: 3544, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_187
+ rotate: false
+ xy: 1612, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_190
+ rotate: false
+ xy: 1934, 244
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_20
+ rotate: false
+ xy: 968, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_21
+ rotate: false
+ xy: 1290, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_22
+ rotate: false
+ xy: 2, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_23
+ rotate: false
+ xy: 324, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_24
+ rotate: false
+ xy: 646, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_25
+ rotate: false
+ xy: 968, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_26
+ rotate: false
+ xy: 1290, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_27
+ rotate: false
+ xy: 1612, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_28
+ rotate: false
+ xy: 2, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_29
+ rotate: false
+ xy: 2, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_30
+ rotate: false
+ xy: 324, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_31
+ rotate: false
+ xy: 646, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_32
+ rotate: false
+ xy: 968, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_33
+ rotate: false
+ xy: 1290, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_34
+ rotate: false
+ xy: 1612, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_35
+ rotate: false
+ xy: 1934, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_36
+ rotate: false
+ xy: 2, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_37
+ rotate: false
+ xy: 324, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_38
+ rotate: false
+ xy: 646, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_39
+ rotate: false
+ xy: 646, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_40
+ rotate: false
+ xy: 968, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_41
+ rotate: false
+ xy: 1290, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_42
+ rotate: false
+ xy: 1612, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_43
+ rotate: false
+ xy: 1934, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_44
+ rotate: false
+ xy: 2256, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_45
+ rotate: false
+ xy: 2, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_46
+ rotate: false
+ xy: 324, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_47
+ rotate: false
+ xy: 646, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_48
+ rotate: false
+ xy: 968, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_49
+ rotate: false
+ xy: 968, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_50
+ rotate: false
+ xy: 1290, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_51
+ rotate: false
+ xy: 1612, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_52
+ rotate: false
+ xy: 1934, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_53
+ rotate: false
+ xy: 2256, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_54
+ rotate: false
+ xy: 2578, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_55
+ rotate: false
+ xy: 2, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_56
+ rotate: false
+ xy: 324, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_57
+ rotate: false
+ xy: 646, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_58
+ rotate: false
+ xy: 968, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_59
+ rotate: false
+ xy: 968, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_6
+ rotate: false
+ xy: 2, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_60
+ rotate: false
+ xy: 1290, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_61
+ rotate: false
+ xy: 1612, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_62
+ rotate: false
+ xy: 1934, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_63
+ rotate: false
+ xy: 2256, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_64
+ rotate: false
+ xy: 2578, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_65
+ rotate: false
+ xy: 2900, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_66
+ rotate: false
+ xy: 2, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_67
+ rotate: false
+ xy: 324, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_68
+ rotate: false
+ xy: 646, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_69
+ rotate: false
+ xy: 646, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_7
+ rotate: false
+ xy: 324, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_70
+ rotate: false
+ xy: 968, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_71
+ rotate: false
+ xy: 1290, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_72
+ rotate: false
+ xy: 1612, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_73
+ rotate: false
+ xy: 1934, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_74
+ rotate: false
+ xy: 2256, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_75
+ rotate: false
+ xy: 2578, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_76
+ rotate: false
+ xy: 2900, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_77
+ rotate: false
+ xy: 3222, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_78
+ rotate: false
+ xy: 2, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_79
+ rotate: false
+ xy: 2, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_8
+ rotate: false
+ xy: 2, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_9
+ rotate: false
+ xy: 2, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_80
+ rotate: false
+ xy: 324, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_81
+ rotate: false
+ xy: 646, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_82
+ rotate: false
+ xy: 968, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_83
+ rotate: false
+ xy: 1290, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_84
+ rotate: false
+ xy: 1612, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_85
+ rotate: false
+ xy: 1934, 2422
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_86
+ rotate: false
+ xy: 2256, 2664
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_87
+ rotate: false
+ xy: 2578, 2906
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_88
+ rotate: false
+ xy: 2900, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_89
+ rotate: false
+ xy: 2900, 3148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_90
+ rotate: false
+ xy: 3222, 3390
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_91
+ rotate: false
+ xy: 3544, 3632
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_92
+ rotate: false
+ xy: 2, 728
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_93
+ rotate: false
+ xy: 324, 970
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_94
+ rotate: false
+ xy: 646, 1212
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_95
+ rotate: false
+ xy: 968, 1454
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_96
+ rotate: false
+ xy: 1290, 1696
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_97
+ rotate: false
+ xy: 1612, 1938
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_98
+ rotate: false
+ xy: 1934, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+full-splash/POPPixelLogo_02_99
+ rotate: false
+ xy: 1934, 2180
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+
+packed37.png
+size: 256,256
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
georgia/kick-1
rotate: false
- xy: 849, 40
+ xy: 164, 182
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-10
rotate: false
- xy: 1165, 335
+ xy: 44, 47
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-11
rotate: false
- xy: 1207, 335
+ xy: 86, 92
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-12
rotate: false
- xy: 1249, 335
+ xy: 188, 137
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-13
rotate: false
- xy: 1222, 290
+ xy: 44, 2
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-14
rotate: false
- xy: 1264, 290
+ xy: 86, 47
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-15
rotate: false
- xy: 1236, 245
+ xy: 128, 92
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-16
rotate: false
- xy: 1278, 245
+ xy: 86, 2
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-17
rotate: false
- xy: 1257, 200
+ xy: 128, 47
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-18
rotate: false
- xy: 1299, 200
+ xy: 170, 92
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-19
rotate: false
- xy: 1986, 513
+ xy: 128, 2
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-2
rotate: false
- xy: 1172, 149
+ xy: 2, 92
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-4
rotate: false
- xy: 1172, 149
+ xy: 2, 92
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-20
rotate: false
- xy: 1122, 81
+ xy: 170, 47
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-3
rotate: false
- xy: 1214, 149
+ xy: 104, 137
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-5
rotate: false
- xy: 1861, 320
+ xy: 206, 182
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-6
rotate: false
- xy: 1861, 275
+ xy: 2, 47
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-7
rotate: false
- xy: 1081, 381
+ xy: 44, 92
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-8
rotate: false
- xy: 1123, 382
+ xy: 146, 137
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
georgia/kick-9
rotate: false
- xy: 1123, 337
+ xy: 2, 2
size: 40, 43
orig: 40, 43
offset: 0, 0
index: -1
-goon-2-walk
+georgia/stand
rotate: false
- xy: 798, 722
- size: 168, 34
- orig: 168, 34
+ xy: 2, 137
+ size: 100, 43
+ orig: 100, 43
offset: 0, 0
index: -1
-castle-gate/goon-2-walk
+georgia/walk
rotate: false
- xy: 798, 722
- size: 168, 34
- orig: 168, 34
+ xy: 2, 182
+ size: 160, 43
+ orig: 160, 43
+ offset: 0, 0
+ index: -1
+
+packed38.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+held/background
+ rotate: false
+ xy: 2, 266
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+held/bloodclot-head-1
+ rotate: false
+ xy: 324, 182
+ size: 114, 82
+ orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-2
rotate: false
- xy: 857, 638
+ xy: 646, 424
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-3
rotate: false
- xy: 1873, 803
+ xy: 324, 98
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-4
rotate: false
- xy: 973, 656
+ xy: 440, 182
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-5
rotate: false
- xy: 1089, 656
+ xy: 646, 340
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-6
rotate: false
- xy: 1205, 656
+ xy: 762, 424
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-7
rotate: false
- xy: 798, 554
+ xy: 440, 98
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-8
rotate: false
- xy: 798, 470
+ xy: 762, 340
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
held/bloodclot-head-9
rotate: false
- xy: 791, 386
+ xy: 878, 424
size: 114, 82
orig: 114, 82
offset: 0, 0
index: -1
-inside-cafeteria/fight-new-assets/fight-10
+held/dot
rotate: false
- xy: 260, 830
- size: 256, 192
- orig: 256, 192
+ xy: 324, 95
+ size: 1, 1
+ orig: 1, 1
offset: 0, 0
index: -1
-inside-cafeteria/fight-new-assets/fight-11
+held/flesh
rotate: false
- xy: 2, 442
- size: 256, 192
- orig: 256, 192
+ xy: 2, 2
+ size: 20, 20
+ orig: 20, 20
offset: 0, 0
index: -1
-inside-cafeteria/fight-new-assets/fight-12
+held/hand
rotate: false
- xy: 260, 636
- size: 256, 192
- orig: 256, 192
+ xy: 2, 24
+ size: 320, 240
+ orig: 320, 240
offset: 0, 0
index: -1
-inside-cafeteria/fight-new-assets/fight-13
+held/head
rotate: false
- xy: 518, 830
- size: 256, 192
- orig: 256, 192
+ xy: 324, 266
+ size: 320, 240
+ orig: 320, 240
offset: 0, 0
index: -1
-inside-cafeteria/fight-new-assets/fight-14
+
+packed39.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+inside-antique/antique-sigh
rotate: false
- xy: 2, 248
- size: 256, 192
- orig: 256, 192
+ xy: 324, 501
+ size: 216, 21
+ orig: 216, 21
offset: 0, 0
index: -1
-inside-cafeteria/fight-new-assets/fight-8
+inside-antique/background
rotate: false
- xy: 2, 830
- size: 256, 192
- orig: 256, 192
+ xy: 2, 766
+ size: 320, 240
+ orig: 320, 240
offset: 0, 0
index: -1
-inside-cafeteria/fight-new-assets/fight-9
+inside-antique/beard
rotate: false
- xy: 2, 636
- size: 256, 192
- orig: 256, 192
+ xy: 646, 710
+ size: 84, 54
+ orig: 84, 54
+ offset: 0, 0
+ index: -1
+inside-antique/bowl
+ rotate: false
+ xy: 646, 695
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+inside-antique/bowl-0
+ rotate: false
+ xy: 646, 695
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+inside-antique/bowl-1
+ rotate: false
+ xy: 732, 751
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+inside-antique/bowl-2
+ rotate: false
+ xy: 2, 2
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+inside-antique/bowl-3
+ rotate: false
+ xy: 76, 25
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+inside-antique/closed-blinds
+ rotate: false
+ xy: 2, 524
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-antique/darken
+ rotate: false
+ xy: 324, 766
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-antique/desk
+ rotate: false
+ xy: 2, 282
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-antique/dot
+ rotate: false
+ xy: 988, 1005
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+inside-antique/fg
+ rotate: false
+ xy: 324, 524
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-antique/glow
+ rotate: false
+ xy: 646, 766
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-antique/open-blinds
+ rotate: false
+ xy: 2, 40
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-antique/portrait
+ rotate: false
+ xy: 324, 483
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+inside-antique/shopkeep
+ rotate: false
+ xy: 968, 985
+ size: 18, 21
+ orig: 18, 21
+ offset: 0, 0
+ index: -1
+inside-antique/shopkeep-talk
+ rotate: false
+ xy: 2, 17
+ size: 72, 21
+ orig: 72, 21
+ offset: 0, 0
+ index: -1
+inside-antique/sword
+ rotate: false
+ xy: 968, 967
+ size: 8, 16
+ orig: 8, 16
+ offset: 0, 0
+ index: -1
+inside-antique/teddy
+ rotate: false
+ xy: 542, 506
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+
+packed40.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+inside-cafeteria/background
+ rotate: false
+ xy: 2, 594
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-cafeteria/doorway
+ rotate: false
+ xy: 540, 262
+ size: 14, 113
+ orig: 14, 113
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fg
+ rotate: false
+ xy: 2, 352
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight
+ rotate: false
+ xy: 2, 110
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-cafeteria/glow
+ rotate: false
+ xy: 324, 594
+ size: 320, 240
+ orig: 320, 240
offset: 0, 0
index: -1
inside-cafeteria/hands-fight-1
@@ -3140,875 +3599,2163 @@ inside-cafeteria/hands-fight-1
index: -1
inside-cafeteria/hands-fight-2
rotate: false
- xy: 110, 2
+ xy: 324, 358
size: 106, 106
orig: 106, 106
offset: 0, 0
index: -1
inside-cafeteria/hands-fight-3
rotate: false
- xy: 693, 158
+ xy: 110, 2
size: 106, 106
orig: 106, 106
offset: 0, 0
index: -1
inside-cafeteria/hands-fight-4
rotate: false
- xy: 983, 778
+ xy: 324, 250
size: 106, 106
orig: 106, 106
offset: 0, 0
index: -1
inside-cafeteria/hands-fight-5
rotate: false
- xy: 1091, 778
+ xy: 432, 358
size: 106, 106
orig: 106, 106
offset: 0, 0
index: -1
inside-cafeteria/hands-fight-6
rotate: false
- xy: 1199, 778
+ xy: 324, 142
size: 106, 106
orig: 106, 106
offset: 0, 0
index: -1
inside-cafeteria/hands-fight-7
rotate: false
- xy: 1307, 778
+ xy: 432, 250
size: 106, 106
orig: 106, 106
offset: 0, 0
index: -1
+inside-cafeteria/knight-a
+ rotate: false
+ xy: 2, 918
+ size: 700, 85
+ orig: 700, 85
+ offset: 0, 0
+ index: -1
+inside-cafeteria/knights
+ rotate: false
+ xy: 218, 11
+ size: 74, 97
+ orig: 74, 97
+ offset: 0, 0
+ index: -1
+inside-cafeteria/knights-stand
+ rotate: false
+ xy: 2, 836
+ size: 490, 80
+ orig: 490, 80
+ offset: 0, 0
+ index: -1
+inside-cafeteria/ladder
+ rotate: false
+ xy: 494, 878
+ size: 29, 38
+ orig: 29, 38
+ offset: 0, 0
+ index: -1
+inside-cafeteria/ladder-guard
+ rotate: false
+ xy: 540, 377
+ size: 74, 87
+ orig: 74, 87
+ offset: 0, 0
+ index: -1
+inside-cafeteria/ladder-guard-2
+ rotate: false
+ xy: 704, 930
+ size: 30, 73
+ orig: 30, 73
+ offset: 0, 0
+ index: -1
+inside-cafeteria/warriors
+ rotate: false
+ xy: 590, 466
+ size: 66, 126
+ orig: 66, 126
+ offset: 0, 0
+ index: -1
inside-cafeteria/warriors-stand
rotate: false
- xy: 776, 896
+ xy: 324, 466
size: 264, 126
orig: 264, 126
offset: 0, 0
index: -1
+
+packed41.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+inside-cafeteria/fight-new-assets/fight-1
+ rotate: false
+ xy: 2, 778
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-10
+ rotate: false
+ xy: 2, 2
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-11
+ rotate: false
+ xy: 260, 196
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-12
+ rotate: false
+ xy: 518, 390
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-13
+ rotate: false
+ xy: 260, 2
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-14
+ rotate: false
+ xy: 518, 196
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-2
+ rotate: false
+ xy: 2, 584
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-3
+ rotate: false
+ xy: 260, 778
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-4
+ rotate: false
+ xy: 2, 390
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-5
+ rotate: false
+ xy: 260, 584
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-6
+ rotate: false
+ xy: 518, 778
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-7
+ rotate: false
+ xy: 2, 196
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-8
+ rotate: false
+ xy: 260, 390
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+inside-cafeteria/fight-new-assets/fight-9
+ rotate: false
+ xy: 518, 584
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: -1
+
+packed42.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+inside-castle/Untitled
+ rotate: false
+ xy: 428, 436
+ size: 160, 44
+ orig: 160, 44
+ offset: 0, 0
+ index: -1
+inside-castle/background
+ rotate: false
+ xy: 2, 148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-castle/books
+ rotate: false
+ xy: 88, 461
+ size: 34, 19
+ orig: 34, 19
+ offset: 0, 0
+ index: -1
+inside-castle/bookstack
+ rotate: false
+ xy: 399, 445
+ size: 27, 35
+ orig: 27, 35
+ offset: 0, 0
+ index: -1
+inside-castle/brian-working
+ rotate: false
+ xy: 590, 436
+ size: 320, 44
+ orig: 320, 44
+ offset: 0, 0
+ index: -1
inside-castle/door
rotate: false
- xy: 998, 275
+ xy: 2, 413
size: 84, 49
orig: 84, 49
offset: 0, 0
index: -1
+inside-castle/game-player-talk
+ rotate: false
+ xy: 88, 390
+ size: 400, 44
+ orig: 400, 44
+ offset: 0, 0
+ index: -1
+inside-castle/gameplayer
+ rotate: false
+ xy: 912, 436
+ size: 40, 44
+ orig: 40, 44
+ offset: 0, 0
+ index: -1
+inside-castle/magic
+ rotate: false
+ xy: 202, 460
+ size: 20, 20
+ orig: 20, 20
+ offset: 0, 0
+ index: -1
+inside-castle/monocle
+ rotate: false
+ xy: 124, 461
+ size: 76, 19
+ orig: 76, 19
+ offset: 0, 0
+ index: -1
+inside-castle/pedestal-overlay
+ rotate: false
+ xy: 324, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-castle/pull-sword
+ rotate: false
+ xy: 490, 244
+ size: 380, 190
+ orig: 380, 190
+ offset: 0, 0
+ index: -1
inside-castle/roof
rotate: false
- xy: 1989, 839
+ xy: 954, 423
size: 57, 57
orig: 57, 57
offset: 0, 0
index: -1
+inside-castle/sign1
+ rotate: false
+ xy: 224, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+inside-castle/sign-1
+ rotate: false
+ xy: 224, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+inside-castle/sign2
+ rotate: false
+ xy: 270, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+inside-castle/sign-2
+ rotate: false
+ xy: 270, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+inside-castle/sign3
+ rotate: false
+ xy: 316, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+inside-castle/sign-3
+ rotate: false
+ xy: 316, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+inside-castle/sword
+ rotate: false
+ xy: 12, 464
+ size: 8, 16
+ orig: 8, 16
+ offset: 0, 0
+ index: -1
+inside-castle/trophy
+ rotate: false
+ xy: 22, 464
+ size: 64, 16
+ orig: 64, 16
+ offset: 0, 0
+ index: -1
inside-castle/walkie-talkie
rotate: false
- xy: 1989, 803
+ xy: 362, 446
size: 35, 34
orig: 35, 34
offset: 0, 0
index: -1
+inside-castle/watch
+ rotate: false
+ xy: 2, 472
+ size: 8, 8
+ orig: 8, 8
+ offset: 0, 0
+ index: -1
+inside-castle/way-back-tree
+ rotate: false
+ xy: 646, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+
+packed43.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+inside-house/background
+ rotate: false
+ xy: 2, 270
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
inside-house/candle
rotate: false
- xy: 1411, 563
+ xy: 898, 478
size: 102, 32
orig: 102, 32
offset: 0, 0
index: -1
+inside-house/candle-aura
+ rotate: false
+ xy: 646, 381
+ size: 108, 27
+ orig: 108, 27
+ offset: 0, 0
+ index: -1
+inside-house/desk
+ rotate: false
+ xy: 2, 28
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-house/dot
+ rotate: false
+ xy: 2, 2
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+inside-house/flask
+ rotate: false
+ xy: 646, 358
+ size: 16, 21
+ orig: 16, 21
+ offset: 0, 0
+ index: -1
+inside-house/frog-legs
+ rotate: false
+ xy: 756, 392
+ size: 17, 16
+ orig: 17, 16
+ offset: 0, 0
+ index: -1
+inside-house/glow
+ rotate: false
+ xy: 324, 270
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-house/inputed-key
+ rotate: false
+ xy: 2, 5
+ size: 9, 11
+ orig: 9, 11
+ offset: 0, 0
+ index: -1
+inside-house/safe-lock
+ rotate: false
+ xy: 2, 18
+ size: 243, 8
+ orig: 243, 8
+ offset: 0, 0
+ index: -1
+inside-house/safe-screen
+ rotate: false
+ xy: 646, 410
+ size: 250, 100
+ orig: 250, 100
+ offset: 0, 0
+ index: -1
+inside-house/sillhoute
+ rotate: false
+ xy: 324, 28
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+
+packed44.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+inside-jail/background
+ rotate: false
+ xy: 2, 262
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-jail/ball-n-chain
+ rotate: false
+ xy: 2, 2
+ size: 38, 16
+ orig: 38, 16
+ offset: 0, 0
+ index: -1
+inside-jail/bars
+ rotate: false
+ xy: 2, 20
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-jail/bars-
+ rotate: false
+ xy: 324, 262
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-jail/candle
+ rotate: false
+ xy: 646, 175
+ size: 80, 25
+ orig: 80, 25
+ offset: 0, 0
+ index: -1
inside-jail/chest-top
rotate: false
- xy: 784, 9
+ xy: 906, 228
size: 44, 32
orig: 44, 32
offset: 0, 0
index: -1
inside-jail/chest-top-open
rotate: false
- xy: 1815, 281
+ xy: 968, 377
size: 44, 32
orig: 44, 32
offset: 0, 0
index: -1
inside-jail/crowbar
rotate: false
- xy: 1225, 561
+ xy: 646, 140
size: 64, 33
orig: 64, 33
offset: 0, 0
index: -1
+inside-jail/dot
+ rotate: false
+ xy: 728, 199
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+inside-jail/fg
+ rotate: false
+ xy: 324, 20
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-jail/glow
+ rotate: false
+ xy: 646, 262
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-jail/moveable-bars
+ rotate: false
+ xy: 968, 411
+ size: 53, 91
+ orig: 53, 91
+ offset: 0, 0
+ index: -1
+inside-jail/warden
+ rotate: false
+ xy: 646, 202
+ size: 258, 58
+ orig: 258, 58
+ offset: 0, 0
+ index: -1
+inside-jail/window
+ rotate: false
+ xy: 646, 109
+ size: 18, 29
+ orig: 18, 29
+ offset: 0, 0
+ index: -1
+inside-jail/window-bent
+ rotate: false
+ xy: 968, 346
+ size: 18, 29
+ orig: 18, 29
+ offset: 0, 0
+ index: -1
+
+packed45.png
+size: 512,256
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+inside-stash/background
+ rotate: false
+ xy: 2, 11
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inside-stash/candle
+ rotate: false
+ xy: 324, 247
+ size: 16, 4
+ orig: 16, 4
+ offset: 0, 0
+ index: -1
+inside-stash/lid
+ rotate: false
+ xy: 2, 2
+ size: 23, 7
+ orig: 23, 7
+ offset: 0, 0
+ index: -1
+
+packed46.png
+size: 1024,256
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
outside-castle/Untitled
rotate: false
- xy: 983, 740
+ xy: 646, 73
size: 126, 36
orig: 126, 36
offset: 0, 0
index: -1
outside-castle/peddler-talk
rotate: false
- xy: 983, 740
+ xy: 646, 73
size: 126, 36
orig: 126, 36
offset: 0, 0
index: -1
+outside-castle/background
+ rotate: false
+ xy: 2, 6
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
outside-castle/balloons
rotate: false
- xy: 1515, 559
+ xy: 774, 91
size: 60, 36
orig: 60, 36
offset: 0, 0
index: -1
+outside-castle/bird
+ rotate: false
+ xy: 896, 145
+ size: 2, 2
+ orig: 2, 2
+ offset: 0, 0
+ index: -1
outside-castle/blanket
rotate: false
- xy: 791, 277
+ xy: 646, 25
size: 103, 46
orig: 103, 46
offset: 0, 0
index: -1
+outside-castle/brush-bl
+ rotate: false
+ xy: 896, 149
+ size: 60, 60
+ orig: 60, 60
+ offset: 0, 0
+ index: -1
outside-castle/brush-br
rotate: false
- xy: 725, 640
+ xy: 764, 129
size: 130, 80
orig: 130, 80
offset: 0, 0
index: -1
outside-castle/crowd-right
rotate: false
- xy: 575, 129
+ xy: 646, 111
size: 116, 135
orig: 116, 135
offset: 0, 0
index: -1
+outside-castle/flies
+ rotate: false
+ xy: 646, 2
+ size: 63, 21
+ orig: 63, 21
+ offset: 0, 0
+ index: -1
+outside-castle/note
+ rotate: false
+ xy: 966, 230
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+outside-castle/peddler
+ rotate: false
+ xy: 751, 35
+ size: 18, 36
+ orig: 18, 36
+ offset: 0, 0
+ index: -1
outside-castle/steer
rotate: false
- xy: 209, 156
+ xy: 764, 211
size: 200, 35
orig: 200, 35
offset: 0, 0
index: -1
+outside-castle/walk-behind
+ rotate: false
+ xy: 324, 6
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+
+packed47.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+outside-jail/Untitled
+ rotate: false
+ xy: 2, 146
+ size: 600, 70
+ orig: 600, 70
+ offset: 0, 0
+ index: -1
+outside-jail/alarm-clock
+ rotate: false
+ xy: 2, 2
+ size: 16, 11
+ orig: 16, 11
+ offset: 0, 0
+ index: -1
+outside-jail/axe
+ rotate: false
+ xy: 189, 68
+ size: 22, 33
+ orig: 22, 33
+ offset: 0, 0
+ index: -1
+outside-jail/background
+ rotate: false
+ xy: 544, 250
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+outside-jail/bent-bar-window
+ rotate: false
+ xy: 866, 430
+ size: 17, 33
+ orig: 17, 33
+ offset: 0, 0
+ index: -1
+outside-jail/candle
+ rotate: false
+ xy: 866, 465
+ size: 80, 25
+ orig: 80, 25
+ offset: 0, 0
+ index: -1
+outside-jail/candle-aura
+ rotate: false
+ xy: 2, 355
+ size: 540, 135
+ orig: 540, 135
+ offset: 0, 0
+ index: -1
+outside-jail/candle-aura2
+ rotate: false
+ xy: 2, 218
+ size: 540, 135
+ orig: 540, 135
+ offset: 0, 0
+ index: -1
outside-jail/closed-stash
rotate: false
- xy: 675, 65
+ xy: 544, 218
size: 52, 30
orig: 52, 30
offset: 0, 0
index: -1
+outside-jail/dot
+ rotate: false
+ xy: 598, 247
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+outside-jail/fountain
+ rotate: false
+ xy: 604, 8
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+outside-jail/guard-sleep
+ rotate: false
+ xy: 294, 77
+ size: 172, 67
+ orig: 172, 67
+ offset: 0, 0
+ index: -1
+outside-jail/open-stash
+ rotate: false
+ xy: 2, 103
+ size: 290, 41
+ orig: 290, 41
+ offset: 0, 0
+ index: -1
+outside-jail/rope
+ rotate: false
+ xy: 2, 15
+ size: 185, 86
+ orig: 185, 86
+ offset: 0, 0
+ index: -1
+outside-jail/spear
+ rotate: false
+ xy: 468, 93
+ size: 11, 51
+ orig: 11, 51
+ offset: 0, 0
+ index: -1
+
+packed48.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+outsidehouse/background
+ rotate: false
+ xy: 2, 706
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+outsidehouse/background-trees
+ rotate: false
+ xy: 2, 464
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
outsidehouse/cauldron
rotate: false
- xy: 582, 433
+ xy: 646, 666
size: 200, 38
orig: 200, 38
offset: 0, 0
index: -1
+outsidehouse/charcoal-1
+ rotate: false
+ xy: 132, 110
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: -1
+outsidehouse/charcoal-2
+ rotate: false
+ xy: 646, 586
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: -1
+outsidehouse/charcoal-3
+ rotate: false
+ xy: 744, 646
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: -1
+outsidehouse/charcoal-4
+ rotate: false
+ xy: 324, 344
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: -1
outsidehouse/door
rotate: false
- xy: 1229, 596
+ xy: 646, 606
size: 96, 58
orig: 96, 58
offset: 0, 0
index: -1
+outsidehouse/dot
+ rotate: false
+ xy: 848, 673
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+outsidehouse/fence
+ rotate: false
+ xy: 324, 706
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+outsidehouse/fg
+ rotate: false
+ xy: 2, 222
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
outsidehouse/fg1
rotate: false
- xy: 1415, 789
+ xy: 2, 65
size: 128, 63
orig: 128, 63
offset: 0, 0
index: -1
+outsidehouse/fg2
+ rotate: false
+ xy: 2, 2
+ size: 59, 61
+ orig: 59, 61
+ offset: 0, 0
+ index: -1
outsidehouse/fgtest
rotate: false
- xy: 891, 84
+ xy: 324, 364
size: 75, 75
orig: 75, 75
offset: 0, 0
index: -1
+outsidehouse/foreground
+ rotate: false
+ xy: 324, 464
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+outsidehouse/house
+ rotate: false
+ xy: 646, 706
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+outsidehouse/lamb
+ rotate: false
+ xy: 524, 443
+ size: 26, 19
+ orig: 26, 19
+ offset: 0, 0
+ index: -1
outsidehouse/lamb-walk
rotate: false
- xy: 218, 3
+ xy: 848, 676
size: 108, 28
orig: 108, 28
offset: 0, 0
index: -1
+outsidehouse/note
+ rotate: false
+ xy: 401, 423
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+outsidehouse/sheep
+ rotate: false
+ xy: 968, 925
+ size: 33, 21
+ orig: 33, 21
+ offset: 0, 0
+ index: -1
+outsidehouse/sheep-1
+ rotate: false
+ xy: 2, 199
+ size: 330, 21
+ orig: 330, 21
+ offset: 0, 0
+ index: -1
+outsidehouse/sheep-2
+ rotate: false
+ xy: 2, 176
+ size: 330, 21
+ orig: 330, 21
+ offset: 0, 0
+ index: -1
+outsidehouse/sheep-3
+ rotate: false
+ xy: 2, 153
+ size: 330, 21
+ orig: 330, 21
+ offset: 0, 0
+ index: -1
+outsidehouse/sheep-anim
+ rotate: false
+ xy: 2, 130
+ size: 429, 21
+ orig: 429, 21
+ offset: 0, 0
+ index: -1
+outsidehouse/sheep-walk
+ rotate: false
+ xy: 324, 441
+ size: 198, 21
+ orig: 198, 21
+ offset: 0, 0
+ index: -1
+
+packed49.png
+size: 1024,128
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
safe-song/safe-song-1
rotate: false
- xy: 1076, 581
+ xy: 2, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-10
rotate: false
- xy: 968, 53
+ xy: 206, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-11
rotate: false
- xy: 1545, 811
+ xy: 308, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-12
rotate: false
- xy: 1647, 811
+ xy: 410, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-13
rotate: false
- xy: 1749, 811
+ xy: 308, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-14
rotate: false
- xy: 1545, 774
+ xy: 410, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-15
rotate: false
- xy: 1647, 774
+ xy: 512, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-16
rotate: false
- xy: 1749, 774
+ xy: 410, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-17
rotate: false
- xy: 1573, 737
+ xy: 512, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-18
rotate: false
- xy: 1573, 700
+ xy: 614, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-19
rotate: false
- xy: 1675, 737
+ xy: 512, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-2
rotate: false
- xy: 896, 287
+ xy: 2, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-20
rotate: false
- xy: 1675, 700
+ xy: 614, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-21
rotate: false
- xy: 1579, 663
+ xy: 716, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-22
rotate: false
- xy: 1579, 626
+ xy: 614, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-23
rotate: false
- xy: 1681, 625
+ xy: 716, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-24
rotate: false
- xy: 1579, 589
+ xy: 818, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-25
rotate: false
- xy: 1681, 588
+ xy: 716, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-26
rotate: false
- xy: 1577, 552
+ xy: 818, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-27
rotate: false
- xy: 1679, 551
+ xy: 920, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-28
rotate: false
- xy: 1859, 766
+ xy: 818, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-29
rotate: false
- xy: 1859, 729
+ xy: 920, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-3
rotate: false
- xy: 896, 250
+ xy: 104, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-4
rotate: false
- xy: 885, 213
+ xy: 2, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-5
rotate: false
- xy: 998, 238
+ xy: 104, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-6
rotate: false
- xy: 987, 201
+ xy: 206, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-7
rotate: false
- xy: 981, 164
+ xy: 104, 2
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-8
rotate: false
- xy: 981, 127
+ xy: 206, 39
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
safe-song/safe-song-9
rotate: false
- xy: 968, 90
+ xy: 308, 76
size: 100, 35
orig: 100, 35
offset: 0, 0
index: -1
+
+packed50.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+screenshots/behind-house-day
+ rotate: false
+ xy: 2, 368
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/behind-house-night
+ rotate: false
+ xy: 2, 246
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/cafeteria
+ rotate: false
+ xy: 164, 368
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/castle-gate
+ rotate: false
+ xy: 2, 124
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/cat-tree-day
+ rotate: false
+ xy: 164, 246
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/cat-tree-night
+ rotate: false
+ xy: 326, 368
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/dream
+ rotate: false
+ xy: 2, 2
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/duel
+ rotate: false
+ xy: 164, 124
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/fountain-day
+ rotate: false
+ xy: 326, 246
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/fountain-night
+ rotate: false
+ xy: 488, 368
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/held
+ rotate: false
+ xy: 164, 2
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-antique
+ rotate: false
+ xy: 326, 124
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-castle-day
+ rotate: false
+ xy: 488, 246
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-castle-night
+ rotate: false
+ xy: 650, 368
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-house
+ rotate: false
+ xy: 326, 2
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-jail
+ rotate: false
+ xy: 488, 124
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-stash
+ rotate: false
+ xy: 650, 246
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-castle-day
+ rotate: false
+ xy: 812, 368
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-castle-night
+ rotate: false
+ xy: 488, 2
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-house-day
+ rotate: false
+ xy: 650, 124
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-house-night
+ rotate: false
+ xy: 812, 246
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+
+packed51.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+space/Blergh
+ rotate: false
+ xy: 852, 849
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
space/Untitled
rotate: false
- xy: 1367, 740
+ xy: 452, 477
size: 36, 36
orig: 36, 36
offset: 0, 0
index: -1
+space/background
+ rotate: false
+ xy: 2, 607
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+space/blergh-flex
+ rotate: false
+ xy: 2, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/blergh-stand
+ rotate: false
+ xy: 2, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/blergh-talk
+ rotate: false
+ xy: 324, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-1
+ rotate: false
+ xy: 538, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-10
+ rotate: false
+ xy: 218, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-11
+ rotate: false
+ xy: 218, 31
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-12
+ rotate: false
+ xy: 756, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-13
+ rotate: false
+ xy: 862, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-14
+ rotate: false
+ xy: 864, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-15
+ rotate: false
+ xy: 326, 310
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-16
+ rotate: false
+ xy: 326, 143
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
space/bloodclot-explode-17
rotate: false
- xy: 474, 469
+ xy: 434, 310
size: 106, 165
orig: 106, 165
offset: 0, 0
index: -1
space/bloodclot-explode-18
rotate: false
- xy: 467, 302
+ xy: 434, 143
size: 106, 165
orig: 106, 165
offset: 0, 0
index: -1
space/bloodclot-explode-19
rotate: false
- xy: 582, 473
+ xy: 542, 348
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-2
+ rotate: false
+ xy: 2, 31
size: 106, 165
orig: 106, 165
offset: 0, 0
index: -1
space/bloodclot-explode-20
rotate: false
- xy: 467, 135
+ xy: 542, 181
size: 106, 165
orig: 106, 165
offset: 0, 0
index: -1
space/bloodclot-explode-21
rotate: false
- xy: 690, 473
+ xy: 650, 348
size: 106, 165
orig: 106, 165
offset: 0, 0
index: -1
space/bloodclot-explode-22
rotate: false
- xy: 575, 266
+ xy: 650, 181
size: 106, 165
orig: 106, 165
offset: 0, 0
index: -1
space/bloodclot-explode-23
rotate: false
- xy: 683, 266
+ xy: 758, 348
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-3
+ rotate: false
+ xy: 110, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-4
+ rotate: false
+ xy: 432, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-5
+ rotate: false
+ xy: 646, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-6
+ rotate: false
+ xy: 110, 31
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-7
+ rotate: false
+ xy: 540, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-8
+ rotate: false
+ xy: 754, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+space/bloodclot-explode-9
+ rotate: false
+ xy: 648, 515
size: 106, 165
orig: 106, 165
offset: 0, 0
index: -1
space/bloodclot-head-talk-1
rotate: false
- xy: 801, 200
+ xy: 326, 66
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-10
rotate: false
- xy: 1495, 597
+ xy: 578, 27
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-11
rotate: false
- xy: 807, 85
+ xy: 662, 27
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-12
rotate: false
- xy: 914, 412
+ xy: 842, 271
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-13
rotate: false
- xy: 998, 426
+ xy: 842, 194
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-14
rotate: false
- xy: 1082, 427
+ xy: 758, 117
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-2
rotate: false
- xy: 914, 489
+ xy: 758, 271
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-3
rotate: false
- xy: 998, 503
+ xy: 866, 438
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-4
rotate: false
- xy: 1082, 504
+ xy: 410, 66
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-5
rotate: false
- xy: 1321, 663
+ xy: 758, 194
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-6
rotate: false
- xy: 1405, 674
+ xy: 866, 361
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-7
rotate: false
- xy: 1327, 586
+ xy: 494, 66
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-8
rotate: false
- xy: 1411, 597
+ xy: 578, 104
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-head-talk-9
rotate: false
- xy: 1489, 674
+ xy: 662, 104
size: 82, 75
orig: 82, 75
offset: 0, 0
index: -1
space/bloodclot-stand
rotate: false
- xy: 260, 469
+ xy: 324, 682
size: 212, 165
orig: 212, 165
offset: 0, 0
index: -1
+space/bloodclot-talk
+ rotate: false
+ xy: 2, 849
+ size: 848, 165
+ orig: 848, 165
+ offset: 0, 0
+ index: -1
+space/broken-jewel
+ rotate: false
+ xy: 746, 165
+ size: 10, 14
+ orig: 10, 14
+ offset: 0, 0
+ index: -1
+space/bullet
+ rotate: false
+ xy: 2, 5
+ size: 192, 24
+ orig: 192, 24
+ offset: 0, 0
+ index: -1
+space/cloud
+ rotate: false
+ xy: 960, 999
+ size: 15, 15
+ orig: 15, 15
+ offset: 0, 0
+ index: -1
+space/dot
+ rotate: false
+ xy: 2, 2
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+space/later
+ rotate: false
+ xy: 2, 365
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
space/susp
rotate: false
- xy: 973, 618
+ xy: 324, 477
size: 126, 36
orig: 126, 36
offset: 0, 0
index: -1
-talk-bg
+
+packed52.png
+size: 1024,256
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+splash/POPPixelLogo_02
rotate: false
- xy: 1122, 39
- size: 40, 40
- orig: 40, 40
+ xy: 2, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: 0
+splash/dbh
+ rotate: false
+ xy: 324, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+
+packed53.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+title/background
+ rotate: false
+ xy: 2, 55
+ size: 320, 240
+ orig: 320, 240
offset: 0, 0
index: -1
title/balloon
rotate: false
- xy: 1986, 642
+ xy: 544, 309
size: 60, 30
orig: 60, 30
offset: 0, 0
index: -1
+title/banner
+ rotate: false
+ xy: 2, 11
+ size: 171, 42
+ orig: 171, 42
+ offset: 0, 0
+ index: -1
+title/banner-back
+ rotate: false
+ xy: 2, 297
+ size: 540, 42
+ orig: 540, 42
+ offset: 0, 0
+ index: -1
+title/clouds
+ rotate: false
+ xy: 324, 55
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+title/dot
+ rotate: false
+ xy: 175, 52
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+title/logo
+ rotate: false
+ xy: 646, 99
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+title/quill
+ rotate: false
+ xy: 646, 58
+ size: 33, 39
+ orig: 33, 39
+ offset: 0, 0
+ index: -1
+title/save-indicator
+ rotate: false
+ xy: 968, 332
+ size: 7, 7
+ orig: 7, 7
+ offset: 0, 0
+ index: -1
+title/save-indicator-active
+ rotate: false
+ xy: 2, 2
+ size: 7, 7
+ orig: 7, 7
+ offset: 0, 0
+ index: -1
+
+packed54.png
+size: 1024,256
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
wizard/Untitled
rotate: false
- xy: 999, 374
+ xy: 2, 143
size: 80, 50
orig: 80, 50
offset: 0, 0
index: -1
wizard/cloud
rotate: false
- xy: 1131, 199
+ xy: 2, 2
size: 40, 30
orig: 40, 30
offset: 0, 0
index: -1
+wizard/disappear
+ rotate: false
+ xy: 2, 195
+ size: 380, 46
+ orig: 380, 46
+ offset: 0, 0
+ index: -1
+wizard/dot
+ rotate: false
+ xy: 460, 192
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+wizard/experiment-1
+ rotate: false
+ xy: 84, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
wizard/experiment-10
rotate: false
- xy: 677, 8
+ xy: 466, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-11
rotate: false
- xy: 891, 27
+ xy: 513, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-12
rotate: false
- xy: 1478, 502
+ xy: 560, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-13
rotate: false
- xy: 1525, 502
+ xy: 607, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-14
rotate: false
- xy: 1481, 445
+ xy: 654, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-15
rotate: false
- xy: 1528, 445
+ xy: 701, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-16
rotate: false
- xy: 1575, 445
+ xy: 748, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-17
rotate: false
- xy: 1622, 445
+ xy: 795, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-18
rotate: false
- xy: 1486, 388
+ xy: 842, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-19
rotate: false
- xy: 1533, 388
+ xy: 889, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-2
rotate: false
- xy: 725, 773
+ xy: 2, 34
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-20
rotate: false
- xy: 1580, 388
+ xy: 936, 186
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-21
rotate: false
- xy: 1627, 388
+ xy: 84, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-22
rotate: false
- xy: 1486, 331
+ xy: 131, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-23
rotate: false
- xy: 1533, 331
+ xy: 178, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-24
rotate: false
- xy: 1580, 331
+ xy: 225, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-25
rotate: false
- xy: 1627, 331
+ xy: 272, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-26
rotate: false
- xy: 1669, 450
+ xy: 319, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-27
rotate: false
- xy: 1674, 393
+ xy: 366, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-28
rotate: false
- xy: 1674, 336
+ xy: 413, 81
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-29
rotate: false
- xy: 1716, 451
+ xy: 460, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-3
rotate: false
- xy: 524, 78
+ xy: 131, 138
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-30
rotate: false
- xy: 1721, 394
+ xy: 507, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-31
rotate: false
- xy: 1721, 337
+ xy: 554, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-32
rotate: false
- xy: 1083, 144
+ xy: 601, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-33
rotate: false
- xy: 1763, 479
+ xy: 648, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-34
rotate: false
- xy: 1810, 479
+ xy: 695, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-35
rotate: false
- xy: 1768, 422
+ xy: 742, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-36
rotate: false
- xy: 1768, 365
+ xy: 789, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-37
rotate: false
- xy: 1815, 422
+ xy: 836, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-38
rotate: false
- xy: 1815, 365
+ xy: 883, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-39
rotate: false
- xy: 1768, 308
+ xy: 930, 129
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-4
rotate: false
- xy: 1178, 561
+ xy: 178, 138
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-5
rotate: false
- xy: 1434, 434
+ xy: 225, 138
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-6
rotate: false
- xy: 524, 21
+ xy: 272, 138
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-7
rotate: false
- xy: 1939, 612
+ xy: 319, 138
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-8
rotate: false
- xy: 1982, 674
+ xy: 366, 138
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
wizard/experiment-9
rotate: false
- xy: 1939, 555
+ xy: 413, 138
size: 45, 55
orig: 45, 55
offset: 0, 0
index: -1
+wizard/flame
+ rotate: false
+ xy: 49, 79
+ size: 5, 10
+ orig: 5, 10
+ offset: 0, 0
+ index: -1
wizard/magic-hands
rotate: false
- xy: 1130, 147
+ xy: 460, 77
size: 40, 50
orig: 40, 50
offset: 0, 0
index: -1
+wizard/stand
+ rotate: false
+ xy: 983, 195
+ size: 20, 46
+ orig: 20, 46
+ offset: 0, 0
+ index: -1
wizard/talk
rotate: false
- xy: 997, 326
+ xy: 384, 195
size: 80, 46
orig: 80, 46
offset: 0, 0
index: -1
wizard/talk-angry
rotate: false
- xy: 1777, 722
+ xy: 2, 91
size: 80, 50
orig: 80, 50
offset: 0, 0
diff --git a/desktop/resources/packed/behindhouse.atlas b/desktop/resources/packed/behindhouse.atlas
new file mode 100644
index 00000000..a9654ab6
--- /dev/null
+++ b/desktop/resources/packed/behindhouse.atlas
@@ -0,0 +1,69 @@
+
+behindhouse.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+abc
+ rotate: false
+ xy: 646, 83
+ size: 320, 62
+ orig: 320, 62
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 2, 267
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+brush
+ rotate: false
+ xy: 2, 25
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+fg
+ rotate: false
+ xy: 324, 267
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+fg2
+ rotate: false
+ xy: 646, 147
+ size: 183, 360
+ orig: 183, 360
+ offset: 0, 0
+ index: -1
+fgleft
+ rotate: false
+ xy: 646, 31
+ size: 161, 50
+ orig: 161, 50
+ offset: 0, 0
+ index: -1
+house
+ rotate: false
+ xy: 324, 25
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+house-cover
+ rotate: false
+ xy: 2, 2
+ size: 20, 21
+ orig: 20, 21
+ offset: 0, 0
+ index: -1
+stick
+ rotate: false
+ xy: 831, 465
+ size: 24, 42
+ orig: 24, 42
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/behindhouse.png b/desktop/resources/packed/behindhouse.png
new file mode 100644
index 00000000..5a1fdf0c
Binary files /dev/null and b/desktop/resources/packed/behindhouse.png differ
diff --git a/desktop/resources/packed/castle-gate.atlas b/desktop/resources/packed/castle-gate.atlas
new file mode 100644
index 00000000..eed574a6
--- /dev/null
+++ b/desktop/resources/packed/castle-gate.atlas
@@ -0,0 +1,146 @@
+
+castle-gate.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 142, 80
+ size: 192, 35
+ orig: 192, 35
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 2, 255
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+coinflip
+ rotate: false
+ xy: 2, 2
+ size: 50, 10
+ orig: 50, 10
+ offset: 0, 0
+ index: -1
+goon-1
+ rotate: false
+ xy: 945, 419
+ size: 26, 33
+ orig: 26, 33
+ offset: 0, 0
+ index: -1
+goon-2
+ rotate: false
+ xy: 763, 119
+ size: 24, 32
+ orig: 24, 32
+ offset: 0, 0
+ index: -1
+goon-2-flip
+ rotate: false
+ xy: 763, 153
+ size: 48, 32
+ orig: 48, 32
+ offset: 0, 0
+ index: -1
+goon-2-search
+ rotate: false
+ xy: 763, 187
+ size: 192, 32
+ orig: 192, 32
+ offset: 0, 0
+ index: -1
+goon-2-talk
+ rotate: false
+ xy: 813, 153
+ size: 24, 32
+ orig: 24, 32
+ offset: 0, 0
+ index: -1
+goon-2-walk
+ rotate: false
+ xy: 142, 44
+ size: 168, 34
+ orig: 168, 34
+ offset: 0, 0
+ index: -1
+overlay
+ rotate: false
+ xy: 2, 14
+ size: 138, 239
+ orig: 138, 239
+ offset: 0, 0
+ index: -1
+stash-closed
+ rotate: false
+ xy: 945, 454
+ size: 70, 41
+ orig: 70, 41
+ offset: 0, 0
+ index: -1
+throw-walkie
+ rotate: false
+ xy: 324, 359
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 0
+throw-walkie
+ rotate: false
+ xy: 531, 359
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 1
+throw-walkie
+ rotate: false
+ xy: 738, 359
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 2
+throw-walkie
+ rotate: false
+ xy: 142, 117
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 3
+throw-walkie
+ rotate: false
+ xy: 349, 221
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 4
+throw-walkie
+ rotate: false
+ xy: 556, 221
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 5
+throw-walkie
+ rotate: false
+ xy: 763, 221
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 6
+throw-walkie
+ rotate: false
+ xy: 349, 83
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 7
+throw-walkie
+ rotate: false
+ xy: 556, 83
+ size: 205, 136
+ orig: 205, 136
+ offset: 0, 0
+ index: 8
diff --git a/desktop/resources/packed/castle-gate.png b/desktop/resources/packed/castle-gate.png
new file mode 100644
index 00000000..6e5f9bd3
Binary files /dev/null and b/desktop/resources/packed/castle-gate.png differ
diff --git a/desktop/resources/packed/cat-tree.atlas b/desktop/resources/packed/cat-tree.atlas
new file mode 100644
index 00000000..6310eeb0
--- /dev/null
+++ b/desktop/resources/packed/cat-tree.atlas
@@ -0,0 +1,349 @@
+
+cat-tree.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 713, 242
+ size: 28, 18
+ orig: 28, 18
+ offset: 0, 0
+ index: -1
+pounce
+ rotate: false
+ xy: 713, 242
+ size: 28, 18
+ orig: 28, 18
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 2, 270
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+brush-l
+ rotate: false
+ xy: 324, 120
+ size: 152, 70
+ orig: 152, 70
+ offset: 0, 0
+ index: -1
+cat
+ rotate: false
+ xy: 2, 2
+ size: 22, 11
+ orig: 22, 11
+ offset: 0, 0
+ index: -1
+cat-stand
+ rotate: false
+ xy: 2, 15
+ size: 198, 11
+ orig: 198, 11
+ offset: 0, 0
+ index: -1
+destroy-ladder
+ rotate: false
+ xy: 324, 472
+ size: 522, 38
+ orig: 522, 38
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 598, 189
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+eye
+ rotate: false
+ xy: 444, 70
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 0
+eye
+ rotate: false
+ xy: 444, 70
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 5
+eye
+ rotate: false
+ xy: 444, 20
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 1
+eye
+ rotate: false
+ xy: 490, 100
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 2
+eye
+ rotate: false
+ xy: 490, 50
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 3
+eye
+ rotate: false
+ xy: 536, 100
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 4
+eye
+ rotate: false
+ xy: 536, 100
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 6
+eye
+ rotate: false
+ xy: 536, 50
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 7
+eye
+ rotate: false
+ xy: 582, 96
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 8
+eye
+ rotate: false
+ xy: 628, 96
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 9
+eye
+ rotate: false
+ xy: 674, 96
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 10
+eye
+ rotate: false
+ xy: 582, 46
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 11
+eye
+ rotate: false
+ xy: 628, 46
+ size: 44, 48
+ orig: 44, 48
+ offset: 0, 0
+ index: 12
+grandma
+ rotate: false
+ xy: 324, 192
+ size: 275, 36
+ orig: 275, 36
+ offset: 0, 0
+ index: -1
+grandma-cry
+ rotate: false
+ xy: 713, 430
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 0
+grandma-cry
+ rotate: false
+ xy: 324, 78
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 1
+grandma-cry
+ rotate: false
+ xy: 478, 150
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 2
+grandma-cry
+ rotate: false
+ xy: 713, 388
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 3
+grandma-cry
+ rotate: false
+ xy: 773, 430
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 4
+grandma-cry
+ rotate: false
+ xy: 324, 36
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 5
+grandma-cry
+ rotate: false
+ xy: 384, 78
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 6
+grandma-cry
+ rotate: false
+ xy: 538, 150
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 7
+grandma-cry
+ rotate: false
+ xy: 713, 346
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 8
+grandma-cry
+ rotate: false
+ xy: 773, 388
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 9
+grandma-cry
+ rotate: false
+ xy: 384, 36
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 10
+grandma-cry
+ rotate: false
+ xy: 713, 304
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 11
+grandma-cry
+ rotate: false
+ xy: 773, 346
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 12
+grandma-cry
+ rotate: false
+ xy: 713, 262
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 13
+grandma-cry
+ rotate: false
+ xy: 773, 304
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 14
+grandma-cry
+ rotate: false
+ xy: 773, 262
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 15
+grandma-cry
+ rotate: false
+ xy: 601, 188
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 16
+grandma-cry
+ rotate: false
+ xy: 598, 146
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 17
+grandma-cry
+ rotate: false
+ xy: 661, 188
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 18
+grandma-cry
+ rotate: false
+ xy: 658, 146
+ size: 58, 40
+ orig: 58, 40
+ offset: 0, 0
+ index: 19
+inventory
+ rotate: false
+ xy: 674, 52
+ size: 42, 42
+ orig: 42, 42
+ offset: 0, 0
+ index: -1
+ladder
+ rotate: false
+ xy: 490, 10
+ size: 29, 38
+ orig: 29, 38
+ offset: 0, 0
+ index: -1
+monocle
+ rotate: false
+ xy: 202, 19
+ size: 28, 7
+ orig: 28, 7
+ offset: 0, 0
+ index: -1
+owl
+ rotate: false
+ xy: 848, 480
+ size: 168, 30
+ orig: 168, 30
+ offset: 0, 0
+ index: -1
+sillhoute
+ rotate: false
+ xy: 2, 28
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+tree-and-rock
+ rotate: false
+ xy: 324, 230
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+tree-r
+ rotate: false
+ xy: 646, 230
+ size: 65, 240
+ orig: 65, 240
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/cat-tree.png b/desktop/resources/packed/cat-tree.png
new file mode 100644
index 00000000..cf378009
Binary files /dev/null and b/desktop/resources/packed/cat-tree.png differ
diff --git a/desktop/resources/packed/dream.atlas b/desktop/resources/packed/dream.atlas
new file mode 100644
index 00000000..f24c7f94
--- /dev/null
+++ b/desktop/resources/packed/dream.atlas
@@ -0,0 +1,153 @@
+
+dream.png
+size: 1024,1024
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 587
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+broom
+ rotate: false
+ xy: 504, 840
+ size: 15, 66
+ orig: 15, 66
+ offset: 0, 0
+ index: -1
+case
+ rotate: false
+ xy: 2, 2
+ size: 15, 38
+ orig: 15, 38
+ offset: 0, 0
+ index: -1
+cliff
+ rotate: false
+ xy: 2, 345
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+clouds1
+ rotate: false
+ xy: 2, 103
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+corner-l
+ rotate: false
+ xy: 2, 42
+ size: 112, 59
+ orig: 112, 59
+ offset: 0, 0
+ index: -1
+corner-r
+ rotate: false
+ xy: 646, 684
+ size: 112, 59
+ orig: 112, 59
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 968, 918
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+fairy-godfather
+ rotate: false
+ xy: 2, 908
+ size: 567, 77
+ orig: 567, 77
+ offset: 0, 0
+ index: -1
+fairy-godfather-magic
+ rotate: false
+ xy: 2, 829
+ size: 500, 77
+ orig: 500, 77
+ offset: 0, 0
+ index: -1
+far
+ rotate: false
+ xy: 324, 587
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+fountain
+ rotate: false
+ xy: 324, 345
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+island
+ rotate: false
+ xy: 614, 965
+ size: 30, 20
+ orig: 30, 20
+ offset: 0, 0
+ index: -1
+pedestals
+ rotate: false
+ xy: 324, 103
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+plaque1
+ rotate: false
+ xy: 646, 671
+ size: 8, 11
+ orig: 8, 11
+ offset: 0, 0
+ index: -1
+plaque2
+ rotate: false
+ xy: 571, 919
+ size: 10, 6
+ orig: 10, 6
+ offset: 0, 0
+ index: -1
+plaque3
+ rotate: false
+ xy: 760, 732
+ size: 8, 11
+ orig: 8, 11
+ offset: 0, 0
+ index: -1
+shovel
+ rotate: false
+ xy: 968, 921
+ size: 19, 64
+ orig: 19, 64
+ offset: 0, 0
+ index: -1
+sign
+ rotate: false
+ xy: 571, 927
+ size: 41, 58
+ orig: 41, 58
+ offset: 0, 0
+ index: -1
+sky
+ rotate: false
+ xy: 646, 745
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+sword
+ rotate: false
+ xy: 116, 63
+ size: 15, 38
+ orig: 15, 38
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/dream.png b/desktop/resources/packed/dream.png
new file mode 100644
index 00000000..b060dd2c
Binary files /dev/null and b/desktop/resources/packed/dream.png differ
diff --git a/desktop/resources/packed/ego.atlas b/desktop/resources/packed/ego.atlas
new file mode 100644
index 00000000..46457b6c
--- /dev/null
+++ b/desktop/resources/packed/ego.atlas
@@ -0,0 +1,545 @@
+
+ego.png
+size: 1024,1024
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 664, 897
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+talk
+ rotate: false
+ xy: 664, 897
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+axe
+ rotate: false
+ xy: 2, 704
+ size: 420, 70
+ orig: 420, 70
+ offset: 0, 0
+ index: -1
+axe-wood
+ rotate: false
+ xy: 2, 928
+ size: 660, 70
+ orig: 660, 70
+ offset: 0, 0
+ index: -1
+base
+ rotate: false
+ xy: 454, 514
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+whistle-1
+ rotate: false
+ xy: 454, 514
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+burnt
+ rotate: false
+ xy: 2, 776
+ size: 480, 46
+ orig: 480, 46
+ offset: 0, 0
+ index: -1
+cat-toy
+ rotate: false
+ xy: 2, 420
+ size: 205, 50
+ orig: 205, 50
+ offset: 0, 0
+ index: -1
+climb
+ rotate: false
+ xy: 2, 529
+ size: 242, 46
+ orig: 242, 46
+ offset: 0, 0
+ index: -1
+crawl
+ rotate: false
+ xy: 664, 973
+ size: 273, 25
+ orig: 273, 25
+ offset: 0, 0
+ index: -1
+crowbar
+ rotate: false
+ xy: 634, 859
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 295, 502
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+fire
+ rotate: false
+ xy: 664, 935
+ size: 216, 36
+ orig: 216, 36
+ offset: 0, 0
+ index: -1
+flying
+ rotate: false
+ xy: 988, 879
+ size: 34, 44
+ orig: 34, 44
+ offset: 0, 0
+ index: -1
+frog
+ rotate: false
+ xy: 261, 467
+ size: 32, 36
+ orig: 32, 36
+ offset: 0, 0
+ index: -1
+frustrated-talk
+ rotate: false
+ xy: 484, 786
+ size: 96, 36
+ orig: 96, 36
+ offset: 0, 0
+ index: -1
+georgia
+ rotate: false
+ xy: 492, 602
+ size: 90, 30
+ orig: 90, 30
+ offset: 0, 0
+ index: -1
+get-sick
+ rotate: false
+ xy: 480, 710
+ size: 108, 36
+ orig: 108, 36
+ offset: 0, 0
+ index: -1
+glad
+ rotate: false
+ xy: 882, 925
+ size: 140, 46
+ orig: 140, 46
+ offset: 0, 0
+ index: -1
+grow
+ rotate: false
+ xy: 492, 634
+ size: 90, 36
+ orig: 90, 36
+ offset: 0, 0
+ index: -1
+grow-talk
+ rotate: false
+ xy: 166, 350
+ size: 36, 36
+ orig: 36, 36
+ offset: 0, 0
+ index: -1
+hand-hold
+ rotate: false
+ xy: 204, 362
+ size: 36, 36
+ orig: 36, 36
+ offset: 0, 0
+ index: -1
+hold-hand
+ rotate: false
+ xy: 958, 815
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+hold-up-to-window
+ rotate: false
+ xy: 492, 672
+ size: 108, 36
+ orig: 108, 36
+ offset: 0, 0
+ index: -1
+ida
+ rotate: false
+ xy: 424, 704
+ size: 54, 70
+ orig: 54, 70
+ offset: 0, 0
+ index: -1
+idea
+ rotate: false
+ xy: 94, 278
+ size: 54, 70
+ orig: 54, 70
+ offset: 0, 0
+ index: -1
+in-love
+ rotate: false
+ xy: 2, 824
+ size: 570, 30
+ orig: 570, 30
+ offset: 0, 0
+ index: -1
+jump-straight
+ rotate: false
+ xy: 2, 198
+ size: 90, 48
+ orig: 90, 48
+ offset: 0, 0
+ index: -1
+love-1
+ rotate: false
+ xy: 582, 784
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-10
+ rotate: false
+ xy: 884, 853
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-11
+ rotate: false
+ xy: 936, 853
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-12
+ rotate: false
+ xy: 246, 505
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-13
+ rotate: false
+ xy: 150, 278
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-14
+ rotate: false
+ xy: 146, 206
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-15
+ rotate: false
+ xy: 584, 600
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-16
+ rotate: false
+ xy: 546, 528
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-17
+ rotate: false
+ xy: 598, 528
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-18
+ rotate: false
+ xy: 298, 467
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-19
+ rotate: false
+ xy: 350, 480
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-2
+ rotate: false
+ xy: 2, 74
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-20
+ rotate: false
+ xy: 402, 480
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-21
+ rotate: false
+ xy: 198, 206
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-22
+ rotate: false
+ xy: 202, 278
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-23
+ rotate: false
+ xy: 250, 206
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-24
+ rotate: false
+ xy: 209, 400
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-25
+ rotate: false
+ xy: 261, 395
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-26
+ rotate: false
+ xy: 313, 395
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-3
+ rotate: false
+ xy: 292, 582
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-4
+ rotate: false
+ xy: 94, 206
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-5
+ rotate: false
+ xy: 2, 2
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-6
+ rotate: false
+ xy: 780, 825
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-7
+ rotate: false
+ xy: 832, 825
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-8
+ rotate: false
+ xy: 54, 74
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+love-9
+ rotate: false
+ xy: 54, 2
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: -1
+pant
+ rotate: false
+ xy: 810, 897
+ size: 62, 36
+ orig: 62, 36
+ offset: 0, 0
+ index: -1
+poke
+ rotate: false
+ xy: 2, 146
+ size: 80, 50
+ orig: 80, 50
+ offset: 0, 0
+ index: -1
+reach
+ rotate: false
+ xy: 884, 815
+ size: 72, 36
+ orig: 72, 36
+ offset: 0, 0
+ index: -1
+scared
+ rotate: false
+ xy: 472, 564
+ size: 72, 36
+ orig: 72, 36
+ offset: 0, 0
+ index: -1
+scared-walk
+ rotate: false
+ xy: 484, 748
+ size: 96, 36
+ orig: 96, 36
+ offset: 0, 0
+ index: -1
+scoot
+ rotate: false
+ xy: 2, 388
+ size: 200, 30
+ orig: 200, 30
+ offset: 0, 0
+ index: -1
+shock
+ rotate: false
+ xy: 2, 654
+ size: 360, 48
+ orig: 360, 48
+ offset: 0, 0
+ index: -1
+shoot
+ rotate: false
+ xy: 634, 821
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+sigh
+ rotate: false
+ xy: 2, 350
+ size: 162, 36
+ orig: 162, 36
+ offset: 0, 0
+ index: -1
+spear
+ rotate: false
+ xy: 2, 248
+ size: 90, 100
+ orig: 90, 100
+ offset: 0, 0
+ index: -1
+squat
+ rotate: false
+ xy: 364, 666
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+squat-talk
+ rotate: false
+ xy: 472, 526
+ size: 72, 36
+ orig: 72, 36
+ offset: 0, 0
+ index: -1
+stand
+ rotate: false
+ xy: 364, 628
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+standup
+ rotate: false
+ xy: 2, 472
+ size: 225, 55
+ orig: 225, 55
+ offset: 0, 0
+ index: -1
+suspended
+ rotate: false
+ xy: 634, 783
+ size: 140, 36
+ orig: 140, 36
+ offset: 0, 0
+ index: -1
+swing
+ rotate: false
+ xy: 2, 577
+ size: 288, 75
+ orig: 288, 75
+ offset: 0, 0
+ index: -1
+swing-shovel
+ rotate: false
+ xy: 2, 856
+ size: 630, 70
+ orig: 630, 70
+ offset: 0, 0
+ index: -1
+thorw
+ rotate: false
+ xy: 344, 590
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+throw
+ rotate: false
+ xy: 344, 552
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+warden
+ rotate: false
+ xy: 298, 539
+ size: 42, 41
+ orig: 42, 41
+ offset: 0, 0
+ index: -1
+whistle-2
+ rotate: false
+ xy: 242, 362
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+whistle-3
+ rotate: false
+ xy: 454, 476
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+whistle-4
+ rotate: false
+ xy: 472, 488
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/ego.png b/desktop/resources/packed/ego.png
new file mode 100644
index 00000000..9bd31ade
Binary files /dev/null and b/desktop/resources/packed/ego.png differ
diff --git a/desktop/resources/packed/ending-castle.atlas b/desktop/resources/packed/ending-castle.atlas
new file mode 100644
index 00000000..76b52d36
--- /dev/null
+++ b/desktop/resources/packed/ending-castle.atlas
@@ -0,0 +1,356 @@
+
+ending-castle.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 983, 426
+ size: 28, 39
+ orig: 28, 39
+ offset: 0, 0
+ index: -1
+game-player
+ rotate: false
+ xy: 983, 426
+ size: 28, 39
+ orig: 28, 39
+ offset: 0, 0
+ index: -1
+cat-stand
+ rotate: false
+ xy: 2, 15
+ size: 198, 11
+ orig: 198, 11
+ offset: 0, 0
+ index: -1
+crowd-left
+ rotate: false
+ xy: 324, 176
+ size: 116, 135
+ orig: 116, 135
+ offset: 0, 0
+ index: -1
+crowd-right
+ rotate: false
+ xy: 324, 39
+ size: 116, 135
+ orig: 116, 135
+ offset: 0, 0
+ index: -1
+duke
+ rotate: false
+ xy: 324, 462
+ size: 440, 48
+ orig: 440, 48
+ offset: 0, 0
+ index: -1
+ending-castle2-assets/background
+ rotate: false
+ xy: 2, 270
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+ending-castle2-assets/collision
+ rotate: false
+ xy: 2, 28
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+ending-castle2-assets/foreground
+ rotate: false
+ xy: 324, 351
+ size: 344, 109
+ orig: 344, 109
+ offset: 0, 0
+ index: -1
+frankie-fall
+ rotate: false
+ xy: 324, 2
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 0
+frankie-fall
+ rotate: false
+ xy: 366, 2
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 1
+frankie-fall
+ rotate: false
+ xy: 408, 2
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 2
+frankie-fall
+ rotate: false
+ xy: 442, 45
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 3
+frankie-fall
+ rotate: false
+ xy: 526, 58
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 4
+frankie-fall
+ rotate: false
+ xy: 670, 350
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 5
+frankie-fall
+ rotate: false
+ xy: 568, 110
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 6
+frankie-fall
+ rotate: false
+ xy: 568, 73
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 7
+frankie-fall
+ rotate: false
+ xy: 450, 8
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 8
+frankie-fall
+ rotate: false
+ xy: 492, 13
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 9
+frankie-fall
+ rotate: false
+ xy: 534, 21
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 10
+frankie-fall
+ rotate: false
+ xy: 576, 36
+ size: 40, 35
+ orig: 40, 35
+ offset: 0, 0
+ index: 11
+georgia/kick
+ rotate: false
+ xy: 928, 467
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 0
+georgia/kick
+ rotate: false
+ xy: 471, 185
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 1
+georgia/kick
+ rotate: false
+ xy: 471, 185
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 3
+georgia/kick
+ rotate: false
+ xy: 970, 467
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 2
+georgia/kick
+ rotate: false
+ xy: 731, 417
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 4
+georgia/kick
+ rotate: false
+ xy: 773, 422
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 5
+georgia/kick
+ rotate: false
+ xy: 815, 422
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 6
+georgia/kick
+ rotate: false
+ xy: 857, 422
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 7
+georgia/kick
+ rotate: false
+ xy: 899, 422
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 8
+georgia/kick
+ rotate: false
+ xy: 941, 422
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 9
+georgia/kick
+ rotate: false
+ xy: 513, 185
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 10
+georgia/kick
+ rotate: false
+ xy: 544, 230
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 11
+georgia/kick
+ rotate: false
+ xy: 555, 185
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 12
+georgia/kick
+ rotate: false
+ xy: 442, 127
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 13
+georgia/kick
+ rotate: false
+ xy: 442, 82
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 14
+georgia/kick
+ rotate: false
+ xy: 484, 140
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 15
+georgia/kick
+ rotate: false
+ xy: 484, 95
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 16
+georgia/kick
+ rotate: false
+ xy: 526, 140
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 17
+georgia/kick
+ rotate: false
+ xy: 484, 50
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 18
+georgia/kick
+ rotate: false
+ xy: 526, 95
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: 19
+georgia/stand
+ rotate: false
+ xy: 442, 230
+ size: 100, 43
+ orig: 100, 43
+ offset: 0, 0
+ index: -1
+georgia/walk
+ rotate: false
+ xy: 766, 467
+ size: 160, 43
+ orig: 160, 43
+ offset: 0, 0
+ index: -1
+grandma
+ rotate: false
+ xy: 324, 313
+ size: 275, 36
+ orig: 275, 36
+ offset: 0, 0
+ index: -1
+guard-1
+ rotate: false
+ xy: 702, 404
+ size: 27, 56
+ orig: 27, 56
+ offset: 0, 0
+ index: -1
+guard-2
+ rotate: false
+ xy: 442, 172
+ size: 27, 56
+ orig: 27, 56
+ offset: 0, 0
+ index: -1
+hand-hold
+ rotate: false
+ xy: 568, 147
+ size: 36, 36
+ orig: 36, 36
+ offset: 0, 0
+ index: -1
+ladder-guard-2
+ rotate: false
+ xy: 670, 387
+ size: 30, 73
+ orig: 30, 73
+ offset: 0, 0
+ index: -1
+peddler-talk
+ rotate: false
+ xy: 442, 275
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+warden-2
+ rotate: false
+ xy: 601, 308
+ size: 42, 41
+ orig: 42, 41
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/ending-castle.png b/desktop/resources/packed/ending-castle.png
new file mode 100644
index 00000000..c1a213cd
Binary files /dev/null and b/desktop/resources/packed/ending-castle.png differ
diff --git a/desktop/resources/packed/georgia.atlas b/desktop/resources/packed/georgia.atlas
new file mode 100644
index 00000000..c600ef14
--- /dev/null
+++ b/desktop/resources/packed/georgia.atlas
@@ -0,0 +1,160 @@
+
+georgia.png
+size: 256,256
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+kick-1
+ rotate: false
+ xy: 164, 182
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-10
+ rotate: false
+ xy: 44, 47
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-11
+ rotate: false
+ xy: 86, 92
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-12
+ rotate: false
+ xy: 188, 137
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-13
+ rotate: false
+ xy: 44, 2
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-14
+ rotate: false
+ xy: 86, 47
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-15
+ rotate: false
+ xy: 128, 92
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-16
+ rotate: false
+ xy: 86, 2
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-17
+ rotate: false
+ xy: 128, 47
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-18
+ rotate: false
+ xy: 170, 92
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-19
+ rotate: false
+ xy: 128, 2
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-2
+ rotate: false
+ xy: 2, 92
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-4
+ rotate: false
+ xy: 2, 92
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-20
+ rotate: false
+ xy: 170, 47
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-3
+ rotate: false
+ xy: 104, 137
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-5
+ rotate: false
+ xy: 206, 182
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-6
+ rotate: false
+ xy: 2, 47
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-7
+ rotate: false
+ xy: 44, 92
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-8
+ rotate: false
+ xy: 146, 137
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+kick-9
+ rotate: false
+ xy: 2, 2
+ size: 40, 43
+ orig: 40, 43
+ offset: 0, 0
+ index: -1
+stand
+ rotate: false
+ xy: 2, 137
+ size: 100, 43
+ orig: 100, 43
+ offset: 0, 0
+ index: -1
+walk
+ rotate: false
+ xy: 2, 182
+ size: 160, 43
+ orig: 160, 43
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/georgia.png b/desktop/resources/packed/georgia.png
new file mode 100644
index 00000000..6efd91f3
Binary files /dev/null and b/desktop/resources/packed/georgia.png differ
diff --git a/desktop/resources/packed/global.atlas b/desktop/resources/packed/global.atlas
new file mode 100644
index 00000000..6e84b66d
--- /dev/null
+++ b/desktop/resources/packed/global.atlas
@@ -0,0 +1,1322 @@
+
+global.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+bird
+ rotate: false
+ xy: 460, 146
+ size: 2, 2
+ orig: 2, 2
+ offset: 0, 0
+ index: -1
+black
+ rotate: false
+ xy: 574, 372
+ size: 32, 24
+ orig: 32, 24
+ offset: 0, 0
+ index: -1
+close
+ rotate: false
+ xy: 649, 2
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+ego/Untitled
+ rotate: false
+ xy: 634, 858
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+ego/talk
+ rotate: false
+ xy: 634, 858
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+ego/axe
+ rotate: false
+ xy: 2, 534
+ size: 420, 70
+ orig: 420, 70
+ offset: 0, 0
+ index: -1
+ego/axe-wood
+ rotate: false
+ xy: 2, 952
+ size: 660, 70
+ orig: 660, 70
+ offset: 0, 0
+ index: -1
+ego/base
+ rotate: false
+ xy: 1006, 772
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+ego/whistle
+ rotate: false
+ xy: 1006, 772
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: 0
+ego/burnt
+ rotate: false
+ xy: 2, 486
+ size: 480, 46
+ orig: 480, 46
+ offset: 0, 0
+ index: -1
+ego/cat-toy
+ rotate: false
+ xy: 324, 748
+ size: 205, 50
+ orig: 205, 50
+ offset: 0, 0
+ index: -1
+ego/climb
+ rotate: false
+ xy: 324, 800
+ size: 242, 46
+ orig: 242, 46
+ offset: 0, 0
+ index: -1
+ego/crawl
+ rotate: false
+ xy: 634, 896
+ size: 273, 25
+ orig: 273, 25
+ offset: 0, 0
+ index: -1
+ego/crowbar
+ rotate: false
+ xy: 780, 858
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+ego/dot
+ rotate: false
+ xy: 507, 247
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+wizard/dot
+ rotate: false
+ xy: 507, 247
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+ego/fire
+ rotate: false
+ xy: 2, 114
+ size: 216, 36
+ orig: 216, 36
+ offset: 0, 0
+ index: -1
+ego/flying
+ rotate: false
+ xy: 614, 231
+ size: 34, 44
+ orig: 34, 44
+ offset: 0, 0
+ index: -1
+ego/frog
+ rotate: false
+ xy: 476, 322
+ size: 32, 36
+ orig: 32, 36
+ offset: 0, 0
+ index: -1
+ego/frustrated-talk
+ rotate: false
+ xy: 926, 885
+ size: 96, 36
+ orig: 96, 36
+ offset: 0, 0
+ index: -1
+ego/georgia
+ rotate: false
+ xy: 484, 470
+ size: 90, 30
+ orig: 90, 30
+ offset: 0, 0
+ index: -1
+ego/get-sick
+ rotate: false
+ xy: 348, 284
+ size: 108, 36
+ orig: 108, 36
+ offset: 0, 0
+ index: -1
+ego/glad
+ rotate: false
+ xy: 416, 668
+ size: 140, 46
+ orig: 140, 46
+ offset: 0, 0
+ index: -1
+ego/grow
+ rotate: false
+ xy: 166, 4
+ size: 90, 36
+ orig: 90, 36
+ offset: 0, 0
+ index: -1
+ego/grow-talk
+ rotate: false
+ xy: 986, 986
+ size: 36, 36
+ orig: 36, 36
+ offset: 0, 0
+ index: -1
+ego/hand-hold
+ rotate: false
+ xy: 986, 948
+ size: 36, 36
+ orig: 36, 36
+ offset: 0, 0
+ index: -1
+ego/hold-hand
+ rotate: false
+ xy: 1005, 734
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: -1
+ego/hold-up-to-window
+ rotate: false
+ xy: 348, 246
+ size: 108, 36
+ orig: 108, 36
+ offset: 0, 0
+ index: -1
+ego/ida
+ rotate: false
+ xy: 148, 42
+ size: 54, 70
+ orig: 54, 70
+ offset: 0, 0
+ index: -1
+ego/idea
+ rotate: false
+ xy: 292, 316
+ size: 54, 70
+ orig: 54, 70
+ offset: 0, 0
+ index: -1
+ego/in-love
+ rotate: false
+ xy: 2, 848
+ size: 570, 30
+ orig: 570, 30
+ offset: 0, 0
+ index: -1
+ego/jump-straight
+ rotate: false
+ xy: 384, 436
+ size: 90, 48
+ orig: 90, 48
+ offset: 0, 0
+ index: -1
+ego/love
+ rotate: false
+ xy: 254, 239
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 0
+ego/love
+ rotate: false
+ xy: 458, 250
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 1
+ego/love
+ rotate: false
+ xy: 510, 294
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 2
+ego/love
+ rotate: false
+ xy: 510, 222
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 3
+ego/love
+ rotate: false
+ xy: 204, 42
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 4
+ego/love
+ rotate: false
+ xy: 254, 167
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 5
+ego/love
+ rotate: false
+ xy: 408, 137
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 6
+ego/love
+ rotate: false
+ xy: 574, 808
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 7
+ego/love
+ rotate: false
+ xy: 562, 294
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 8
+ego/love
+ rotate: false
+ xy: 562, 222
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 9
+ego/love
+ rotate: false
+ xy: 562, 671
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 10
+ego/love
+ rotate: false
+ xy: 256, 42
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 11
+ego/love
+ rotate: false
+ xy: 308, 63
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 12
+ego/love
+ rotate: false
+ xy: 360, 63
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 13
+ego/love
+ rotate: false
+ xy: 412, 65
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 14
+ego/love
+ rotate: false
+ xy: 574, 398
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 15
+ego/love
+ rotate: false
+ xy: 464, 78
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 16
+ego/love
+ rotate: false
+ xy: 507, 150
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 17
+ego/love
+ rotate: false
+ xy: 559, 150
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 18
+ego/love
+ rotate: false
+ xy: 516, 78
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 19
+ego/love
+ rotate: false
+ xy: 568, 78
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 20
+ego/love
+ rotate: false
+ xy: 493, 6
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 21
+ego/love
+ rotate: false
+ xy: 545, 6
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 22
+ego/love
+ rotate: false
+ xy: 597, 6
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 23
+ego/love
+ rotate: false
+ xy: 611, 150
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 24
+ego/love
+ rotate: false
+ xy: 620, 78
+ size: 50, 70
+ orig: 50, 70
+ offset: 0, 0
+ index: 25
+ego/pant
+ rotate: false
+ xy: 220, 114
+ size: 62, 36
+ orig: 62, 36
+ offset: 0, 0
+ index: -1
+ego/player
+ rotate: false
+ xy: 2, 40
+ size: 144, 72
+ orig: 144, 72
+ offset: 0, 0
+ index: -1
+ego/poke
+ rotate: false
+ xy: 492, 418
+ size: 80, 50
+ orig: 80, 50
+ offset: 0, 0
+ index: -1
+ego/reach
+ rotate: false
+ xy: 932, 772
+ size: 72, 36
+ orig: 72, 36
+ offset: 0, 0
+ index: -1
+ego/scared
+ rotate: false
+ xy: 931, 734
+ size: 72, 36
+ orig: 72, 36
+ offset: 0, 0
+ index: -1
+ego/scared-walk
+ rotate: false
+ xy: 926, 847
+ size: 96, 36
+ orig: 96, 36
+ offset: 0, 0
+ index: -1
+ego/scoot
+ rotate: false
+ xy: 324, 716
+ size: 200, 30
+ orig: 200, 30
+ offset: 0, 0
+ index: -1
+ego/shock
+ rotate: false
+ xy: 2, 388
+ size: 360, 48
+ orig: 360, 48
+ offset: 0, 0
+ index: -1
+ego/shoot
+ rotate: false
+ xy: 416, 630
+ size: 144, 36
+ orig: 144, 36
+ offset: 0, 0
+ index: -1
+ego/sigh
+ rotate: false
+ xy: 2, 2
+ size: 162, 36
+ orig: 162, 36
+ offset: 0, 0
+ index: -1
+ego/spear
+ rotate: false
+ xy: 324, 614
+ size: 90, 100
+ orig: 90, 100
+ offset: 0, 0
+ index: -1
+ego/squat
+ rotate: false
+ xy: 424, 554
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+ego/squat-talk
+ rotate: false
+ xy: 716, 561
+ size: 72, 36
+ orig: 72, 36
+ offset: 0, 0
+ index: -1
+ego/stand
+ rotate: false
+ xy: 364, 398
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+ego/standup
+ rotate: false
+ xy: 2, 152
+ size: 225, 55
+ orig: 225, 55
+ offset: 0, 0
+ index: -1
+ego/suspended
+ rotate: false
+ xy: 424, 592
+ size: 140, 36
+ orig: 140, 36
+ offset: 0, 0
+ index: -1
+ego/swing
+ rotate: false
+ xy: 2, 311
+ size: 288, 75
+ orig: 288, 75
+ offset: 0, 0
+ index: -1
+ego/swing-shovel
+ rotate: false
+ xy: 2, 880
+ size: 630, 70
+ orig: 630, 70
+ offset: 0, 0
+ index: -1
+ego/thorw
+ rotate: false
+ xy: 364, 360
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+ego/throw
+ rotate: false
+ xy: 348, 322
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+ego/warden
+ rotate: false
+ xy: 460, 150
+ size: 42, 41
+ orig: 42, 41
+ offset: 0, 0
+ index: -1
+ego/whistle
+ rotate: false
+ xy: 552, 554
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: 1
+ego/whistle
+ rotate: false
+ xy: 229, 171
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: 2
+ego/whistle
+ rotate: false
+ xy: 1004, 548
+ size: 16, 36
+ orig: 16, 36
+ offset: 0, 0
+ index: 3
+frankie
+ rotate: false
+ xy: 664, 923
+ size: 312, 35
+ orig: 312, 35
+ offset: 0, 0
+ index: -1
+frankie-walk
+ rotate: false
+ xy: 790, 562
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 0
+frankie-walk
+ rotate: false
+ xy: 258, 5
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 1
+frankie-walk
+ rotate: false
+ xy: 790, 525
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 2
+frankie-walk
+ rotate: false
+ xy: 755, 524
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 3
+frankie-walk
+ rotate: false
+ xy: 650, 239
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 4
+frankie-walk
+ rotate: false
+ xy: 676, 239
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 5
+frankie-walk
+ rotate: false
+ xy: 813, 123
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 6
+frankie-walk
+ rotate: false
+ xy: 993, 492
+ size: 24, 35
+ orig: 24, 35
+ offset: 0, 0
+ index: 7
+inventory
+ rotate: false
+ xy: 449, 7
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: -1
+open-inventory
+ rotate: false
+ xy: 449, 7
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 0
+inventory-overlay
+ rotate: false
+ xy: 2, 606
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+open-inventory
+ rotate: false
+ xy: 570, 613
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 1
+open-inventory
+ rotate: false
+ xy: 570, 555
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 2
+open-inventory
+ rotate: false
+ xy: 649, 20
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 3
+open-inventory
+ rotate: false
+ xy: 720, 446
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 4
+open-inventory
+ rotate: false
+ xy: 755, 331
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 5
+open-inventory
+ rotate: false
+ xy: 764, 466
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 6
+open-inventory
+ rotate: false
+ xy: 767, 408
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 7
+open-inventory
+ rotate: false
+ xy: 767, 408
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 9
+open-inventory
+ rotate: false
+ xy: 808, 467
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 8
+open-inventory
+ rotate: false
+ xy: 811, 409
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 10
+open-inventory
+ rotate: false
+ xy: 855, 416
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 11
+open-inventory
+ rotate: false
+ xy: 663, 181
+ size: 42, 56
+ orig: 42, 56
+ offset: 0, 0
+ index: 12
+safe-song/safe-song
+ rotate: false
+ xy: 348, 209
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 0
+safe-song/safe-song
+ rotate: false
+ xy: 306, 172
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 1
+safe-song/safe-song
+ rotate: false
+ xy: 306, 135
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 2
+safe-song/safe-song
+ rotate: false
+ xy: 626, 821
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 3
+safe-song/safe-song
+ rotate: false
+ xy: 728, 821
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 4
+safe-song/safe-song
+ rotate: false
+ xy: 912, 810
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 5
+safe-song/safe-song
+ rotate: false
+ xy: 626, 784
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 6
+safe-song/safe-song
+ rotate: false
+ xy: 728, 784
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 7
+safe-song/safe-song
+ rotate: false
+ xy: 830, 773
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 8
+safe-song/safe-song
+ rotate: false
+ xy: 625, 747
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 9
+safe-song/safe-song
+ rotate: false
+ xy: 727, 747
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 10
+safe-song/safe-song
+ rotate: false
+ xy: 829, 736
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 11
+safe-song/safe-song
+ rotate: false
+ xy: 614, 710
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 12
+safe-song/safe-song
+ rotate: false
+ xy: 716, 710
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 13
+safe-song/safe-song
+ rotate: false
+ xy: 818, 699
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 14
+safe-song/safe-song
+ rotate: false
+ xy: 920, 697
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 15
+safe-song/safe-song
+ rotate: false
+ xy: 614, 673
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 16
+safe-song/safe-song
+ rotate: false
+ xy: 716, 673
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 17
+safe-song/safe-song
+ rotate: false
+ xy: 818, 662
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 18
+safe-song/safe-song
+ rotate: false
+ xy: 920, 660
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 19
+safe-song/safe-song
+ rotate: false
+ xy: 614, 636
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 20
+safe-song/safe-song
+ rotate: false
+ xy: 716, 636
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 21
+safe-song/safe-song
+ rotate: false
+ xy: 818, 625
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 22
+safe-song/safe-song
+ rotate: false
+ xy: 920, 623
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 23
+safe-song/safe-song
+ rotate: false
+ xy: 614, 599
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 24
+safe-song/safe-song
+ rotate: false
+ xy: 716, 599
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 25
+safe-song/safe-song
+ rotate: false
+ xy: 818, 588
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 26
+safe-song/safe-song
+ rotate: false
+ xy: 920, 586
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 27
+safe-song/safe-song
+ rotate: false
+ xy: 614, 562
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: 28
+safe/inputed-key
+ rotate: false
+ xy: 464, 65
+ size: 9, 11
+ orig: 9, 11
+ offset: 0, 0
+ index: -1
+safe/safe-screen
+ rotate: false
+ xy: 2, 209
+ size: 250, 100
+ orig: 250, 100
+ offset: 0, 0
+ index: -1
+save
+ rotate: false
+ xy: 667, 2
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+test/abc
+ rotate: false
+ xy: 664, 960
+ size: 320, 62
+ orig: 320, 62
+ offset: 0, 0
+ index: -1
+white
+ rotate: false
+ xy: 526, 717
+ size: 32, 24
+ orig: 32, 24
+ offset: 0, 0
+ index: -1
+wizard/Untitled
+ rotate: false
+ xy: 484, 502
+ size: 80, 50
+ orig: 80, 50
+ offset: 0, 0
+ index: -1
+wizard/cloud
+ rotate: false
+ xy: 306, 232
+ size: 40, 30
+ orig: 40, 30
+ offset: 0, 0
+ index: -1
+wizard/disappear
+ rotate: false
+ xy: 2, 438
+ size: 380, 46
+ orig: 380, 46
+ offset: 0, 0
+ index: -1
+wizard/experiment
+ rotate: false
+ xy: 531, 743
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 0
+wizard/experiment
+ rotate: false
+ xy: 578, 751
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 1
+wizard/experiment
+ rotate: false
+ xy: 308, 6
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 2
+wizard/experiment
+ rotate: false
+ xy: 355, 6
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 3
+wizard/experiment
+ rotate: false
+ xy: 402, 6
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 4
+wizard/experiment
+ rotate: false
+ xy: 460, 193
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 5
+wizard/experiment
+ rotate: false
+ xy: 816, 531
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 6
+wizard/experiment
+ rotate: false
+ xy: 863, 531
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 7
+wizard/experiment
+ rotate: false
+ xy: 910, 529
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 8
+wizard/experiment
+ rotate: false
+ xy: 957, 529
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 9
+wizard/experiment
+ rotate: false
+ xy: 614, 505
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 10
+wizard/experiment
+ rotate: false
+ xy: 661, 505
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 11
+wizard/experiment
+ rotate: false
+ xy: 708, 504
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 12
+wizard/experiment
+ rotate: false
+ xy: 626, 448
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 13
+wizard/experiment
+ rotate: false
+ xy: 626, 391
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 14
+wizard/experiment
+ rotate: false
+ xy: 673, 447
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 15
+wizard/experiment
+ rotate: false
+ xy: 673, 390
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 16
+wizard/experiment
+ rotate: false
+ xy: 720, 389
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 17
+wizard/experiment
+ rotate: false
+ xy: 614, 334
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 18
+wizard/experiment
+ rotate: false
+ xy: 614, 277
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 19
+wizard/experiment
+ rotate: false
+ xy: 661, 333
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 20
+wizard/experiment
+ rotate: false
+ xy: 661, 276
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 21
+wizard/experiment
+ rotate: false
+ xy: 708, 332
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 22
+wizard/experiment
+ rotate: false
+ xy: 708, 275
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 23
+wizard/experiment
+ rotate: false
+ xy: 755, 274
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 24
+wizard/experiment
+ rotate: false
+ xy: 852, 474
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 25
+wizard/experiment
+ rotate: false
+ xy: 899, 472
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 26
+wizard/experiment
+ rotate: false
+ xy: 946, 472
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 27
+wizard/experiment
+ rotate: false
+ xy: 899, 415
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 28
+wizard/experiment
+ rotate: false
+ xy: 946, 415
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 29
+wizard/experiment
+ rotate: false
+ xy: 707, 218
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 30
+wizard/experiment
+ rotate: false
+ xy: 754, 217
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 31
+wizard/experiment
+ rotate: false
+ xy: 707, 161
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 32
+wizard/experiment
+ rotate: false
+ xy: 754, 160
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 33
+wizard/experiment
+ rotate: false
+ xy: 801, 217
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 34
+wizard/experiment
+ rotate: false
+ xy: 801, 160
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 35
+wizard/experiment
+ rotate: false
+ xy: 672, 104
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 36
+wizard/experiment
+ rotate: false
+ xy: 719, 103
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 37
+wizard/experiment
+ rotate: false
+ xy: 766, 103
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: 38
+wizard/flame
+ rotate: false
+ xy: 247, 197
+ size: 5, 10
+ orig: 5, 10
+ offset: 0, 0
+ index: -1
+wizard/magic-hands
+ rotate: false
+ xy: 306, 264
+ size: 40, 50
+ orig: 40, 50
+ offset: 0, 0
+ index: -1
+wizard/stand
+ rotate: false
+ xy: 284, 119
+ size: 20, 46
+ orig: 20, 46
+ offset: 0, 0
+ index: -1
+wizard/wizard
+ rotate: false
+ xy: 284, 119
+ size: 20, 46
+ orig: 20, 46
+ offset: 0, 0
+ index: -1
+wizard/talk
+ rotate: false
+ xy: 830, 810
+ size: 80, 46
+ orig: 80, 46
+ offset: 0, 0
+ index: -1
+wizard/talk-angry
+ rotate: false
+ xy: 492, 366
+ size: 80, 50
+ orig: 80, 50
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/global.png b/desktop/resources/packed/global.png
new file mode 100644
index 00000000..59d6cc28
Binary files /dev/null and b/desktop/resources/packed/global.png differ
diff --git a/desktop/resources/packed/held.atlas b/desktop/resources/packed/held.atlas
new file mode 100644
index 00000000..b02a994f
--- /dev/null
+++ b/desktop/resources/packed/held.atlas
@@ -0,0 +1,104 @@
+
+held.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 266
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+bloodclot-head
+ rotate: false
+ xy: 324, 182
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 0
+bloodclot-head
+ rotate: false
+ xy: 646, 424
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 1
+bloodclot-head
+ rotate: false
+ xy: 324, 98
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 2
+bloodclot-head
+ rotate: false
+ xy: 440, 182
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 3
+bloodclot-head
+ rotate: false
+ xy: 646, 340
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 4
+bloodclot-head
+ rotate: false
+ xy: 762, 424
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 5
+bloodclot-head
+ rotate: false
+ xy: 440, 98
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 6
+bloodclot-head
+ rotate: false
+ xy: 762, 340
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 7
+bloodclot-head
+ rotate: false
+ xy: 878, 424
+ size: 114, 82
+ orig: 114, 82
+ offset: 0, 0
+ index: 8
+dot
+ rotate: false
+ xy: 324, 95
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+flesh
+ rotate: false
+ xy: 2, 2
+ size: 20, 20
+ orig: 20, 20
+ offset: 0, 0
+ index: -1
+hand
+ rotate: false
+ xy: 2, 24
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+head
+ rotate: false
+ xy: 324, 266
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/held.png b/desktop/resources/packed/held.png
new file mode 100644
index 00000000..b478ccc6
Binary files /dev/null and b/desktop/resources/packed/held.png differ
diff --git a/desktop/resources/packed/inside-antique.atlas b/desktop/resources/packed/inside-antique.atlas
new file mode 100644
index 00000000..fc990692
--- /dev/null
+++ b/desktop/resources/packed/inside-antique.atlas
@@ -0,0 +1,146 @@
+
+inside-antique.png
+size: 1024,1024
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+antique-sigh
+ rotate: false
+ xy: 324, 501
+ size: 216, 21
+ orig: 216, 21
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 2, 766
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+beard
+ rotate: false
+ xy: 646, 710
+ size: 84, 54
+ orig: 84, 54
+ offset: 0, 0
+ index: -1
+bowl
+ rotate: false
+ xy: 646, 695
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+bowl-0
+ rotate: false
+ xy: 646, 695
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+bowl-1
+ rotate: false
+ xy: 732, 751
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+bowl-2
+ rotate: false
+ xy: 2, 2
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+bowl-3
+ rotate: false
+ xy: 76, 25
+ size: 14, 13
+ orig: 14, 13
+ offset: 0, 0
+ index: -1
+closed-blinds
+ rotate: false
+ xy: 2, 524
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+darken
+ rotate: false
+ xy: 324, 766
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+desk
+ rotate: false
+ xy: 2, 282
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 988, 1005
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+fg
+ rotate: false
+ xy: 324, 524
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+glow
+ rotate: false
+ xy: 646, 766
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+open-blinds
+ rotate: false
+ xy: 2, 40
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+portrait
+ rotate: false
+ xy: 324, 483
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+shopkeep
+ rotate: false
+ xy: 968, 985
+ size: 18, 21
+ orig: 18, 21
+ offset: 0, 0
+ index: -1
+shopkeep-talk
+ rotate: false
+ xy: 2, 17
+ size: 72, 21
+ orig: 72, 21
+ offset: 0, 0
+ index: -1
+sword
+ rotate: false
+ xy: 968, 967
+ size: 8, 16
+ orig: 8, 16
+ offset: 0, 0
+ index: -1
+teddy
+ rotate: false
+ xy: 542, 506
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/inside-antique.png b/desktop/resources/packed/inside-antique.png
new file mode 100644
index 00000000..3cde18fc
Binary files /dev/null and b/desktop/resources/packed/inside-antique.png differ
diff --git a/desktop/resources/packed/inside-cafeteria.atlas b/desktop/resources/packed/inside-cafeteria.atlas
new file mode 100644
index 00000000..adb849a2
--- /dev/null
+++ b/desktop/resources/packed/inside-cafeteria.atlas
@@ -0,0 +1,173 @@
+
+inside-cafeteria.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 778
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+doorway
+ rotate: false
+ xy: 1000, 905
+ size: 14, 113
+ orig: 14, 113
+ offset: 0, 0
+ index: -1
+fg
+ rotate: false
+ xy: 324, 778
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+fight-new-assets/fight
+ rotate: false
+ xy: 704, 584
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 0
+fight-new-assets/fight
+ rotate: false
+ xy: 2, 497
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 1
+fight-new-assets/fight
+ rotate: false
+ xy: 260, 497
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 2
+fight-new-assets/fight
+ rotate: false
+ xy: 518, 390
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 3
+fight-new-assets/fight
+ rotate: false
+ xy: 2, 303
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 4
+fight-new-assets/fight
+ rotate: false
+ xy: 260, 303
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 5
+fight-new-assets/fight
+ rotate: false
+ xy: 518, 196
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 6
+fight-new-assets/fight
+ rotate: false
+ xy: 2, 109
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 7
+fight-new-assets/fight
+ rotate: false
+ xy: 260, 109
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 8
+fight-new-assets/fight
+ rotate: false
+ xy: 518, 2
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 9
+glow
+ rotate: false
+ xy: 646, 778
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+knight-a
+ rotate: false
+ xy: 2, 691
+ size: 700, 85
+ orig: 700, 85
+ offset: 0, 0
+ index: -1
+knights
+ rotate: false
+ xy: 518, 592
+ size: 74, 97
+ orig: 74, 97
+ offset: 0, 0
+ index: -1
+knights-stand
+ rotate: false
+ xy: 2, 27
+ size: 490, 80
+ orig: 490, 80
+ offset: 0, 0
+ index: -1
+ladder
+ rotate: false
+ xy: 968, 905
+ size: 29, 38
+ orig: 29, 38
+ offset: 0, 0
+ index: -1
+ladder-guard-2
+ rotate: false
+ xy: 968, 945
+ size: 30, 73
+ orig: 30, 73
+ offset: 0, 0
+ index: -1
+
+inside-cafeteria2.png
+size: 1024,512
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+fight-new-assets/fight
+ rotate: false
+ xy: 2, 196
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 10
+fight-new-assets/fight
+ rotate: false
+ xy: 2, 2
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 11
+fight-new-assets/fight
+ rotate: false
+ xy: 260, 196
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 12
+fight-new-assets/fight
+ rotate: false
+ xy: 260, 2
+ size: 256, 192
+ orig: 256, 192
+ offset: 0, 0
+ index: 13
diff --git a/desktop/resources/packed/inside-cafeteria.png b/desktop/resources/packed/inside-cafeteria.png
new file mode 100644
index 00000000..8cd7f70c
Binary files /dev/null and b/desktop/resources/packed/inside-cafeteria.png differ
diff --git a/desktop/resources/packed/inside-cafeteria2.png b/desktop/resources/packed/inside-cafeteria2.png
new file mode 100644
index 00000000..9708bc9a
Binary files /dev/null and b/desktop/resources/packed/inside-cafeteria2.png differ
diff --git a/desktop/resources/packed/inside-castle.atlas b/desktop/resources/packed/inside-castle.atlas
new file mode 100644
index 00000000..961468f9
--- /dev/null
+++ b/desktop/resources/packed/inside-castle.atlas
@@ -0,0 +1,174 @@
+
+inside-castle.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 428, 436
+ size: 160, 44
+ orig: 160, 44
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 2, 148
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+books
+ rotate: false
+ xy: 88, 461
+ size: 34, 19
+ orig: 34, 19
+ offset: 0, 0
+ index: -1
+bookstack
+ rotate: false
+ xy: 399, 445
+ size: 27, 35
+ orig: 27, 35
+ offset: 0, 0
+ index: -1
+brian-working
+ rotate: false
+ xy: 590, 436
+ size: 320, 44
+ orig: 320, 44
+ offset: 0, 0
+ index: -1
+door
+ rotate: false
+ xy: 2, 413
+ size: 84, 49
+ orig: 84, 49
+ offset: 0, 0
+ index: -1
+game-player-talk
+ rotate: false
+ xy: 88, 390
+ size: 400, 44
+ orig: 400, 44
+ offset: 0, 0
+ index: -1
+gameplayer
+ rotate: false
+ xy: 912, 436
+ size: 40, 44
+ orig: 40, 44
+ offset: 0, 0
+ index: -1
+magic
+ rotate: false
+ xy: 202, 460
+ size: 20, 20
+ orig: 20, 20
+ offset: 0, 0
+ index: -1
+monocle
+ rotate: false
+ xy: 124, 461
+ size: 76, 19
+ orig: 76, 19
+ offset: 0, 0
+ index: -1
+pedestal-overlay
+ rotate: false
+ xy: 324, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+pull-sword
+ rotate: false
+ xy: 490, 244
+ size: 380, 190
+ orig: 380, 190
+ offset: 0, 0
+ index: -1
+roof
+ rotate: false
+ xy: 954, 423
+ size: 57, 57
+ orig: 57, 57
+ offset: 0, 0
+ index: -1
+sign1
+ rotate: false
+ xy: 224, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+sign
+ rotate: false
+ xy: 224, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: 0
+sign2
+ rotate: false
+ xy: 270, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+sign
+ rotate: false
+ xy: 270, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: 1
+sign3
+ rotate: false
+ xy: 316, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: -1
+sign
+ rotate: false
+ xy: 316, 460
+ size: 44, 20
+ orig: 44, 20
+ offset: 0, 0
+ index: 2
+sword
+ rotate: false
+ xy: 12, 464
+ size: 8, 16
+ orig: 8, 16
+ offset: 0, 0
+ index: -1
+trophy
+ rotate: false
+ xy: 22, 464
+ size: 64, 16
+ orig: 64, 16
+ offset: 0, 0
+ index: -1
+walkie-talkie
+ rotate: false
+ xy: 362, 446
+ size: 35, 34
+ orig: 35, 34
+ offset: 0, 0
+ index: -1
+watch
+ rotate: false
+ xy: 2, 472
+ size: 8, 8
+ orig: 8, 8
+ offset: 0, 0
+ index: -1
+way-back-tree
+ rotate: false
+ xy: 646, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/inside-castle.png b/desktop/resources/packed/inside-castle.png
new file mode 100644
index 00000000..0055ec71
Binary files /dev/null and b/desktop/resources/packed/inside-castle.png differ
diff --git a/desktop/resources/packed/inside-house.atlas b/desktop/resources/packed/inside-house.atlas
new file mode 100644
index 00000000..4df32d4f
--- /dev/null
+++ b/desktop/resources/packed/inside-house.atlas
@@ -0,0 +1,90 @@
+
+inside-house.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 270
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+candle
+ rotate: false
+ xy: 898, 478
+ size: 102, 32
+ orig: 102, 32
+ offset: 0, 0
+ index: -1
+candle-aura
+ rotate: false
+ xy: 646, 381
+ size: 108, 27
+ orig: 108, 27
+ offset: 0, 0
+ index: -1
+desk
+ rotate: false
+ xy: 2, 28
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 2, 2
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+flask
+ rotate: false
+ xy: 646, 358
+ size: 16, 21
+ orig: 16, 21
+ offset: 0, 0
+ index: -1
+frog-legs
+ rotate: false
+ xy: 756, 392
+ size: 17, 16
+ orig: 17, 16
+ offset: 0, 0
+ index: -1
+glow
+ rotate: false
+ xy: 324, 270
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+inputed-key
+ rotate: false
+ xy: 2, 5
+ size: 9, 11
+ orig: 9, 11
+ offset: 0, 0
+ index: -1
+safe-lock
+ rotate: false
+ xy: 2, 18
+ size: 243, 8
+ orig: 243, 8
+ offset: 0, 0
+ index: -1
+safe-screen
+ rotate: false
+ xy: 646, 410
+ size: 250, 100
+ orig: 250, 100
+ offset: 0, 0
+ index: -1
+sillhoute
+ rotate: false
+ xy: 324, 28
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/inside-house.png b/desktop/resources/packed/inside-house.png
new file mode 100644
index 00000000..406f62b5
Binary files /dev/null and b/desktop/resources/packed/inside-house.png differ
diff --git a/desktop/resources/packed/inside-jail.atlas b/desktop/resources/packed/inside-jail.atlas
new file mode 100644
index 00000000..b9395cb5
--- /dev/null
+++ b/desktop/resources/packed/inside-jail.atlas
@@ -0,0 +1,118 @@
+
+inside-jail.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 262
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+ball-n-chain
+ rotate: false
+ xy: 2, 2
+ size: 38, 16
+ orig: 38, 16
+ offset: 0, 0
+ index: -1
+bars
+ rotate: false
+ xy: 2, 20
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+bars-
+ rotate: false
+ xy: 324, 262
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+candle
+ rotate: false
+ xy: 646, 146
+ size: 80, 25
+ orig: 80, 25
+ offset: 0, 0
+ index: -1
+candle-aura
+ rotate: false
+ xy: 646, 173
+ size: 108, 27
+ orig: 108, 27
+ offset: 0, 0
+ index: -1
+chest-top
+ rotate: false
+ xy: 906, 228
+ size: 44, 32
+ orig: 44, 32
+ offset: 0, 0
+ index: -1
+chest-top-open
+ rotate: false
+ xy: 968, 377
+ size: 44, 32
+ orig: 44, 32
+ offset: 0, 0
+ index: -1
+crowbar
+ rotate: false
+ xy: 646, 111
+ size: 64, 33
+ orig: 64, 33
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 756, 199
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+fg
+ rotate: false
+ xy: 324, 20
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+glow
+ rotate: false
+ xy: 646, 262
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+moveable-bars
+ rotate: false
+ xy: 968, 411
+ size: 53, 91
+ orig: 53, 91
+ offset: 0, 0
+ index: -1
+warden
+ rotate: false
+ xy: 646, 202
+ size: 258, 58
+ orig: 258, 58
+ offset: 0, 0
+ index: -1
+window
+ rotate: false
+ xy: 646, 80
+ size: 18, 29
+ orig: 18, 29
+ offset: 0, 0
+ index: -1
+window-bent
+ rotate: false
+ xy: 968, 346
+ size: 18, 29
+ orig: 18, 29
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/inside-jail.png b/desktop/resources/packed/inside-jail.png
new file mode 100644
index 00000000..7dd80c5a
Binary files /dev/null and b/desktop/resources/packed/inside-jail.png differ
diff --git a/desktop/resources/packed/inside-stash.atlas b/desktop/resources/packed/inside-stash.atlas
new file mode 100644
index 00000000..e78f5066
--- /dev/null
+++ b/desktop/resources/packed/inside-stash.atlas
@@ -0,0 +1,34 @@
+
+inside-stash.png
+size: 512,256
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 11
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+candle
+ rotate: false
+ xy: 324, 218
+ size: 16, 4
+ orig: 16, 4
+ offset: 0, 0
+ index: -1
+candle-aura
+ rotate: false
+ xy: 324, 224
+ size: 108, 27
+ orig: 108, 27
+ offset: 0, 0
+ index: -1
+lid
+ rotate: false
+ xy: 2, 2
+ size: 23, 7
+ orig: 23, 7
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/inside-stash.png b/desktop/resources/packed/inside-stash.png
new file mode 100644
index 00000000..400b2527
Binary files /dev/null and b/desktop/resources/packed/inside-stash.png differ
diff --git a/desktop/resources/packed/outside-castle.atlas b/desktop/resources/packed/outside-castle.atlas
new file mode 100644
index 00000000..b9c1ed6e
--- /dev/null
+++ b/desktop/resources/packed/outside-castle.atlas
@@ -0,0 +1,104 @@
+
+outside-castle.png
+size: 1024,256
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 646, 73
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+peddler-talk
+ rotate: false
+ xy: 646, 73
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 2, 6
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+balloons
+ rotate: false
+ xy: 774, 91
+ size: 60, 36
+ orig: 60, 36
+ offset: 0, 0
+ index: -1
+bird
+ rotate: false
+ xy: 896, 145
+ size: 2, 2
+ orig: 2, 2
+ offset: 0, 0
+ index: -1
+blanket
+ rotate: false
+ xy: 646, 25
+ size: 103, 46
+ orig: 103, 46
+ offset: 0, 0
+ index: -1
+brush-bl
+ rotate: false
+ xy: 896, 149
+ size: 60, 60
+ orig: 60, 60
+ offset: 0, 0
+ index: -1
+brush-br
+ rotate: false
+ xy: 764, 129
+ size: 130, 80
+ orig: 130, 80
+ offset: 0, 0
+ index: -1
+crowd-right
+ rotate: false
+ xy: 646, 111
+ size: 116, 135
+ orig: 116, 135
+ offset: 0, 0
+ index: -1
+flies
+ rotate: false
+ xy: 646, 2
+ size: 63, 21
+ orig: 63, 21
+ offset: 0, 0
+ index: -1
+note
+ rotate: false
+ xy: 966, 230
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+peddler
+ rotate: false
+ xy: 751, 35
+ size: 18, 36
+ orig: 18, 36
+ offset: 0, 0
+ index: -1
+steer
+ rotate: false
+ xy: 764, 211
+ size: 200, 35
+ orig: 200, 35
+ offset: 0, 0
+ index: -1
+walk-behind
+ rotate: false
+ xy: 324, 6
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/outside-castle.png b/desktop/resources/packed/outside-castle.png
new file mode 100644
index 00000000..c9bd67c6
Binary files /dev/null and b/desktop/resources/packed/outside-castle.png differ
diff --git a/desktop/resources/packed/outside-jail.atlas b/desktop/resources/packed/outside-jail.atlas
new file mode 100644
index 00000000..b2f1eaa0
--- /dev/null
+++ b/desktop/resources/packed/outside-jail.atlas
@@ -0,0 +1,118 @@
+
+outside-jail.png
+size: 1024,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 2, 146
+ size: 600, 70
+ orig: 600, 70
+ offset: 0, 0
+ index: -1
+alarm-clock
+ rotate: false
+ xy: 2, 2
+ size: 16, 11
+ orig: 16, 11
+ offset: 0, 0
+ index: -1
+axe
+ rotate: false
+ xy: 189, 68
+ size: 22, 33
+ orig: 22, 33
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 544, 250
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+bent-bar-window
+ rotate: false
+ xy: 866, 368
+ size: 17, 33
+ orig: 17, 33
+ offset: 0, 0
+ index: -1
+candle
+ rotate: false
+ xy: 942, 465
+ size: 80, 25
+ orig: 80, 25
+ offset: 0, 0
+ index: -1
+candle-aura
+ rotate: false
+ xy: 2, 355
+ size: 540, 135
+ orig: 540, 135
+ offset: 0, 0
+ index: -1
+candle-aura2
+ rotate: false
+ xy: 2, 218
+ size: 540, 135
+ orig: 540, 135
+ offset: 0, 0
+ index: -1
+closed-stash
+ rotate: false
+ xy: 544, 218
+ size: 52, 30
+ orig: 52, 30
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 598, 247
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+fountain
+ rotate: false
+ xy: 604, 8
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+guard
+ rotate: false
+ xy: 866, 403
+ size: 74, 87
+ orig: 74, 87
+ offset: 0, 0
+ index: -1
+guard-sleep
+ rotate: false
+ xy: 294, 77
+ size: 172, 67
+ orig: 172, 67
+ offset: 0, 0
+ index: -1
+open-stash
+ rotate: false
+ xy: 2, 103
+ size: 290, 41
+ orig: 290, 41
+ offset: 0, 0
+ index: -1
+rope
+ rotate: false
+ xy: 2, 15
+ size: 185, 86
+ orig: 185, 86
+ offset: 0, 0
+ index: -1
+spear
+ rotate: false
+ xy: 468, 93
+ size: 11, 51
+ orig: 11, 51
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/outside-jail.png b/desktop/resources/packed/outside-jail.png
new file mode 100644
index 00000000..52f8989d
Binary files /dev/null and b/desktop/resources/packed/outside-jail.png differ
diff --git a/desktop/resources/packed/outsidehouse.atlas b/desktop/resources/packed/outsidehouse.atlas
new file mode 100644
index 00000000..f891cb8c
--- /dev/null
+++ b/desktop/resources/packed/outsidehouse.atlas
@@ -0,0 +1,188 @@
+
+outsidehouse.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 706
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+background-trees
+ rotate: false
+ xy: 2, 464
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+butterfly
+ rotate: false
+ xy: 848, 667
+ size: 14, 7
+ orig: 14, 7
+ offset: 0, 0
+ index: -1
+cauldron
+ rotate: false
+ xy: 646, 666
+ size: 200, 38
+ orig: 200, 38
+ offset: 0, 0
+ index: -1
+charcoal
+ rotate: false
+ xy: 132, 110
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: 0
+charcoal
+ rotate: false
+ xy: 646, 586
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: 1
+charcoal
+ rotate: false
+ xy: 744, 646
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: 2
+charcoal
+ rotate: false
+ xy: 324, 344
+ size: 24, 18
+ orig: 24, 18
+ offset: 0, 0
+ index: 3
+door
+ rotate: false
+ xy: 646, 606
+ size: 96, 58
+ orig: 96, 58
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 958, 703
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+fence
+ rotate: false
+ xy: 324, 706
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+fg
+ rotate: false
+ xy: 2, 222
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+fg1
+ rotate: false
+ xy: 2, 65
+ size: 128, 63
+ orig: 128, 63
+ offset: 0, 0
+ index: -1
+fg2
+ rotate: false
+ xy: 2, 2
+ size: 59, 61
+ orig: 59, 61
+ offset: 0, 0
+ index: -1
+fgtest
+ rotate: false
+ xy: 324, 364
+ size: 75, 75
+ orig: 75, 75
+ offset: 0, 0
+ index: -1
+foreground
+ rotate: false
+ xy: 324, 464
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+house
+ rotate: false
+ xy: 646, 706
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+lamb
+ rotate: false
+ xy: 524, 443
+ size: 26, 19
+ orig: 26, 19
+ offset: 0, 0
+ index: -1
+lamb-walk
+ rotate: false
+ xy: 848, 676
+ size: 108, 28
+ orig: 108, 28
+ offset: 0, 0
+ index: -1
+note
+ rotate: false
+ xy: 401, 423
+ size: 16, 16
+ orig: 16, 16
+ offset: 0, 0
+ index: -1
+sheep
+ rotate: false
+ xy: 968, 925
+ size: 33, 21
+ orig: 33, 21
+ offset: 0, 0
+ index: -1
+sheep-1
+ rotate: false
+ xy: 2, 199
+ size: 330, 21
+ orig: 330, 21
+ offset: 0, 0
+ index: -1
+sheep-2
+ rotate: false
+ xy: 2, 176
+ size: 330, 21
+ orig: 330, 21
+ offset: 0, 0
+ index: -1
+sheep-3
+ rotate: false
+ xy: 2, 153
+ size: 330, 21
+ orig: 330, 21
+ offset: 0, 0
+ index: -1
+sheep-anim
+ rotate: false
+ xy: 2, 130
+ size: 429, 21
+ orig: 429, 21
+ offset: 0, 0
+ index: -1
+sheep-walk
+ rotate: false
+ xy: 324, 441
+ size: 198, 21
+ orig: 198, 21
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/outsidehouse.png b/desktop/resources/packed/outsidehouse.png
new file mode 100644
index 00000000..33e13849
Binary files /dev/null and b/desktop/resources/packed/outsidehouse.png differ
diff --git a/desktop/resources/packed/pack.png b/desktop/resources/packed/pack.png
deleted file mode 100644
index fb4e4cb5..00000000
Binary files a/desktop/resources/packed/pack.png and /dev/null differ
diff --git a/desktop/resources/packed/pack2.png b/desktop/resources/packed/pack2.png
deleted file mode 100644
index 43a0c7d1..00000000
Binary files a/desktop/resources/packed/pack2.png and /dev/null differ
diff --git a/desktop/resources/packed/pack3.png b/desktop/resources/packed/pack3.png
deleted file mode 100644
index 6a09af78..00000000
Binary files a/desktop/resources/packed/pack3.png and /dev/null differ
diff --git a/desktop/resources/packed/safe-song.atlas b/desktop/resources/packed/safe-song.atlas
new file mode 100644
index 00000000..57f3e84b
--- /dev/null
+++ b/desktop/resources/packed/safe-song.atlas
@@ -0,0 +1,209 @@
+
+safe-song.png
+size: 1024,128
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+safe-song-1
+ rotate: false
+ xy: 2, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-10
+ rotate: false
+ xy: 206, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-11
+ rotate: false
+ xy: 308, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-12
+ rotate: false
+ xy: 410, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-13
+ rotate: false
+ xy: 308, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-14
+ rotate: false
+ xy: 410, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-15
+ rotate: false
+ xy: 512, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-16
+ rotate: false
+ xy: 410, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-17
+ rotate: false
+ xy: 512, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-18
+ rotate: false
+ xy: 614, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-19
+ rotate: false
+ xy: 512, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-2
+ rotate: false
+ xy: 2, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-20
+ rotate: false
+ xy: 614, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-21
+ rotate: false
+ xy: 716, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-22
+ rotate: false
+ xy: 614, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-23
+ rotate: false
+ xy: 716, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-24
+ rotate: false
+ xy: 818, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-25
+ rotate: false
+ xy: 716, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-26
+ rotate: false
+ xy: 818, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-27
+ rotate: false
+ xy: 920, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-28
+ rotate: false
+ xy: 818, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-29
+ rotate: false
+ xy: 920, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-3
+ rotate: false
+ xy: 104, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-4
+ rotate: false
+ xy: 2, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-5
+ rotate: false
+ xy: 104, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-6
+ rotate: false
+ xy: 206, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-7
+ rotate: false
+ xy: 104, 2
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-8
+ rotate: false
+ xy: 206, 39
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
+safe-song-9
+ rotate: false
+ xy: 308, 76
+ size: 100, 35
+ orig: 100, 35
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/safe-song.png b/desktop/resources/packed/safe-song.png
new file mode 100644
index 00000000..ac9dd8a0
Binary files /dev/null and b/desktop/resources/packed/safe-song.png differ
diff --git a/desktop/resources/packed/space.atlas b/desktop/resources/packed/space.atlas
new file mode 100644
index 00000000..7882074c
--- /dev/null
+++ b/desktop/resources/packed/space.atlas
@@ -0,0 +1,363 @@
+
+space.png
+size: 1024,1024
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Blergh
+ rotate: false
+ xy: 852, 849
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+Untitled
+ rotate: false
+ xy: 452, 477
+ size: 36, 36
+ orig: 36, 36
+ offset: 0, 0
+ index: -1
+background
+ rotate: false
+ xy: 2, 607
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+blergh-flex
+ rotate: false
+ xy: 2, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+blergh-stand
+ rotate: false
+ xy: 2, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+blergh-talk
+ rotate: false
+ xy: 324, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: -1
+bloodclot-explode
+ rotate: false
+ xy: 538, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 0
+bloodclot-explode
+ rotate: false
+ xy: 2, 31
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 1
+bloodclot-explode
+ rotate: false
+ xy: 110, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 2
+bloodclot-explode
+ rotate: false
+ xy: 432, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 3
+bloodclot-explode
+ rotate: false
+ xy: 646, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 4
+bloodclot-explode
+ rotate: false
+ xy: 110, 31
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 5
+bloodclot-explode
+ rotate: false
+ xy: 540, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 6
+bloodclot-explode
+ rotate: false
+ xy: 754, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 7
+bloodclot-explode
+ rotate: false
+ xy: 648, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 8
+bloodclot-explode
+ rotate: false
+ xy: 218, 198
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 9
+bloodclot-explode
+ rotate: false
+ xy: 218, 31
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 10
+bloodclot-explode
+ rotate: false
+ xy: 756, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 11
+bloodclot-explode
+ rotate: false
+ xy: 862, 682
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 12
+bloodclot-explode
+ rotate: false
+ xy: 864, 515
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 13
+bloodclot-explode
+ rotate: false
+ xy: 326, 310
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 14
+bloodclot-explode
+ rotate: false
+ xy: 326, 143
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 15
+bloodclot-explode
+ rotate: false
+ xy: 434, 310
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 16
+bloodclot-explode
+ rotate: false
+ xy: 434, 143
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 17
+bloodclot-explode
+ rotate: false
+ xy: 542, 348
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 18
+bloodclot-explode
+ rotate: false
+ xy: 542, 181
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 19
+bloodclot-explode
+ rotate: false
+ xy: 650, 348
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 20
+bloodclot-explode
+ rotate: false
+ xy: 650, 181
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 21
+bloodclot-explode
+ rotate: false
+ xy: 758, 348
+ size: 106, 165
+ orig: 106, 165
+ offset: 0, 0
+ index: 22
+bloodclot-head-talk
+ rotate: false
+ xy: 326, 66
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 0
+bloodclot-head-talk
+ rotate: false
+ xy: 758, 271
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 1
+bloodclot-head-talk
+ rotate: false
+ xy: 866, 438
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 2
+bloodclot-head-talk
+ rotate: false
+ xy: 410, 66
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 3
+bloodclot-head-talk
+ rotate: false
+ xy: 758, 194
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 4
+bloodclot-head-talk
+ rotate: false
+ xy: 866, 361
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 5
+bloodclot-head-talk
+ rotate: false
+ xy: 494, 66
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 6
+bloodclot-head-talk
+ rotate: false
+ xy: 578, 104
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 7
+bloodclot-head-talk
+ rotate: false
+ xy: 662, 104
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 8
+bloodclot-head-talk
+ rotate: false
+ xy: 578, 27
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 9
+bloodclot-head-talk
+ rotate: false
+ xy: 662, 27
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 10
+bloodclot-head-talk
+ rotate: false
+ xy: 842, 271
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 11
+bloodclot-head-talk
+ rotate: false
+ xy: 842, 194
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 12
+bloodclot-head-talk
+ rotate: false
+ xy: 758, 117
+ size: 82, 75
+ orig: 82, 75
+ offset: 0, 0
+ index: 13
+bloodclot-stand
+ rotate: false
+ xy: 324, 682
+ size: 212, 165
+ orig: 212, 165
+ offset: 0, 0
+ index: -1
+bloodclot-talk
+ rotate: false
+ xy: 2, 849
+ size: 848, 165
+ orig: 848, 165
+ offset: 0, 0
+ index: -1
+broken-jewel
+ rotate: false
+ xy: 746, 165
+ size: 10, 14
+ orig: 10, 14
+ offset: 0, 0
+ index: -1
+bullet
+ rotate: false
+ xy: 2, 5
+ size: 192, 24
+ orig: 192, 24
+ offset: 0, 0
+ index: -1
+cloud
+ rotate: false
+ xy: 960, 999
+ size: 15, 15
+ orig: 15, 15
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 2, 2
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+later
+ rotate: false
+ xy: 2, 365
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+susp
+ rotate: false
+ xy: 324, 477
+ size: 126, 36
+ orig: 126, 36
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/space.png b/desktop/resources/packed/space.png
new file mode 100644
index 00000000..6e16ecc8
Binary files /dev/null and b/desktop/resources/packed/space.png differ
diff --git a/desktop/resources/packed/splash.atlas b/desktop/resources/packed/splash.atlas
new file mode 100644
index 00000000..1cc14075
--- /dev/null
+++ b/desktop/resources/packed/splash.atlas
@@ -0,0 +1,20 @@
+
+splash.png
+size: 1024,256
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+POPPixelLogo_02
+ rotate: false
+ xy: 2, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: 0
+dbh
+ rotate: false
+ xy: 324, 2
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/splash.png b/desktop/resources/packed/splash.png
new file mode 100644
index 00000000..3c3ad6ce
Binary files /dev/null and b/desktop/resources/packed/splash.png differ
diff --git a/desktop/resources/packed/title.atlas b/desktop/resources/packed/title.atlas
new file mode 100644
index 00000000..263815e5
--- /dev/null
+++ b/desktop/resources/packed/title.atlas
@@ -0,0 +1,223 @@
+
+title.png
+size: 1024,1024
+format: RGBA4444
+filter: Nearest,Nearest
+repeat: none
+background
+ rotate: false
+ xy: 2, 733
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+balloon
+ rotate: false
+ xy: 648, 943
+ size: 60, 30
+ orig: 60, 30
+ offset: 0, 0
+ index: -1
+banner
+ rotate: false
+ xy: 544, 975
+ size: 171, 42
+ orig: 171, 42
+ offset: 0, 0
+ index: -1
+banner-back
+ rotate: false
+ xy: 2, 975
+ size: 540, 42
+ orig: 540, 42
+ offset: 0, 0
+ index: -1
+clouds
+ rotate: false
+ xy: 2, 491
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 2, 2
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+logo
+ rotate: false
+ xy: 2, 249
+ size: 320, 240
+ orig: 320, 240
+ offset: 0, 0
+ index: -1
+quill
+ rotate: false
+ xy: 324, 324
+ size: 33, 39
+ orig: 33, 39
+ offset: 0, 0
+ index: -1
+save-indicator
+ rotate: false
+ xy: 879, 1010
+ size: 7, 7
+ orig: 7, 7
+ offset: 0, 0
+ index: -1
+save-indicator-active
+ rotate: false
+ xy: 810, 766
+ size: 7, 7
+ orig: 7, 7
+ offset: 0, 0
+ index: -1
+screenshots/behind-house-day
+ rotate: false
+ xy: 324, 853
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/behind-house-night
+ rotate: false
+ xy: 2, 127
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/cafeteria
+ rotate: false
+ xy: 324, 731
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/castle-gate
+ rotate: false
+ xy: 2, 5
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/cat-tree-day
+ rotate: false
+ xy: 324, 609
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/cat-tree-night
+ rotate: false
+ xy: 324, 487
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/dream
+ rotate: false
+ xy: 324, 365
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/duel
+ rotate: false
+ xy: 164, 127
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/fountain-day
+ rotate: false
+ xy: 164, 5
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/fountain-night
+ rotate: false
+ xy: 486, 853
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/held
+ rotate: false
+ xy: 486, 731
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-antique
+ rotate: false
+ xy: 486, 609
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-castle-day
+ rotate: false
+ xy: 486, 487
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-castle-night
+ rotate: false
+ xy: 486, 365
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-house
+ rotate: false
+ xy: 717, 897
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-jail
+ rotate: false
+ xy: 648, 775
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/inside-stash
+ rotate: false
+ xy: 648, 653
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-castle-day
+ rotate: false
+ xy: 648, 531
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-castle-night
+ rotate: false
+ xy: 648, 409
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-house-day
+ rotate: false
+ xy: 648, 287
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
+screenshots/outside-house-night
+ rotate: false
+ xy: 810, 775
+ size: 160, 120
+ orig: 160, 120
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/title.png b/desktop/resources/packed/title.png
new file mode 100644
index 00000000..4d0cf3c5
Binary files /dev/null and b/desktop/resources/packed/title.png differ
diff --git a/desktop/resources/packed/wizard.atlas b/desktop/resources/packed/wizard.atlas
new file mode 100644
index 00000000..b9c825d0
--- /dev/null
+++ b/desktop/resources/packed/wizard.atlas
@@ -0,0 +1,342 @@
+
+wizard.png
+size: 1024,256
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+Untitled
+ rotate: false
+ xy: 2, 143
+ size: 80, 50
+ orig: 80, 50
+ offset: 0, 0
+ index: -1
+cloud
+ rotate: false
+ xy: 2, 2
+ size: 40, 30
+ orig: 40, 30
+ offset: 0, 0
+ index: -1
+disappear
+ rotate: false
+ xy: 2, 195
+ size: 380, 46
+ orig: 380, 46
+ offset: 0, 0
+ index: -1
+dot
+ rotate: false
+ xy: 460, 192
+ size: 1, 1
+ orig: 1, 1
+ offset: 0, 0
+ index: -1
+experiment-1
+ rotate: false
+ xy: 84, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-10
+ rotate: false
+ xy: 466, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-11
+ rotate: false
+ xy: 513, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-12
+ rotate: false
+ xy: 560, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-13
+ rotate: false
+ xy: 607, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-14
+ rotate: false
+ xy: 654, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-15
+ rotate: false
+ xy: 701, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-16
+ rotate: false
+ xy: 748, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-17
+ rotate: false
+ xy: 795, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-18
+ rotate: false
+ xy: 842, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-19
+ rotate: false
+ xy: 889, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-2
+ rotate: false
+ xy: 2, 34
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-20
+ rotate: false
+ xy: 936, 186
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-21
+ rotate: false
+ xy: 84, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-22
+ rotate: false
+ xy: 131, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-23
+ rotate: false
+ xy: 178, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-24
+ rotate: false
+ xy: 225, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-25
+ rotate: false
+ xy: 272, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-26
+ rotate: false
+ xy: 319, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-27
+ rotate: false
+ xy: 366, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-28
+ rotate: false
+ xy: 413, 81
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-29
+ rotate: false
+ xy: 460, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-3
+ rotate: false
+ xy: 131, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-30
+ rotate: false
+ xy: 507, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-31
+ rotate: false
+ xy: 554, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-32
+ rotate: false
+ xy: 601, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-33
+ rotate: false
+ xy: 648, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-34
+ rotate: false
+ xy: 695, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-35
+ rotate: false
+ xy: 742, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-36
+ rotate: false
+ xy: 789, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-37
+ rotate: false
+ xy: 836, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-38
+ rotate: false
+ xy: 883, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-39
+ rotate: false
+ xy: 930, 129
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-4
+ rotate: false
+ xy: 178, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-5
+ rotate: false
+ xy: 225, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-6
+ rotate: false
+ xy: 272, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-7
+ rotate: false
+ xy: 319, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-8
+ rotate: false
+ xy: 366, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+experiment-9
+ rotate: false
+ xy: 413, 138
+ size: 45, 55
+ orig: 45, 55
+ offset: 0, 0
+ index: -1
+flame
+ rotate: false
+ xy: 49, 79
+ size: 5, 10
+ orig: 5, 10
+ offset: 0, 0
+ index: -1
+magic-hands
+ rotate: false
+ xy: 460, 77
+ size: 40, 50
+ orig: 40, 50
+ offset: 0, 0
+ index: -1
+stand
+ rotate: false
+ xy: 983, 195
+ size: 20, 46
+ orig: 20, 46
+ offset: 0, 0
+ index: -1
+talk
+ rotate: false
+ xy: 384, 195
+ size: 80, 46
+ orig: 80, 46
+ offset: 0, 0
+ index: -1
+talk-angry
+ rotate: false
+ xy: 2, 91
+ size: 80, 50
+ orig: 80, 50
+ offset: 0, 0
+ index: -1
diff --git a/desktop/resources/packed/wizard.png b/desktop/resources/packed/wizard.png
new file mode 100644
index 00000000..b4b14b1c
Binary files /dev/null and b/desktop/resources/packed/wizard.png differ
diff --git a/desktop/resources/pickup.ogg.mp3 b/desktop/resources/pickup.ogg.mp3
new file mode 100644
index 00000000..11998e47
Binary files /dev/null and b/desktop/resources/pickup.ogg.mp3 differ
diff --git a/desktop/resources/safe-sound.ogg.mp3 b/desktop/resources/safe-sound.ogg.mp3
index 55a6fb0e..7f003b43 100644
Binary files a/desktop/resources/safe-sound.ogg.mp3 and b/desktop/resources/safe-sound.ogg.mp3 differ
diff --git a/desktop/resources/scratch.ogg.mp3 b/desktop/resources/scratch.ogg.mp3
index cca952f4..8622b73d 100644
Binary files a/desktop/resources/scratch.ogg.mp3 and b/desktop/resources/scratch.ogg.mp3 differ
diff --git a/desktop/resources/space/bloodclot-exhale.ogg.mp3 b/desktop/resources/space/bloodclot-exhale.ogg.mp3
new file mode 100644
index 00000000..b51a0ccd
Binary files /dev/null and b/desktop/resources/space/bloodclot-exhale.ogg.mp3 differ
diff --git a/desktop/resources/space/bloodclot-explode.ogg.mp3 b/desktop/resources/space/bloodclot-explode.ogg.mp3
new file mode 100644
index 00000000..21e3688b
Binary files /dev/null and b/desktop/resources/space/bloodclot-explode.ogg.mp3 differ
diff --git a/desktop/resources/space/bloodclot-inhale.ogg.mp3 b/desktop/resources/space/bloodclot-inhale.ogg.mp3
new file mode 100644
index 00000000..a1295e48
Binary files /dev/null and b/desktop/resources/space/bloodclot-inhale.ogg.mp3 differ
diff --git a/desktop/resources/space/jump.ogg.mp3 b/desktop/resources/space/jump.ogg.mp3
index 4bc5742c..b0eff998 100644
Binary files a/desktop/resources/space/jump.ogg.mp3 and b/desktop/resources/space/jump.ogg.mp3 differ
diff --git a/desktop/resources/space/shock-short.ogg.mp3 b/desktop/resources/space/shock-short.ogg.mp3
new file mode 100644
index 00000000..36afa87a
Binary files /dev/null and b/desktop/resources/space/shock-short.ogg.mp3 differ
diff --git a/desktop/resources/space/shock.ogg.mp3 b/desktop/resources/space/shock.ogg.mp3
index 488d6081..326e9886 100644
Binary files a/desktop/resources/space/shock.ogg.mp3 and b/desktop/resources/space/shock.ogg.mp3 differ
diff --git a/desktop/resources/space/swingsword.ogg.mp3 b/desktop/resources/space/swingsword.ogg.mp3
index 12ce2b55..d2f41cb0 100644
Binary files a/desktop/resources/space/swingsword.ogg.mp3 and b/desktop/resources/space/swingsword.ogg.mp3 differ
diff --git a/desktop/resources/wizard/drip.ogg.mp3 b/desktop/resources/wizard/drip.ogg.mp3
new file mode 100644
index 00000000..0bffb43d
Binary files /dev/null and b/desktop/resources/wizard/drip.ogg.mp3 differ
diff --git a/desktop/resources/wizard/explode.ogg.mp3 b/desktop/resources/wizard/explode.ogg.mp3
new file mode 100644
index 00000000..bea57cec
Binary files /dev/null and b/desktop/resources/wizard/explode.ogg.mp3 differ
diff --git a/desktop/resources/wizard/snap.ogg.mp3 b/desktop/resources/wizard/snap.ogg.mp3
new file mode 100644
index 00000000..8cc4a89d
Binary files /dev/null and b/desktop/resources/wizard/snap.ogg.mp3 differ
diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj
index dca324e2..d6077fb3 100644
--- a/desktop/src-common/advent/actions.clj
+++ b/desktop/src-common/advent/actions.clj
@@ -3,7 +3,7 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
- [clojure.pprint]
+
[clojure.string :as s]
[clojure.zip :as zip]
[clojure.set :as set]
@@ -70,7 +70,10 @@
(let [fg-bg-key *fg-bg-key*]
(run-action entities
(begin [this screen entities]
- (update-in entities [fg-bg-key] assoc :script-running? state :last-skip-type (if state :end nil)))
+ (-> entities
+ (update-in [fg-bg-key]
+ assoc :script-running? state :last-skip-type (if state :end nil))
+ (assoc-in [:cursor :came-from-inventory?] false)))
(continue [this screen entities] entities)
@@ -105,7 +108,7 @@
(defn force-end [entities current-action key]
(do (when current-action
(put! (get-channel current-action) :end))
- (screen! dialogue/talking-screen :stop-talk :id key)
+ (screen! dialogue/talking-screen :stop-talk {:id key})
(-> entities
(assoc-in [key :script-running?] false)
(assoc-in [key :current] nil)
@@ -121,29 +124,28 @@
~@forms
(change-script-state ~entities false))))))))
-(defn bound-to-camera [x length zoom]
- (min (- length (* length 0.5 zoom ))
- (max (* length 0.5 zoom )
- x)))
+
(defn pan-to [screen entities x y scale-fn & [ease duration]]
(let [ease (or ease tween/ease-in-out-quadratic)
duration (or duration 3.0)
- target-zoom (min 0.95 (max 0.75 (scale-fn [(max 0 (min 319 x)) (max 0 (min 240 y))])))
+ target-zoom (min utils/min-zoom (max utils/max-zoom (scale-fn [(max 0 (min 319 x)) (max 0 (min 240 y))])))
current-zoom (get-in entities [:cam :zoom] 1.0)
;; don't zoom if it's a subtle difference
- target-zoom (if (< (Math/abs (- target-zoom current-zoom))
+ target-zoom (if (< (Math/abs (double (- target-zoom current-zoom)))
0.07)
current-zoom
target-zoom)
- target-x (bound-to-camera x 320 target-zoom)
- target-y (bound-to-camera y 240 target-zoom)]
+ target-x (utils/bound-to-camera x 320 target-zoom)
+ target-y (utils/bound-to-camera y 240 target-zoom)]
(if (and (or (not= target-x (get-in entities [:cam :x]))
(not= target-y (get-in entities [:cam :y]))
(not= target-zoom (get-in entities [:cam :zoom])))
(not (get-in entities [:cam :paused?])))
(-> entities
+ (assoc-in [:cam :ideal-x] x)
+ (assoc-in [:cam :ideal-y] y)
(assoc-in [:tweens :cam-zoom]
(tween/tween :cam-zoom screen
[:cam :zoom]
@@ -185,14 +187,15 @@
(defn start-animation
([entity anim]
- (start-animation {:total-time 0} entity anim))
+ (start-animation {:total-time 0} entity anim))
([screen entity anim]
- (let [new-anim (find-animation entity anim)]
- (if (and anim (not= new-anim (:anim entity)))
- (assoc entity
- :anim new-anim
- :anim-start (:total-time screen))
- entity))))
+ (let [new-anim (find-animation entity anim)]
+ (if (and anim (not= new-anim (:anim entity)))
+ (assoc entity
+ :force-rerender true
+ :anim new-anim
+ :anim-start (:total-time screen))
+ entity))))
(defn stop [screen entities target-id & {:keys [face]}]
(update-in entities [:room :entities target-id] (comp #(start-animation screen % (or (:stand-override %) :stand) ) (if face #(assoc % :facing face) identity))))
@@ -251,9 +254,9 @@
0
(* speed (/ delta-y distance)))]
(if (< distance speed)
- (-> entities
- (assoc-in [:room :entities target-id :x] final-x)
- (assoc-in [:room :entities target-id :y] final-y))
+ (update-in entities [:room :entities target-id]
+ #(jump-to screen entities % [final-x final-y] update-baseline?))
+
(update-in entities [:room :entities target-id]
#(start-animation screen
(assoc (jump-to screen entities % [(+ moved-x from-x) (+ moved-y from-y)] update-baseline?)
@@ -341,37 +344,52 @@
(continue [this screen entities]
(when (= (rand-int 5) 2)
#_(particle-effect! (:step-particles entities) :start))
- (let [{from-x :x from-y :y :keys [left right scale-x] :as target-entity} (get-in entities [:room :entities target-id])
- [[target-x target-y] remainder] @targets-left]
- (let [delta-x (- target-x from-x)
- delta-y (- target-y from-y)
- distance (utils/dist from-x from-y target-x target-y)
- speed (* (or scale-x 1.0) 1.5)
- speed (* speed
- (/ (:delta-time screen)
- (/ 1.0 60.0)))
- moved-x (if (= 0.0 distance)
- 0
- (* speed (/ delta-x distance)))
- moved-y (if (= 0.0 distance)
- 0
- (* speed (/ delta-y distance)))]
- (if (< distance speed)
- (do (swap! targets-left rest)
- (-> entities
- (assoc-in [:room :entities target-id :x] target-x)
- (assoc-in [:room :entities target-id :y] target-y)
- (assoc-in [:step-particles :x] target-x)
- (assoc-in [:step-particles :y] target-y)))
- (update-in entities [:room :entities target-id]
- #(start-animation screen
- (assoc (jump-to screen entities % [(+ moved-x from-x) (+ moved-y from-y)] true)
- :facing (cond force-dir force-dir
- (< delta-x 0) :left
- (> delta-x 0) :right
- :else (:facing %)))
- :walk
- ))))))
+ (loop [entities entities
+ base-speed (* 1.5
+ (/ (:delta-time screen)
+ (/ 1.0 60.0))
+ 1.0)]
+ (let [{from-x :x from-y :y :keys [left right scale-x] :as target-entity} (get-in entities [:room :entities target-id])
+ [[target-x target-y] remainder] @targets-left]
+ (let [delta-x (- target-x from-x)
+ delta-y (- target-y from-y)
+ distance (utils/dist from-x from-y target-x target-y)
+ speed (* (or scale-x 1.0) base-speed)
+ moved-x (if (= 0.0 distance)
+ 0
+ (* speed (/ delta-x distance)))
+ moved-y (if (= 0.0 distance)
+ 0
+ (* speed (/ delta-y distance)))]
+ (cond (<= speed 0)
+ entities
+
+ (> distance speed)
+ (update-in entities [:room :entities target-id]
+ #(start-animation screen
+ (assoc (jump-to screen entities % [(+ moved-x from-x) (+ moved-y from-y)] true)
+ :facing (cond force-dir force-dir
+ (< delta-x 0) :left
+ (> delta-x 0) :right
+ :else (:facing %)))
+ :walk
+ ))
+
+ (seq remainder)
+ (do
+ (swap! targets-left rest)
+ (recur (-> entities
+
+ (update-in [:room :entities target-id] #(jump-to screen entities % [target-x target-y] true))
+ (assoc-in [:step-particles :x] target-x)
+ (assoc-in [:step-particles :y] target-y))
+ (- base-speed distance)))
+
+ :else
+ (-> entities
+ (update-in [:room :entities target-id] #(jump-to screen entities % [target-x target-y] true))
+ (assoc-in [:step-particles :x] target-x)
+ (assoc-in [:step-particles :y] target-y)))))))
(done? [this screen entities]
(let [{from-x :x from-y :y :keys [left right anim] :as target-entity} (get-in entities [:room :entities target-id])]
@@ -399,23 +417,23 @@
target-y (get-in entities [:room :entities target-id :y])
target-x (get-in entities [:room :entities target-id :x])
width (or (get-in entities [:room :entities target-id :width])
- (.getRegionWidth (get-in entities [:room :entities target-id :object])))
+ (texture! (get-in entities [:room :entities target-id]) :get-region-width))
origin-x (get-in entities [:room :entities target-id :origin-x])
target-x (if (nil? origin-x) (+ target-x (/ width 2)) target-x )
height (or (get-in entities [:room :entities target-id :height])
- (.getRegionHeight (get-in entities [:room :entities target-id :object])))
+ (texture! (get-in entities [:room :entities target-id]) :get-region-height))
scaled (get-in entities [:room :entities target-id :scaled])
scale-fn (get-in entities [:room :scale-fn])
scale (get-in entities [:room :entities target-id :scale-y] 1)
height (* scale height)]
- (screen! dialogue/talking-screen :on-talk :text text
- :id fg-or-bg
- :scene-viewport (:viewport screen)
- :x target-x :y (+ target-y height)
- :color (or color (get-in entities [:room :entities target-id :talk-color]))
-
- :target-id target-id
- :scale scale)
+ (screen! dialogue/talking-screen :on-talk { :text text
+ :id fg-or-bg
+ :scene-viewport (:viewport screen)
+ :x target-x :y (+ target-y height)
+ :color (or color (get-in entities [:room :entities target-id :talk-color]))
+
+ :target-id target-id
+ :scale scale})
(if animate?
(update-in entities [:room :entities target-id ] #(start-animation screen % (or anim (:talk-override %) :talk)))
entities)))
@@ -432,7 +450,7 @@
(terminate [this screen entities]
(if wait
(do
- (screen! dialogue/talking-screen :stop-talk :id fg-or-bg)
+ (screen! dialogue/talking-screen :stop-talk {:id fg-or-bg})
(if stop?
(stop screen entities target-id)
entities))
@@ -468,11 +486,8 @@
dialogue-choices (filter first (partition 2 (:choices node)))]
(run-action entities
(begin [this screen entities]
- (screen! dialogue/choice-screen :on-present-choices :choices dialogue-choices :callback #(reset! selected-index %))
- (screen! @(resolve 'advent.screens.scene/scene) :on-deactivate)
- (-> entities
- (assoc-in [:cursor :override] nil)
- (assoc-in [:cursor :current] :main)))
+ (screen! dialogue/choice-screen :on-present-choices { :choices dialogue-choices :callback #(reset! selected-index %)})
+ (assoc-in entities [:state :active?] false))
(continue [this screen entities] entities)
@@ -480,9 +495,7 @@
(not (nil? @selected-index)))
(terminate [this screen entities]
- (-> entities
- (assoc-in [:state :active?] true)
- (assoc-in [:cursor :override] nil)))
+ (assoc-in entities [:state :active?] true))
(skip-type [this screen entities]
:none))
@@ -538,12 +551,13 @@
(defn update-state [entities f]
(update-entities entities #(update-in % [:state] f)))
-(defn remove-item [entities item]
+(defn remove-item [entities item & {:keys [quiet?] :or {quiet? false}}]
(run-action entities
(begin [this screen entities]
+ (when-not quiet?
+ (screen! @(resolve 'advent.screens.scene/hud) :on-remove-item { :item ((:all-items entities) item)}))
(-> entities
- (update-in [:state :inventory] #(remove (partial = item) %))
- (assoc-in [:cursor :current] :main)))
+ (update-in [:state :inventory] #(remove (partial = item) %))))
(continue [this screen entities] entities)
@@ -558,7 +572,7 @@
([entities sound-file vol & [wait?]]
(let [wait? (if (nil? wait?) true wait?)
s (if (string? sound-file)
- (sound sound-file)
+ (utils/load-sound sound-file)
sound-file)]
(run-action entities
(begin [this screen entities]
@@ -582,10 +596,10 @@
(run-action entities
(begin [this screen entities]
(utils/play-sound! screen entities :pickup (constantly 0.3))
+ (screen! @(resolve 'advent.screens.scene/hud) :on-give-item { :item ((:all-items entities) item)})
(-> entities
(update-in [:state :inventory] #(conj % item))
- (update-in [:state :obtained-items] #(conj % item))
- (assoc-in [:cursor :current] ((:all-items entities) item))))
+ (update-in [:state :obtained-items] #(conj % item))))
(continue [this screen entities] entities)
@@ -661,8 +675,10 @@
(defn transition-background [entities new-background [x y] & {:keys [transition-music? between time face]}]
(let [transition-music? (if (nil? transition-music?) true transition-music?)
- old-music (get-music (get-in @entities [:room :music]) (get-in @entities [:state :time]))
- new-music (get-music (get-in @entities [:rooms new-background :music]) (get-in @entities [:state :time]))
+ old-music (get-music (get-in @entities [:room-musics (get-in @entities [:state :last-room])]) (get-in @entities [:state :time]))
+ ;; TODO FIX
+ new-music (get-music (get-in @entities [:room-musics new-background]) (get-in @entities [:state :time]))
+ _ (println old-music new-music)
music-changed? (and transition-music? (not= old-music new-music))
time (/ (float (or time 1.0)) 2.0)]
(run-action entities
@@ -673,8 +689,7 @@
(assoc-in e [:tweens :fade-out] (tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 time))
(if music-changed?
(assoc-in e [:tweens :fade-out-music] (tween/tween :fade-out-music screen [:volume :value] 1.0 0.0 time))
- e)
- (assoc-in e [:cursor :current] :main)))
+ e)))
(continue [this screen entities]
entities)
@@ -683,6 +698,7 @@
(>= (get-in entities [:fade :opacity]) 1.0))
(terminate [this screen entities]
+ (utils/release-resources screen :room)
(let [entities (stop screen (if-let [next-time (get-in entities [:state :next-time])]
(-> entities
(assoc-in [:state :time] next-time)
@@ -699,14 +715,14 @@
(skip-type [this screen entities]
:none))
(log/info "Entering room " new-background )
- (screen! dialogue/talking-screen :stop-talk :id :bg-actions)
+ (screen! dialogue/talking-screen :stop-talk { :id :bg-actions})
(run-action entities
(begin [this screen entities]
(utils/stop-all-sounds! entities)
(let [ego (get-in entities [:room :entities :ego])
- old-music (get-music (get-in entities [:room :music]) (get-in entities [:state :time]))
+
entities (as-> entities e
- (assoc-in e [:room] (get-in entities [:rooms new-background]))
+ (assoc-in e [:room] ((get-in entities [:rooms new-background]) screen))
(assoc-in e [:room :entities :ego] ego)
(assoc-in e [:current-sounds :value] [])
(if between (between screen e) e)
@@ -715,20 +731,20 @@
(if-not (get-in entities [:cam :paused?])
(-> e
(update-in [:tweens] dissoc :cam-zoom :cam-x :cam-y)
- (assoc-in [:cam :x] 160)
- (assoc-in [:cam :y] 120)
- (assoc-in [:cam :zoom] 0.95))
+ (assoc-in [:cam :ideal-x] x)
+ (assoc-in [:cam :ideal-y] y)
+ (assoc-in [:cam :x] (utils/bound-to-camera x 320 (get-in entities [:cam :zoom])))
+ (assoc-in [:cam :y] (utils/bound-to-camera y 240 (get-in entities [:cam :zoom]))))
e)
(if music-changed?
(assoc-in e [:tweens :fade-in-music] (tween/tween :fade-in-music screen [:volume :value] 0.0 1.0 time))
e))
- new-music (get-music (get-in entities [:room :music]) (get-in entities [:state :time]))
apply-state (get-in entities [:room :apply-state])
entities (if apply-state
(apply-state screen entities)
entities)
- entities (utils/update-override screen entities)]
+ #_#_entities (utils/update-override screen entities)]
(when (and (not= new-music old-music) transition-music?)
(doseq [[k v] (:musics entities)
:when (and v (not= new-music k))]
@@ -780,31 +796,8 @@
:y (get-in entities [:room :entities :ego :y])
:baseline (get-in entities [:room :entities :ego :baseline]))
(particle-effect! :reset) (particle-effect! :start)))
- (assoc-in [:room :entities :cloud] (assoc (utils/get-texture "space/cloud.png")
- :x (get-in entities [:room :entities :ego :x])
- :y (get-in entities [:room :entities :ego :y])
- :origin-x 7
- :origin-y 7
- :scale-x 0.5
- :scale-y 0.5
- :opacity 0.5
- :baseline 240))
- (assoc-in [:tweens :cloud-up] (tween/tween :cloud-up screen [:room :entities :cloud :y]
- (get-in entities [:room :entities :ego :y])
- (+ (get-in entities [:room :entities :ego :y]) 10)
- 1.0))
- (assoc-in [:tweens :cloud-fade] (tween/tween :cloud-fade screen [:room :entities :cloud :opacity]
- 0.5
- 0.0
- 1.0))
- (assoc-in [:tweens :cloud-grow] (tween/tween :cloud-grow screen [:room :entities :cloud :scale-y]
- 0.5
- 1.0
- 1.0))
- (assoc-in [:tweens :cloud-grow-2] (tween/tween :cloud-grow-2 screen [:room :entities :cloud :scale-x]
- 0.5
- 1.0
- 1.0)))))
+
+ )))
(continue [this screen entities]
(assoc-in entities [:room :entities :glad-jump :y] (+ (get-in entities [:room :entities :ego :y]) 5))
@@ -989,7 +982,7 @@
([entities]
(play-safe entities true))
([entities whistle?]
- (let [safe-song-anim (utils/make-anim-seq "safe-song/safe-song" [100 35] 0.05
+ (let [safe-song-anim (utils/make-anim-seq (texture-atlas "packed/global.atlas") "safe-song/safe-song" [100 35] 0.05
(flatten
[
[1 2 3]
@@ -1011,7 +1004,7 @@
(wait entities 400)
(add-entity entities :safe-song
(rooms/make-entity :safe-song
- (assoc (utils/get-texture "safe-song/safe-song-1")
+ (assoc (utils/atlas->texture (texture-atlas "packed/global.atlas") "safe-song/safe-song" 0)
:x 110
:y 120
:baseline 241
diff --git a/desktop/src-common/advent/core.clj b/desktop/src-common/advent/core.clj
index d2daf7ed..460d807d 100644
--- a/desktop/src-common/advent/core.clj
+++ b/desktop/src-common/advent/core.clj
@@ -3,6 +3,7 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
+ [advent.utils :as utils]
[advent.screens.scene :as scene]
[advent.screens.dialogue :as dialogue]
[clojure.tools.logging :as log]
@@ -10,8 +11,10 @@
[advent.screens.splash :as splash]
[advent.screens.credits :as credits]
[advent.screens.inventory :as inventory]
+ [advent.screens.safe :as safe]
+ [advent.screens.fade :as fade]
[advent.steam :as steam]
- [clojure.pprint]
+
[advent.pathfind])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
@@ -22,21 +25,24 @@
(defonce am (asset-manager))
(set-asset-manager! am)
+(defn create-game [advent]
+ (set-screen-wrapper! (fn [screen screen-fn]
+ (try (screen-fn)
+ (catch Exception e
+ (.log Gdx/app "ERROR" (with-out-str (.printStackTrace e)))
+ (set-screen! advent title/title-screen)))))
+ (log/log-capture! *ns* :warn :error)
+ (log/info "Starting game on version v" (advent.version/version))
+ (utils/listen-for-screenshots)
+
+ (set-screen! advent splash/splash-screen))
(defgame advent
:on-create
(fn [this]
- (log/log-capture! *ns* :warn :error)
- (log/info "Starting game on version v" (advent.version/version))
- (steam/init)
- (set-screen! this splash/splash-screen)))
+ (create-game advent)))
(defn reload []
(on-gl (set-screen! advent title/title-screen)))
-(set-screen-wrapper! (fn [screen screen-fn]
- (try (screen-fn)
- (catch Exception e
- (.log Gdx/app "ERROR" (with-out-str (.printStackTrace e)))
- (log/error e (with-out-str (.printStackTrace e)))
- (set-screen! advent title/title-screen)))))
+
diff --git a/desktop/src-common/advent/max_progress_bar.clj b/desktop/src-common/advent/max_progress_bar.clj
new file mode 100644
index 00000000..64dd34ca
--- /dev/null
+++ b/desktop/src-common/advent/max_progress_bar.clj
@@ -0,0 +1,28 @@
+(ns advent.max-progress-bar
+ (:require [play-clj.utils :as u])
+ (:import [play_clj.entities ActorEntity])
+ )
+
+(gen-class :name advent.max-progress-bar.MaxProgressBar
+ :extends com.badlogic.gdx.scenes.scene2d.ui.Slider
+ :state state
+ :init init
+ :exposes-methods {setValue parentSetValue}
+ :constructors {[float float float boolean com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle float] [float float float boolean com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle]}
+ )
+(defn -init [min max step-size vertical style artificial-max]
+ [[min max step-size vertical style] artificial-max])
+
+(defn -setValue [this value]
+ (.parentSetValue this (min value (.state this))))
+
+(defn max-progress-bar
+ [min max step vertical? arg artificial-max]
+ (println min max step vertical? arg artificial-max)
+ (ActorEntity.
+ (advent.max-progress-bar.MaxProgressBar. (float min) (float max) (float step) vertical? arg (float artificial-max))))
+
+(defmacro max-progress-bar!
+ "Calls a single method on a `slider`."
+ [entity k & options]
+ `(u/call! ^advent.max-progress-bar.MaxProgressBar (u/get-obj ~entity :object) ~k ~@options))
diff --git a/desktop/src-common/advent/pathfind.clj b/desktop/src-common/advent/pathfind.clj
index ab212617..c0f0e2bb 100644
--- a/desktop/src-common/advent/pathfind.clj
+++ b/desktop/src-common/advent/pathfind.clj
@@ -1,5 +1,7 @@
(ns advent.pathfind
- (:require [play-clj.core :refer :all])
+ (:require [play-clj.core :refer :all]
+ [play-clj.utils :refer :all]
+ [clojure.tools.logging :as log])
(:import (java.lang Math)))
(def scale 2)
@@ -77,9 +79,10 @@
ty (long ty)]
(if (= 0 (nth (nth my-map tx) ty))
nil
- (let [cost-so-far ^java.util.HashMap (java.util.HashMap. {play-loc 0})
- came-from ^java.util.HashMap (java.util.HashMap.)
- fronteir ^java.util.PriorityQueue (java.util.PriorityQueue. (/ (* 320 240) scale) cost-comparator)]
+ (let [^java.util.HashMap cost-so-far (java.util.HashMap.)
+ _ (.put cost-so-far play-loc 0)
+ ^java.util.HashMap came-from (java.util.HashMap.)
+ ^java.util.PriorityQueue fronteir (java.util.PriorityQueue. (/ (* 320 240) scale) cost-comparator)]
(.offer fronteir [0 play-loc])
(loop [current-loc (.poll fronteir)]
(if (or (nil? current-loc)
@@ -119,18 +122,21 @@
(println path)))
(defn map-from-resource [filename]
+ (log/info "Loading collision from" filename)
(let [pm (pixmap filename)
black (color 0 0 0 255)
painful (color 255 0 0 255)
result (transient [])
scale (long scale)
- height (long (pixmap! pm :get-height))]
- (doseq [^long x (range (/ (pixmap! pm :get-width) scale))
- ^long y (range (/ height scale))
- :let [
- current-color (color (pixmap! pm :get-pixel (unchecked-multiply scale x) (unchecked-subtract height (unchecked-multiply scale y))))]]
- (conj! result (cond
- (color! current-color :equals black) 0
- (color! current-color :equals painful) 2
- :else 1)))
- (partition (/ (pixmap! pm :get-height) scale) (persistent! result) )))
+ height (long (pixmap! pm :get-height))
+ _ (doseq [^long x (range (/ (pixmap! pm :get-width) scale))
+ ^long y (range (/ height scale))
+ :let [current-color (color (pixmap! pm :get-pixel (unchecked-multiply scale x) (unchecked-subtract height (unchecked-multiply scale y))))]]
+ (conj! result (cond
+ (color! current-color :equals black) 0
+ (color! current-color :equals painful) 2
+ :else 1)))
+ result (partition (/ (pixmap! pm :get-height) scale) (persistent! result) )]
+ (.unload *asset-manager* filename)
+ (log/info "Finished loading collision from" filename)
+ result))
diff --git a/desktop/src-common/advent/saves.clj b/desktop/src-common/advent/saves.clj
index 0ce4f3de..fc03bca7 100644
--- a/desktop/src-common/advent/saves.clj
+++ b/desktop/src-common/advent/saves.clj
@@ -9,10 +9,35 @@
(def chapter-name
- {:chapter-1 "Part 1: Our Tale's Beginning"
- :chapter-2 "Part 2: To Be a Knight"
- :chapter-3 "Part 3: In the Slammer"
- :chapter-4 "Part 4: Tick the Ex-con"
- :chapter-5 "Part 5: Slingshot Stew"})
+ {:chapter-1 "Our Tale's Beginning"
+ :chapter-2 "To Be a Knight"
+ :chapter-3 "In the Slammer"
+ :chapter-4 "Tick the Ex-con"
+ :chapter-5 "Slingshot Stew"})
+
+(defn default-screenshot [state]
+ (let [answers {:inside-house "screenshots/inside-house.png"
+ :inside-stash "screenshots/inside-stash.png"
+ :outside-house {:day "screenshots/outside-house-day.png"
+ :night "screenshots/outside-house-night.png"}
+ :behind-house {:day "screenshots/behind-house-day.png"
+ :night "screenshots/behind-house-night.png"}
+ :cat-tree {:day "screenshots/cat-tree-day.png"
+ :night "screenshots/cat-tree-night.png"}
+ :inside-castle {:day "screenshots/inside-castle-day.png"
+ :night "screenshots/inside-castle-night.png"}
+ :space "screenshots/duel.png"
+ :held "screenshots/held.png"
+ :inside-cafeteria "screenshots/cafeteria.png"
+ :inside-antique "screenshots/inside-antique.png"
+ :inside-jail "screenshots/inside-jail.png"
+ :dream "screenshots/dream.png"
+ :castle-gate "screenshots/castle-gate.png"
+ :outside-jail {:day "screenshots/fountain-day.png"
+ :night "screenshots/fountain-night.png"}
+ :outside-castle {:day "screenshots/outside-castle-day.png"
+ :night "screenshots/outside-castle-night.png"}}]
+ (get-in answers [(:last-room state) (:time state)]
+ (get-in answers [(:last-room state)]))))
diff --git a/desktop/src-common/advent/screens/credits.clj b/desktop/src-common/advent/screens/credits.clj
index 5eb632ac..0c7a5d28 100644
--- a/desktop/src-common/advent/screens/credits.clj
+++ b/desktop/src-common/advent/screens/credits.clj
@@ -3,18 +3,19 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
- [clojure.pprint]
+
[advent.pathfind]
[advent.tween :as tween]
[advent.zone :as zone]
[advent.utils :as utils])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
- [com.badlogic.gdx.scenes.scene2d.utils Align]
+ [com.badlogic.gdx.utils Align]
[com.badlogic.gdx.utils.viewport FitViewport]
[com.badlogic.gdx Application Audio Files Game Gdx Graphics Input
InputMultiplexer InputProcessor Net Preferences Screen]))
+(println "loading " *ns*)
(defn center [e]
(assoc e :x (- (/ 1280 2) (/ (or (:width e) (.getWidth (:object e))) 2))))
@@ -134,12 +135,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,26 +151,27 @@
(defscreen credits
:on-show
- (fn [screen entities]
+ (fn [screen entities options]
(utils/setup-viewport screen 1280 960)
- (input! :set-cursor-image (utils/cursor "cursor.png" :main) 0 0)
- (let [font (bitmap-font "ego/font.fnt" )]
+ (graphics! :set-cursor (utils/cursor "cursor.png" :main))
+ (let [[screen atlas] (utils/acquire-atlas screen "packed/global.atlas")
+ font (bitmap-font "ego/font.fnt" )]
{:font font
- :bg (assoc (utils/get-texture "black.png")
+ :bg (assoc (utils/atlas->texture atlas "black")
:scale-x 80
:scale-y 80
:opacity 1.0
:origin-x 0
:origin-y 0)
- :fade (assoc (utils/get-texture "black.png")
+ :fade (assoc (utils/atlas->texture atlas "black")
:scale-x 80
:scale-y 80
:opacity 0.0
:origin-x 0
:origin-y 0)
- :pos (assoc (utils/get-texture "pos.png") :x 640 :y 700 :scale-x 1 :scale-y 1 :origin-x 145 :origin-y 0 :z 1 :opacity 0.0)
- :dbh (assoc (utils/get-texture "dbh.png") :x 640 :y 500 :scale-x 0.5 :scale-y 0.5 :origin-x 640 :origin-y 0 :z 1 :opacity 0.0)
+ :pos (assoc (utils/atlas->texture atlas "black") :x 640 :y 700 :scale-x 1 :scale-y 1 :origin-x 145 :origin-y 0 :z 1 :opacity 0.0)
+ :dbh (assoc (utils/atlas->texture atlas "black") :x 640 :y 500 :scale-x 0.5 :scale-y 0.5 :origin-x 640 :origin-y 0 :z 1 :opacity 0.0)
:remaining-messages (cond (= @saved-took? :died)
(conj credit-messages [nil
@@ -181,28 +186,28 @@
(conj credit-messages [nil
["" ""]]))
- #_#_:the-end (assoc (utils/get-texture "the-end.png") :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0)
+ #_#_:the-end (assoc (utils/atlas->texture atlas "the-end") :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0)
: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 viewport]} entities]
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height)))
diff --git a/desktop/src-common/advent/screens/dialogue.clj b/desktop/src-common/advent/screens/dialogue.clj
index 5b53f84e..df0e64e6 100644
--- a/desktop/src-common/advent/screens/dialogue.clj
+++ b/desktop/src-common/advent/screens/dialogue.clj
@@ -3,20 +3,21 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
- [clojure.pprint]
+ [clojure.tools.logging :as log]
[clojure.set :as set]
[advent.pathfind]
[advent.tween :as tween]
[advent.utils :as utils]
- [clojure.core.async :refer [put! ! >!! chan go thread take! alts!!]]
- #_[advent.screens.scene :as scene])
+ [clojure.core.async :refer [put! ! >!! chan go thread take! alts!!]])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
[com.badlogic.gdx.utils.viewport FitViewport]
- [com.badlogic.gdx.scenes.scene2d.utils Align]
+ [com.badlogic.gdx.utils Align]
[com.badlogic.gdx.math Vector3 Vector2 Matrix4]
[com.badlogic.gdx Screen]
+ [com.badlogic.gdx.scenes.scene2d.utils NinePatchDrawable ]
[play_clj.entities NinePatchEntity]))
+(println "loading " *ns*)
(defn ensure-on-screen [talk]
(let [margin-width (* 0.05 1280)
@@ -24,11 +25,11 @@
maximum-x (- 1280 margin-width)
label-width (label! talk :get-width)
label-right (+ (:x talk) label-width)
- y (min (- 900 (label! talk :get-height)) (:y talk))
- talk (assoc (cond (> label-right maximum-x) (assoc talk :x (- maximum-x label-width))
- (< (:x talk) minimum-x) (assoc talk :x minimum-x)
- :else talk)
- :y y)]
+ y (max 30 (min (- 900 (label! talk :get-height)) (:y talk)))
+ talk (cond-> talk
+ (> label-right maximum-x) (assoc :x (- maximum-x label-width))
+ (< (:x talk) minimum-x) (assoc :x minimum-x)
+ true (assoc :y y))]
(doto talk
(label! :set-x (:x talk))
(label! :set-y (:y talk)))))
@@ -41,49 +42,48 @@
(defscreen talking-screen
:on-show
- (fn [screen entities]
+ (fn [screen entities options]
(utils/setup-viewport screen 1280 960)
{})
:on-render
- (fn [{:keys [camera ^FitViewport viewport] :as screen} [entities]]
+ (fn [{:keys [camera ^FitViewport viewport] :as screen} entities options]
(.apply viewport)
-
+
(render! screen (vals entities))
entities)
:on-talk
- (fn [{:keys [create-talk target-id color text x y scale scene-viewport id] :as screen} [entities]]
- (let [font (bitmap-font "ego/font.fnt" )
- p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg"))
- _ (nine-patch! p :set-padding 25 25 5 15)
-
- bg (drawable :nine-patch (:object p))
- _ (bitmap-font! font :set-markup-enabled true)
+ (fn [screen entities {:keys [create-talk target-id color text x y scale scene-viewport id]}]
+ (let [font (doto (bitmap-font "ego/font.fnt" )
+ (bitmap-font! :set-use-integer-positions false))
+
tr (bitmap-font! font :get-region)
- scale (/ scale 2)
- scale (or (min (max scale 0.2) 0.25) 0.25)
- tx (.getTexture tr)
- _ (texture! tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
+ scale (* scale (/ utils/ui-scale 2))
+ scale (or (min
+ (max scale
+ (/ utils/ui-scale 5) 0.4)
+ (/ utils/ui-scale 4))
+ (/ utils/ui-scale 4))
+ _ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
style (style :label font color)
- #_#__ (set! (.background style) bg)
[source-x source-y] [x y]
-
+
[x y] (scene-world->talk-world scene-viewport [source-x
source-y])
talk (-> (label text style :set-font-scale scale :set-alignment Align/bottom)
(assoc :source-x source-x :source-y source-y)
- (doto
+ (doto
(label! :set-wrap true)
- (#(label! % :set-width (min 700 (+ 50 (label! % :get-width)))))
- ))
+ (#(label! % :set-width (min (* (+ 1 (* 0.5 (- utils/ui-scale 1))) 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)]
-
+
(assoc entities id talk)))
- :on-update-camera
- (fn [{:keys [scene-viewport scene-camera viewport] :as screen} [ entities]]
+ :on-update-camera
+ (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [scene-viewport scene-camera]}]
(reduce-kv (fn [entities id e]
(if (:id e)
(let [[x y] (scene-world->talk-world scene-viewport [(:source-x e)
@@ -97,11 +97,12 @@
entities))
:stop-talk
- (fn [{:keys [id] } [entities]]
+ (fn [screen entities {:keys [id]}]
+ (utils/remove-actor-from-stage entities (or id :fg-actions))
(dissoc entities (or id :fg-actions)))
-
- :on-resize (fn [{:keys [viewport width height]} entities]
+
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height)))
(def choice-height 40)
@@ -116,84 +117,119 @@
))
(defn style-label [e font mouse-pos]
- (label! e :set-style (style :label font (get-color e mouse-pos)))
+ (table! (:label e) :set-style (style :label font (get-color e mouse-pos)))
+
e)
+(defn mouse-moved [screen entities options]
+ (let [[x y] (utils/unproject screen options)
+ entities (assoc-in entities [:state :last-pos] [x y])
+ choice-count (dec (count entities))]
+ (when-let [table (get-in entities [:state :table])]
+ (doseq [e (get-in entities [:state :labels])]
+
+ (style-label e (get-in entities [:state :font]) [x y])))
+ entities))
+
(defscreen choice-screen
:on-show
- (fn [screen entities]
+ (fn [screen entities options]
(utils/setup-viewport screen 1280 960)
- (let [font (bitmap-font "ego/font.fnt" )
+ (let [font (bitmap-font "ego/font.fnt" )
tr (bitmap-font! font :get-region)
- scale 1
- tx (.getTexture tr)
- p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg"))
+ scale 1
+ p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg"))
_ (nine-patch! p :set-padding 25 25 5 15)
- _ (texture! tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)]
+ _ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear)]
{:state {:object nil
:callback nil
:choices []
:last-pos [0 0]
:font font
- :np (assoc p
- :x 5 :y 5 :width 1270)}}))
+ :bg p
+ }}))
+
+ :on-pinch
+ (fn [screen entities {:keys [initial-pointer-1 initial-pointer-2]}]
+ (assoc-in entities [:state :pinching] true))
:on-render
- (fn [{:keys [^FitViewport viewport] :as screen} [entities]]
+ (fn [{:keys [^FitViewport viewport] :as screen} entities options]
(.apply viewport)
- (when (seq (get-in entities [:state :choices]))
- (render! screen [(get-in entities [:state :np])])
- (render! screen (vals entities)))
+ (let [entities (update-in entities [:state :bg]
+ (fn [bg]
+ (assoc bg :x 0 :y 0 :width 1280 :height (get-in entities [:state :table :height] 0))
+ ))]
+ (when (seq (get-in entities [:state :choices]))
+ (render! screen [(get-in entities [:state :bg])])
+ (render! screen [(get-in entities [:state :table])])
+ #_(render! screen (vals entities))))
entities)
:on-present-choices
- (fn [{:keys [choices callback]} [entities]]
+ (fn [screen entities {:keys [choices callback]}]
(let [choice-count (count choices)
- font (get-in entities [:state :font])]
+ font (get-in entities [:state :font])
+ label-width (- 1280 (* utils/ui-scale 100))
+ labels (vec (->> (for [[[text] i] (map vector choices (range))]
+ (assoc
+ (label text (style :label font (color 0.6 1.0 1.0 1.0)) :set-wrap true :set-alignment Align/bottomLeft
+ :set-font-scale (* utils/ui-scale 0.25)
+ :set-width label-width)
+ :index i
+ :width label-width))
+ (map (fn [l] (assoc
+ (table [[l :width label-width
+ :pad-bottom (* utils/ui-scale 12)
+ :pad-top (* utils/ui-scale 12)]])
+ :label l
+ :index (:index l))))))]
(-> entities
- (into (for [[[text] i] (map vector choices (range))
- :let [e (label text (style :label font (color 0.6 1.0 1.0 1.0)) :set-alignment Align/bottomLeft)
- e (assoc e :height choice-height :x 30 :y (+ 25 (* choice-height (- choice-count i 1))) :index i)
- e (style-label e font (get-in entities [:state :last-pos]))]]
- [i (doto e
- (label! :set-x (:x e))
- (label! :set-y (:y e))
- (label! :set-height (:height e))
- (label! :set-font-scale 0.25))]))
+
(assoc-in [:state :choices] choices)
(assoc-in [:state :callback] callback)
- (assoc-in [:state :np :height] (* choice-height (inc choice-count))))))
+ (assoc-in [:state :labels] labels)
+ (assoc-in [:state :table]
+ (doto (-> labels
+ (vertical :align Align/bottomLeft :pad (* utils/ui-scale 20))
- :on-touch-up (fn [screen [entities]]
- (let [[x y] (utils/unproject screen)]
- (when (seq (get-in entities [:state :choices]))
- (when-let [choice (first (filter #(utils/intersects? % [x y]) (vals entities)))]
- ((get-in entities [:state :callback]) (:index choice))
- (-> entities
- (assoc-in [:state :callback] nil)
- (assoc-in [:state :choices] [])
- (select-keys [:state]))))))
+ (#(utils/add-actor-to-stage screen %))
+ (assoc :x 0 :y 0 :width 1240)
+ (#(assoc % :height (vertical! % :get-pref-height)))
+ ))))))
- :on-mouse-moved (fn [screen [entities]]
- (let [[x y] (utils/unproject screen)
- entities (assoc-in entities [:state :last-pos] [x y])
- choice-count (dec (count entities))]
- (doseq [e (vals entities)
- :when (:object e)]
- (style-label e (get-in entities [:state :font]) [x y]))
- entities))
-
- :on-resize (fn [{:keys [width height viewport]} entities]
+ :on-touch-up (fn [screen entities options]
+ (let [[x y] (utils/unproject screen options)]
+ (if (and (seq (get-in entities [:state :choices]))
+ (not (get-in entities [:state :pinching])))
+ (when-let [choice (first (filter #(utils/intersects? % [x y]) (get-in entities [:state :labels])))]
+ (utils/clear-stage screen)
+ ((get-in entities [:state :callback]) (:index choice))
+ (-> entities
+ (assoc-in [:state :callback] nil)
+ (assoc-in [:state :pinching] false)
+ (assoc-in [:state :choices] [])
+ (assoc-in [:state :labels] [])
+ (assoc-in [:state :table] nil)
+ (select-keys [:state])))
+
+ (assoc-in entities [:state :pinching] false))))
+
+ :on-mouse-moved mouse-moved
+ :on-touch-dragged mouse-moved
+ :on-touch-down mouse-moved
+
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height)))
(defscreen toast-screen
:on-show
- (fn [screen entities]
+ (fn [screen entities options]
(utils/setup-viewport screen 1280 960)
{})
:on-render
- (fn [{:keys [camera ^FitViewport viewport] :as screen} [entities]]
+ (fn [{:keys [camera ^FitViewport viewport] :as screen} entities options]
(.apply viewport)
(let [entities (utils/apply-tweens screen entities (:tweens entities))]
(when (:dialogue entities)
@@ -202,35 +238,157 @@
entities))
:on-toast
- (fn [{:keys [message] :as screen} [entities]]
- (let [font (bitmap-font "ego/font.fnt" )
- p (nine-patch {:region (:object (utils/get-texture "talk-bg-2.png")) :left 9 :top 9 :right 9 :bottom 9})
- _ (nine-patch! p :set-padding 25 25 5 15)
-
- bg (drawable :nine-patch (:object p))
- _ (bitmap-font! font :set-markup-enabled true)
+ (fn [screen entities {:keys [message]}]
+ (let [font (bitmap-font "ego/font.fnt" )
+
tr (bitmap-font! font :get-region)
-
- tx (.getTexture tr)
- _ (texture! tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
+
+ _ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
style (style :label font (color :red))
-
+
[x y] [(/ 1280 2) (/ 960 2)]
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)]
-
- (-> entities
+ #_#_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 [{:keys [target-id] } [entities]]
+ (fn [_ entities {:keys [target-id]}]
+ (utils/remove-actor-from-stage entities :dialogue)
(dissoc entities :dialogue))
-
- :on-resize (fn [{:keys [viewport width height]} entities]
+
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
+ (.update viewport width height)))
+
+
+(defscreen tooltip-screen
+ :on-show
+ (fn [screen entities options]
+ (let [screen (utils/setup-viewport screen 1280 960)]
+ (let [font (doto (bitmap-font "label-font.fnt" )
+ (bitmap-font! :set-use-integer-positions false))
+ tr (bitmap-font! font :get-region)
+ _ (.setFilter (.getTexture tr) Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
+ style (doto (style :label font (color :white))
+ (#(-> % .font .getData (.setScale (/ utils/ui-scale 4)))))]
+ {:label (as-> (label "" style) l
+ (do (label! l :set-alignment (if utils/mobile? Align/bottomLeft Align/center))
+ (label! l :set-font-scale (* utils/ui-scale 0.25))
+ l)
+ (assoc l :x 0 :y 0 :baseline 10000)
+ (utils/add-actor-to-stage screen l))
+ :all-icons (texture! (texture (pixmap "cursor.png")) :split 18 16)
+ :action-icon nil})))
+
+ :on-render
+ (fn [{:keys [camera ^FitViewport viewport] :as screen} entities options]
+ (.apply viewport)
+ (let [entities (utils/apply-tweens screen entities (:tweens entities))]
+ (render! screen [(:label entities) (or (:action-icon entities) (:item-icon entities) )])
+ entities))
+
+ :on-hover-start
+ (fn [screen {:keys [all-icons] :as entities} {:keys [hover-text x y scene-viewport cursor ]}]
+ (let [x (if utils/mobile? x (+ 8 x))
+ [scene-x scene-y] (scene-world->talk-world scene-viewport [x y])
+ depressed? (< 0.5 (- (or (:total-time screen) 0) (int (or (:total-time screen) 0))))
+ item-cursor (:cursor (first (:last cursor)))
+ action-cursor (utils/translate-depressed (first (:last cursor)) depressed?)]
+ (label! (get-in entities [:label]) :set-text hover-text)
+ (cond-> entities
+ true (assoc-in [:label :text] hover-text)
+
+ utils/mobile? (update-in [:label] assoc :x (* 52 4 utils/ui-scale) :y 12)
+
+ (and utils/mobile? (or item-cursor action-cursor)
+ (= :main action-cursor))
+ (assoc :action-icon nil)
+
+ item-cursor
+ (assoc :action-icon nil)
+
+ (and utils/mobile? action-cursor (not item-cursor) (not= :main action-cursor))
+ (assoc-in [:action-icon]
+ (assoc
+ ;; todo reflection here
+ (texture (aget all-icons 0 (.indexOf utils/+all-cursors+ (or item-cursor action-cursor))))
+ :x (* utils/ui-scale 32 4) :y (* utils/ui-scale 4)
+ :width (* 18 4 utils/ui-scale) :height (* 16 4 utils/ui-scale)))
+
+ (not utils/mobile?) (update-in [:label] assoc :x scene-x :y scene-y)
+
+ true (update-in [:label] ensure-on-screen))))
+
+ :on-select-item
+ (fn [screen {:keys [all-icons] :as entities} {:keys [selected-item upright? in-or-out hide-or-show notify]}]
+ (let [fade-tween (if (= :hide hide-or-show)
+ (tween/tween :appear-item screen [:item-icon :opacity] 1.0 0.0 0.5 :ease tween/ease-linear :finish (fn [entities] (reset! notify true) (dissoc entities :item-icon)))
+ (tween/tween :appear-item screen [:item-icon :opacity] 0.0 1.0 0.5 :ease tween/ease-linear :finish (fn [entities] (reset! notify true) entities)))
+
+ move-tween (condp = in-or-out
+ :far-out
+ (tween/tween :appear-item-y screen [:item-icon :x] (* utils/ui-scale 4 40) (* utils/ui-scale 4 45) 0.5 :ease tween/ease-linear)
+ :out
+ (tween/tween :appear-item-y screen [:item-icon :x] (* utils/ui-scale 4 35) (* utils/ui-scale 4 40) 0.5 :ease tween/ease-linear)
+
+ :in
+ (tween/tween :appear-item-y screen [:item-icon :x] (* utils/ui-scale 4 40) (* utils/ui-scale 4 35) 0.5 :ease tween/ease-linear)
+
+ :none
+ (tween/tween :appear-item-y screen [:item-icon :x] (* utils/ui-scale 4 40) (* utils/ui-scale 4 40) 0.5 :ease tween/ease-linear))]
+ (-> entities
+ (assoc :item-icon
+ (assoc (texture (aget all-icons 0 (.indexOf utils/+all-cursors+ (:cursor selected-item))))
+ :origin-x 8
+ :origin-y 0
+ :scale-x (* 4 utils/ui-scale)
+ :scale-y (* 4 utils/ui-scale)
+ :x (* utils/ui-scale 4 (condp = in-or-out
+ :in
+ 40
+ :out
+ 35
+ :none
+ 40
+ :far-out
+ 40))
+ :y 0
+ :baseline 9000
+ :opacity (if (= :hide hide-or-show) 1.0 0.0)
+ :item selected-item))
+ (assoc-in [:tweens :appear-item] fade-tween)
+
+ (assoc-in [:tweens :appear-item-y] move-tween))))
+
+ #_#_:on-update-camera
+ (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [scene-viewport scene-camera]}]
+ (reduce-kv (fn [entities id e]
+ (if (:id e)
+ (let [[x y] (scene-world->talk-world scene-viewport [(:source-x e)
+ (:source-y e)])]
+ (-> entities
+ (assoc-in [id :x] (- x (/ (label! e :get-width) 2)))
+ (assoc-in [id :y] y)
+ (update-in [id] ensure-on-screen)))
+ entities))
+ entities
+ entities))
+
+ #_#_:on-hover-end
+ (fn [screen entities {:keys [id]}]
+ (utils/remove-actor-from-stage entities (or id :fg-actions))
+ (dissoc entities (or id :fg-actions)))
+
+
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height)))
diff --git a/desktop/src-common/advent/screens/fade.clj b/desktop/src-common/advent/screens/fade.clj
index 2345107e..0392b335 100644
--- a/desktop/src-common/advent/screens/fade.clj
+++ b/desktop/src-common/advent/screens/fade.clj
@@ -3,40 +3,47 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
- [clojure.pprint]
+
[advent.pathfind]
[advent.zone :as zone]
[advent.utils :as utils])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
- [com.badlogic.gdx.scenes.scene2d.utils Align]
+ [com.badlogic.gdx.utils Align]
[com.badlogic.gdx Application Audio Files Game Gdx Graphics Input
- InputMultiplexer InputProcessor Net Preferences Screen]))
+ InputMultiplexer InputProcessor Net Preferences Screen]
+ [com.badlogic.gdx.utils.viewport FitViewport]))
+(println "loading " *ns*)
(defscreen fade-screen
:on-show
- (fn [screen entities]
- (utils/setup-viewport screen 320 240)
-
- {:fade (assoc (utils/get-texture "black.png")
- :scale-x 100
- :scale-y 100
- :x -1
- :y -1
- :opacity 0.0
- :origin-x 0
- :origin-y 0)})
+ (fn [screen entities options]
+ (let [[screen global-atlas] (utils/acquire-atlas screen "packed/global.atlas")]
+ (utils/setup-viewport screen 320 240)
+
+ {:fade (assoc (utils/atlas->texture global-atlas "black.png")
+ :scale-x 100
+ :scale-y 100
+ :x -1
+ :y -1
+ :opacity 1.0
+ :origin-x 0
+ :origin-y 0)}))
:on-render
- (fn [screen [entities]]
+ (fn [screen entities options]
(render! screen [(:fade entities)])
entities)
- :update-fade (fn [{:keys [opacity]} [entities]]
+ :on-hide
+ (fn [screen entities options]
+ (utils/release-resources screen))
+
+ :update-fade (fn [_ entities {:keys [opacity]}]
(assoc-in entities [:fade :opacity] opacity))
- :on-resize (fn [{:keys [width height viewport]} entities]
- (.update viewport width height)))
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
+ (.update ^FitViewport viewport width height)))
diff --git a/desktop/src-common/advent/screens/inventory.clj b/desktop/src-common/advent/screens/inventory.clj
index 7339bd3f..f70a51a1 100644
--- a/desktop/src-common/advent/screens/inventory.clj
+++ b/desktop/src-common/advent/screens/inventory.clj
@@ -4,145 +4,212 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
[clojure.tools.logging :as log]
- [clojure.pprint]
+
[advent.pathfind]
+ [advent.actions :as actions]
[advent.zone :as zone]
[advent.tween :as tween]
[advent.utils :as utils])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
[com.badlogic.gdx.utils.viewport FitViewport]
- [com.badlogic.gdx.scenes.scene2d.utils Align]
+ [com.badlogic.gdx.utils Align]
[com.badlogic.gdx Application Audio Files Game Gdx Graphics Input
InputMultiplexer InputProcessor Net Preferences Screen]))
+(println "loading " *ns*)
+
+(defn interactable? [entities]
+ (and (:shown? entities) (= 1.0 (:opacity entities))))
-(defn close [screen entities]
+(defn close [screen {:keys [selected-item] :as entities} script-started? dragged-out?]
(log/info "closing inventory")
- (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate)
+ (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate { :came-from-inventory? dragged-out?})
+ (screen! @(resolve 'advent.screens.scene/hud) :on-reactivate { :script-started? script-started? :item selected-item})
(-> entities
(assoc-in [:tweens :fade-out] (tween/tween :fade-out screen [:opacity] 1.0 0.0 0.2 :ease tween/ease-out-cubic
- :finish #(assoc % :shown? false)))))
+ :finish #(assoc % :shown? false :hovered-item nil :selected-item nil)))))
-(defn mouse-interact [screen [entities]]
- (let [[x y] (utils/unproject screen)
- selected-entity (first (filter #((:box %) x y) (:items entities)))]
- (if selected-entity
- (assoc entities :highlighted-item (:item selected-entity))
- (assoc entities :highlighted-item nil))))
-(defn left-click [screen entities]
- (let [{:keys [highlighted-item]} entities
+(defn mouse-down [screen entities options]
+ (when (interactable? entities)
+ (let [[x y] (utils/unproject screen options)
+ selected-entity (first (filter #((:box %) x y) (vals (:items entities))))]
+ (assoc entities :selected-item (:item selected-entity)
+ :down-time (:total-time screen)))))
+
+(defn mouse-outside-inventory? [[x y]]
+ (or (< x 140)
+ (> x 1140)
+ (< y 320)
+ (> y 880)))
+
+(defn mouse-drag [screen {:keys [selected-item] :as entities} options]
+ (when (interactable? entities)
+ (let [[x y] (utils/unproject screen options)
+ hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))]
+ (cond
+ (and selected-item (mouse-outside-inventory? [x y]))
+ (close screen entities false true)
+
+ selected-item
+ (-> entities
+ (assoc-in [:items selected-item :x] x)
+ (assoc-in [:items selected-item :y] y)
+ (assoc :dragged? true)
+ (assoc :hovered-item (:item hovered-entity)))
+ :else
+ (assoc entities :hovered-item (:item hovered-entity) :dragged? true)))))
+
+
+(defn mouse-move [screen entities options]
+ (let [[x y] (utils/unproject screen options)
+ hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))]
+ (assoc entities :hovered-item (:item hovered-entity))))
+
+(defn left-click [screen {:keys [selected-item hovered-item dragged?] :as entities} options]
+ (let [room-entities (-> @(resolve 'advent.screens.scene/scene)
+ :entities
+ deref)]
+
+ (log/info "chose inventory item" selected-item)
+ (println selected-item hovered-item dragged?)
+ (cond (not selected-item)
+ (close screen entities false false)
+
+ (and
+ (> (- (:total-time screen) (:down-time entities)) 0.5)
+ (= selected-item hovered-item)
+ dragged?)
+ (dissoc entities :selected-item :hovered-item :dragged?)
+
+ (and (or (not hovered-item) (= selected-item hovered-item)))
+ (do (screen! @(resolve 'advent.screens.scene/scene) :on-chose-item { :item selected-item})
+ (close screen entities false false))
+ :else
+ (when-let [interaction-script (or ((or (:scripts selected-item) (constantly nil)) (:value hovered-item))
+ (actions/get-script entities (actions/talk entities :ego "I'm not sure how those go together.")))]
+ (interaction-script room-entities)
+ (close screen entities true false)))))
+
+(defn right-click [screen {:keys [selected-item] :as entities} options]
+ (let [
room-entities (-> @(resolve 'advent.screens.scene/scene)
:entities
deref
- first)
- current-cursor (get-in room-entities [:cursor :current])]
-
- (log/info "chose inventory item" highlighted-item)
- (if highlighted-item
- (if (= :main current-cursor)
- (screen! @(resolve 'advent.screens.scene/scene) :on-chose-item :item highlighted-item)
- (when-let [interaction-script ((or (:scripts highlighted-item) (constantly nil)) (:value current-cursor))]
- (interaction-script room-entities)
- (close screen entities)))
- (close screen entities))))
-
-(defn right-click [screen entities]
- (let [{:keys [highlighted-item]} entities
- room-entities (-> @(resolve 'advent.screens.scene/scene)
- :entities
- deref
- first)
- current-cursor (get-in room-entities [:cursor :current])
+ )
ego (get-in room-entities [:room :entities :ego])]
- (when (and highlighted-item (= :main current-cursor))
- (((:get-script ego) highlighted-item [0 0]) room-entities)
- (close screen entities))))
+ (when selected-item
+ (((:get-script ego) selected-item [0 0]) room-entities)
+ (close screen entities true false))))
+
+(defn update-hovered-text [screen {:keys [hovered-text hovered-item selected-item] :as entities}]
+ (cond
+ (and hovered-item selected-item (not= hovered-item selected-item))
+ (label! (:hovered-text entities) :set-text (str "Use " (:name selected-item) " with " (:name hovered-item)))
+
+ hovered-item
+ (label! (:hovered-text entities) :set-text (:name hovered-item))
+
+ :else
+ (label! (:hovered-text entities) :set-text "")))
(defscreen inventory-screen
:on-show
- (fn [screen entities]
- (utils/setup-viewport screen 1280 960)
-
- (let [highlighted-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! highlighted-text :set-alignment Align/bottom)
- {: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")
+ (fn [screen entities options]
+ (let [[screen atlas] (utils/acquire-atlas screen "packed/global.atlas")
+ screen (utils/setup-viewport screen 1280 960)
+ hovered-text (assoc (label "" (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/atlas->texture atlas "inventory-overlay" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :opacity 0.0)
+ :fade (assoc (utils/atlas->texture atlas "black.png")
:scale-x 80
- :scale-y 80
+ :scale-y 80
:opacity 0.7
:origin-x 0
:origin-y 0)
:all-items (texture! (texture (pixmap "cursor.png")) :split 18 16)
:items []
:shown? false
- :highlighted-item nil
+ :hovered-item nil
:opacity 0.0
- :tweens {}
- :highlighted-text highlighted-text}))
+ :tweens {}
+ :hovered-text hovered-text}))
:on-render
- (fn [{:keys [^FitViewport viewport] :as screen} [entities]]
+ (fn [{:keys [^FitViewport viewport] :as screen} {:keys [shown? tweens] :as entities} options]
+
(.apply viewport)
- (let [
- entities (utils/apply-tweens screen entities (:tweens entities))
+ (let [entities (utils/apply-tweens screen entities tweens)
opacity (get-in entities [:opacity])
entities (-> entities
(assoc-in [:overlay :opacity] opacity)
(assoc-in [:fade :opacity] (* 0.6 opacity))
- (assoc-in [:highlighted-text :opacity] opacity)
- (update-in [:items] (fn [i]
- (map #(assoc % :opacity opacity) i))))]
-
- (when (:shown? entities)
- (doto (:highlighted-text entities)
+ (assoc-in [:hovered-text :opacity] opacity)
+ (update-in [:items] (fn [items]
+ (reduce-kv (fn [c k i]
+ (assoc c k (assoc i :opacity opacity)))
+
+ items items))))]
+
+ (when shown?
+ (doto (:hovered-text entities)
(label! :set-color (color 1 1 1 opacity)))
(render! screen [(:fade entities) (:overlay entities)])
- (render! screen (:items entities))
- (if-let [item (:highlighted-item entities)]
- (label! (:highlighted-text entities) :set-text (:name item))
- (label! (:highlighted-text entities) :set-text ""))
- (render! screen [(:highlighted-text entities)]))
+ (render! screen (vals (:items entities)))
+ (render! screen [(get-in entities [:items (:selected-item entities)])])
+ (update-hovered-text screen entities)
+
+ (render! screen [(:hovered-text entities)]))
entities))
- :show-screen (fn [{items :items :as screen} [entities]]
+ :show-screen (fn [screen entities {:keys [items]}]
(log/info "showing inventory")
- (if (:shown? entities)
- entities
-
+ (when-not (:shown? entities)
+
+ (label! (entities :hovered-text) :set-text "")
(-> entities
+ (assoc-in [:hovered-text :text] "")
(assoc :shown? true
:opacity 0.0
- :items (for [[item index] (map vector items (range))
- :let [row (int (/ index 8))
- column (mod index 8)
- base-x (* 79 4)
- base-y (* 180 4)
- x (+ base-x (* column (* 24 4)))
- y (- base-y (* row (* 24 4)))
- item-width 18
- offset-x (+ x (/ item-width 2))
- offset-y (+ y (/ item-width 2))
- padding (/ item-width 2)
- padding (* 4 padding)]]
- (assoc (texture (aget (:all-items entities) 0 (.indexOf utils/+all-cursors+ (:cursor item))))
- :x x :y y
- :scale-x 4
- :scale-y 4
- :origin-x 0
- :origin-y 0
- :item item
- :box (zone/box (- offset-x padding) (- offset-y padding) (+ offset-x item-width padding padding) (+ offset-y item-width padding padding)))))
+ :items (into {} (for [[item index] (map vector items (range))
+ :let [row (int (/ index (Math/floor (/ 8 utils/ui-scale))))
+ column (mod index (Math/floor (/ 8 utils/ui-scale)))
+ base-x (* 79 4)
+ base-y (* 180 4)
+ item-width (* utils/ui-scale 4 18)
+ padding (/ item-width 4)
+ item-height (* utils/ui-scale 4 16)
+ padding-height (/ item-height 4)
+ x (+ base-x (* column (+ padding item-width)))
+ y (- base-y (* row (+ padding item-width)))
+ offset-x (+ x (/ item-width 2))
+ offset-y (+ y (/ item-width 2))
+ padded-width (/ (+ item-width padding padding) 2)
+ padded-height (/ (+ item-height padding-height padding-height) 2)
+ #_#_padding (* 4 padding)]]
+ [item (assoc (texture (aget (:all-items entities) 0 (.indexOf utils/+all-cursors+ (:cursor item))))
+ :x (+ x (/ padding 2)) :y y
+ :scale-x (* utils/ui-scale 4)
+ :scale-y (* utils/ui-scale 4)
+ :origin-x 9
+ :origin-y 8
+ :item item
+ :box (zone/box (- x padded-width) (- y padded-height) (+ x padded-width) (+ y padded-height)))])))
(assoc-in [:tweens :fade-in] (tween/tween :fade-in screen [:opacity] 0.0 1.0 0.2 :ease tween/ease-out-cubic)))))
- :on-mouse-moved mouse-interact
- :on-touch-down mouse-interact
+ :on-mouse-moved mouse-move
+ :on-touch-dragged mouse-drag
+ :on-touch-down mouse-down
- :on-touch-up (fn [screen [entities]]
- (when (and (:shown? entities) (= 1.0 (:opacity entities)))
- (if (= (button-code :left) (:button screen))
- (left-click screen entities)
- (right-click screen entities))))
+ :on-touch-up (fn [screen entities options]
+ (when (interactable? entities)
+ (if (= (button-code :left) (:button options))
+ (left-click screen entities options)
+ (right-click screen entities options))))
+
+ :on-resize (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [width height]}]
+ (.update viewport width height true))
+ :on-hide (fn [screen entities options]
+ (utils/release-resources screen)))
- :on-resize (fn [screen entities]
- (.update (:viewport screen) (:width screen) (:height screen) true)))
diff --git a/desktop/src-common/advent/screens/items.clj b/desktop/src-common/advent/screens/items.clj
index 933850e8..1f38d133 100644
--- a/desktop/src-common/advent/screens/items.clj
+++ b/desktop/src-common/advent/screens/items.clj
@@ -1,62 +1,63 @@
(ns advent.screens.items
(:require [advent.actions :as actions]))
+(println "loading " *ns*)
(def make-cat-toy
(actions/get-script entities
- (actions/remove-item entities :stick)
- (actions/remove-item entities :wool)
+ (actions/remove-item entities :stick :quiet? true)
+ (actions/remove-item entities :wool :quiet? true)
(actions/give entities :cat-toy)
(actions/talk entities :ego "It makes a little cat toy!")))
(defn make-cream-of-mushroom [entities]
- (actions/remove-item entities :flask-1-with-mushrooms)
- (actions/remove-item entities :flask-1-with-milk)
- (actions/remove-item entities :mushrooms)
+ (actions/remove-item entities :flask-1-with-mushrooms :quiet? true)
+ (actions/remove-item entities :flask-1-with-milk :quiet? true)
+ (actions/remove-item entities :mushrooms :quiet? true)
(actions/give entities :flask-1-with-cream-of-mushroom)
(actions/talk entities :ego "It's just like cream of mushroom soup."))
(defn add-slobber []
(actions/get-script entities
- (actions/remove-item entities :flask-1-with-cream-of-mushroom)
- (actions/remove-item entities :slobber)
+ (actions/remove-item entities :flask-1-with-cream-of-mushroom :quiet? true)
+ (actions/remove-item entities :slobber :quiet? true)
(actions/give entities :flask-1-slobber)
(actions/talk entities :ego "I put the slobber in with the cream of mushroom.")))
(defn make-strength-potion []
(actions/get-script entities
- (actions/remove-item entities :flask-1-slobber)
- (actions/remove-item entities :mandrake)
+ (actions/remove-item entities :flask-1-slobber :quiet? true)
+ (actions/remove-item entities :mandrake :quiet? true)
(actions/give entities :flask-1-strength)
(actions/talk entities :ego "It's the completed strength potion!")
(actions/glad entities)))
(defn make-water-and-ash [entities]
- (actions/remove-item entities :flask-water)
- (actions/remove-item entities :ash)
+ (actions/remove-item entities :flask-water :quiet? true)
+ (actions/remove-item entities :ash :quiet? true)
(actions/give entities :flask-water-ash)
(actions/talk entities :ego "I added the ashes to the water."))
(defn make-water-and-flies [entities]
- (actions/remove-item entities :flask-water)
- (actions/remove-item entities :flies)
+ (actions/remove-item entities :flask-water :quiet? true)
+ (actions/remove-item entities :flies :quiet? true)
(actions/give entities :flask-water-flies)
(actions/talk entities :ego "I put those flies in the flask."))
(defn make-flies-ash [entities]
- (actions/remove-item entities :flask-water)
- (actions/remove-item entities :flask-water-ash)
- (actions/remove-item entities :flask-water-flies)
- (actions/remove-item entities :ash)
- (actions/remove-item entities :flies)
+ (actions/remove-item entities :flask-water :quiet? true)
+ (actions/remove-item entities :flask-water-ash :quiet? true)
+ (actions/remove-item entities :flask-water-flies :quiet? true)
+ (actions/remove-item entities :ash :quiet? true)
+ (actions/remove-item entities :flies :quiet? true)
(actions/give entities :flask-flies-ash)
(actions/talk entities :ego "Now it's got the fountain water, flies, and the ashes in it."))
(defn make-finished-component [entities]
(actions/talk entities :ego "I'll just mix this up.")
- (actions/remove-item entities :flask-flies-ash)
- (actions/remove-item entities :feather)
+ (actions/remove-item entities :flask-flies-ash :quiet? true)
+ (actions/remove-item entities :feather :quiet? true)
(actions/play-animation entities :ego :reach)
(actions/give entities :spell-component)
(actions/talk entities :ego "It looks like it's ready!"))
@@ -64,8 +65,8 @@
(defn add-mushrooms-to-flask []
(actions/get-script entities
(if (actions/has-item? entities :recipe)
- (do (actions/remove-item entities :flask-1)
- (actions/remove-item entities :mushrooms)
+ (do (actions/remove-item entities :flask-1 :quiet? true)
+ (actions/remove-item entities :mushrooms :quiet? true)
(actions/give entities :flask-1-with-mushrooms)
(actions/talk entities :ego "I'll just put a few of these in here."))
(actions/talk entities :ego "I don't know if I could get them back out."))))
diff --git a/desktop/src-common/advent/screens/rooms.clj b/desktop/src-common/advent/screens/rooms.clj
index 6b04de07..c36370e2 100644
--- a/desktop/src-common/advent/screens/rooms.clj
+++ b/desktop/src-common/advent/screens/rooms.clj
@@ -1,45 +1,72 @@
(ns advent.screens.rooms
- (:require [advent.zone :as zone])
+ (:require [advent.zone :as zone]
+ [advent.utils :as utils])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
[com.badlogic.gdx.utils.viewport FitViewport]
[com.badlogic.gdx.scenes.scene2d Actor Stage]
[java.lang Object]))
+(println "loading " *ns*)
-(defn make-entity [id entity]
+(defn make-entity [id {:keys [scripts script only-script] :as entity}]
(merge entity
{:id id
:mouse-in? (fn [entities x y]
- (let [{entity-x :x entity-y :y width :width scale-x :scale-x scale-y :scale-y origin-x :origin-x origin-y :origin-y height :height region :object} (get-in entities [:room :entities id])
+ (let [e (utils/get-entity entities id)]
+ (if-let [[bx1 by1 bx2 by2] (:box e)]
+ (zone/within bx1 by1 bx2 by2 x y)
+ (let [{^float entity-x :x ^float entity-y :y width :width scale-x :scale-x scale-y :scale-y origin-x :origin-x origin-y :origin-y height :height region :object} (-> entities :room :entities id)
+
+ width (or width (if (instance? TextureRegion region ) (.getRegionWidth ^TextureRegion region) 0))
+ height (or height (if (instance? TextureRegion region ) (.getRegionHeight ^TextureRegion region) 0))
+ entity-x (double (unchecked-add (float entity-x) (unchecked-multiply (float -1.0)
+ (unchecked-multiply (float (or origin-x 0))
+ (float (or scale-x 1))))))
+ entity-y (double (unchecked-add (float entity-y) (unchecked-multiply
+ (float -1.0)
+ (unchecked-multiply (float (or origin-y 0))
+ (float (or scale-y 1))))))]
- width (or width (if (instance? TextureRegion region ) (.getRegionWidth region) 0))
- height (or height (if (instance? TextureRegion region ) (.getRegionHeight region) 0))
- entity-x (- entity-x (* (or origin-x 0)
- (or scale-x 1)))
- entity-y (- entity-y (* (or origin-y 0)
- (or scale-y 1)))]
-
- ((zone/box entity-x entity-y
- (+ entity-x (* width (or scale-x 1)))
- (+ entity-y (* height (or scale-y 1)))) x y)))}
- (when (or (:scripts entity) (:script entity))
+ (zone/within entity-x entity-y
+ (unchecked-add (float entity-x) (unchecked-multiply (float width) (float (or scale-x 1))))
+ (unchecked-add (float entity-y) (unchecked-multiply (float height) (float (or scale-y 1))))
+ x y)))))}
+ (when (or script scripts only-script)
{:get-script (fn [cursor [x y]]
- (if (= :main cursor)
- (:script entity)
- (when-let [scripts (:scripts entity)]
- (or (scripts (:value cursor)) (scripts :default)))))})))
+ (cond only-script
+ only-script
+
+ (= :main cursor)
+ script
+
+ scripts
+ (or (scripts (:value cursor)) (scripts :default))
+
+ :else
+ nil)
+ )})))
(defn make [& {:keys [collision interactions entities] :as params}]
- (let [interactions-as-list (for [[id spec] interactions]
+ (let [interactions-as-list (for [[id {:keys [script scripts only-script box] :as spec}] interactions]
(merge spec
- (when (:box spec)
+ (when box
{:mouse-in? (fn [_ x y]
- ((apply zone/box (:box spec)) x y))})
- {:get-script (fn [cursor [x y]]
- (if (= :main cursor)
- (:script spec)
- (when-let [scripts (:scripts spec)]
- (or (scripts (:value cursor)) (scripts :default)))))
- :id id}))
+ (let [[bx1 by1 bx2 by2] box]
+ (zone/within bx1 by1 bx2 by2 x y)))})
+ (when (or script scripts only-script)
+ {:get-script (fn [cursor [x y]]
+ (cond only-script
+ only-script
+
+ (= :main cursor)
+ script
+
+ scripts
+ (or (scripts (:value cursor)) (scripts :default))
+
+ :else
+ nil)
+ )})
+ {:id id}))
entities (into {} (for [[id entity] entities]
[id (make-entity id entity)]))]
(merge params {:collision (advent.pathfind/map-from-resource collision)
diff --git a/desktop/src-common/advent/screens/rooms/behind_house.clj b/desktop/src-common/advent/screens/rooms/behind_house.clj
index 9e839d67..20b12dff 100644
--- a/desktop/src-common/advent/screens/rooms/behind_house.clj
+++ b/desktop/src-common/advent/screens/rooms/behind_house.clj
@@ -11,13 +11,14 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all])
)
+(println "loading behindhouse")
(defn make-night [entities]
(assoc-in entities [:room :entities :peeling :opacity] 0))
(defn make-left-dir [box]
{:box box
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(actions/walk-to entities :ego [122 140] :skip-type :end)
(actions/transition-background entities :outside-house [244 150])
@@ -28,9 +29,8 @@
(actions/update-state entities
(fn [state] (assoc state :safe-listen-count (inc (:safe-listen-count state 0))))))
-(defn make [screen]
- (rooms/make :music {:day :town-2 :night :night}
- :name "Behind house"
+(defn make [screen atlas global-atlas]
+ (rooms/make :name "Behind house"
:interactions
{:left-dir-1 (make-left-dir [0 48 20 240])
:left-dir-2 (make-left-dir [0 160 148 217])
@@ -42,6 +42,8 @@
entities
)}
:mushrooms {:box [247 59 269 76]
+ :label "Mushrooms"
+ :cursor :hand
:script (actions/get-script
entities
(if (actions/has-obtained? entities :mushrooms)
@@ -52,116 +54,122 @@
(actions/give entities :mushrooms)
(actions/talk entities :ego "Perfectly ripe mushrooms!"))))}
:window {:box [109 100 130 153]
+ :label "Window"
+ :cursor :look
:script (actions/get-script
entities
(actions/walk-to entities :ego [128 100] :face :left)
(cond
- (= :night (get-in @entities [:state :time]))
- (actions/do-dialogue entities :ego "The house is dark and empty.")
+ (= :night (get-in @entities [:state :time]))
+ (actions/do-dialogue entities :ego "The house is dark and empty.")
- (actions/has-obtained? entities :tune)
- (actions/do-dialogue entities
- :ego "Gandarf's just working on one of his spells.")
+ (actions/has-obtained? entities :tune)
+ (actions/do-dialogue entities
+ :ego "Gandarf's just working on one of his spells.")
- (get-in @entities [:state :peeked-in-window?])
- (actions/do-dialogue entities
- :ego "Gandarf is moving around in the corner of the room."
- :ego "I think he's opening his MagiSafe!"
- :ego "I'll need a better spying angle if I hope to crack the safe.")
+ (get-in @entities [:state :peeked-in-window?])
+ (actions/do-dialogue entities
+ :ego "Gandarf is moving around in the corner of the room."
+ :ego "I think he's opening his MagiSafe!"
+ :ego "I'll need a better spying angle if I hope to crack the safe.")
- :else
- (do
- (actions/do-dialogue entities
- :ego "I can see Gandarf moving around in the corner of the room."
- :ego "It's hard to make out from this angle.")
- (actions/update-state entities #(assoc % :peeked-in-window? true)))))}}
- :layers {:day [(assoc (utils/get-texture "behindhouse/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "behindhouse/house.png") :x 0 :y 0 :baseline 122)
- (assoc (utils/get-texture "behindhouse/brush.png") :x 0 :y 0 :baseline 240)
- (assoc (utils/get-texture "behindhouse/fgleft.png") :x -10 :y 0 :baseline 240 :parallax 1.5)
- (assoc (utils/get-texture "behindhouse/fg2.png") :x (- 320 122) :y 0 :baseline 240 :parallax 1.5)]
- :night [(assoc (utils/get-texture "behindhouse/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "behindhouse/house.png") :x 0 :y 0 :baseline 122)
- (assoc (utils/get-texture "behindhouse/brush.png") :x 0 :y 0 :baseline 240)
- (assoc (utils/get-texture "behindhouse/fgleft.png") :x -10 :y 0 :baseline 240 :parallax 1.5)
- (assoc (utils/get-texture "behindhouse/fg2.png") :x (- 320 122) :y 0 :baseline 240 :parallax 1.5)]}
- :entities {:stick (assoc (utils/get-texture "behindhouse/stick.png")
- :x 26 :y 80 :baseline 160
- :script (actions/get-script entities
- (actions/walk-to entities :ego [50 80])
- (actions/play-animation entities :ego :reach)
- (actions/remove-entity entities :stick)
- (actions/give entities :stick)
- (actions/talk entities :ego "This stick might be useful.")))
+ :else
+ (do
+ (actions/do-dialogue entities
+ :ego "I can see Gandarf moving around in the corner of the room."
+ :ego "It's hard to make out from this angle.")
+ (actions/update-state entities #(assoc % :peeked-in-window? true)))))}}
+ :layers {:day [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "house") :x 0 :y 0 :baseline 122)
+ (assoc (utils/atlas->texture atlas "brush") :x 0 :y 0 :baseline 240)
+ (assoc (utils/atlas->texture atlas "fgleft") :x -10 :y 0 :baseline 240 :parallax 1.5)
+ (assoc (utils/atlas->texture atlas "fg2") :x (- 320 122) :y 0 :baseline 240 :parallax 1.5)]
+ :night [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "house") :x 0 :y 0 :baseline 122)
+ (assoc (utils/atlas->texture atlas "brush") :x 0 :y 0 :baseline 240)
+ (assoc (utils/atlas->texture atlas "fgleft") :x -10 :y 0 :baseline 240 :parallax 1.5)
+ (assoc (utils/atlas->texture atlas "fg2") :x (- 320 122) :y 0 :baseline 240 :parallax 1.5)]}
+ :entities {:stick (assoc (utils/atlas->texture atlas "stick")
+ :x 26 :y 80 :baseline 160
+ :label "Stick"
+ :cursor :hand
+ :script (actions/get-script entities
+ (actions/walk-to entities :ego [50 80])
+ (actions/play-animation entities :ego :reach)
+ (actions/remove-entity entities :stick)
+ (actions/give entities :stick)
+ (actions/talk entities :ego "This stick might be useful.")))
- :peeling (assoc (utils/get-texture "behindhouse/house-cover.png")
- :x 60 :y 92 :baseline 148
- :script (actions/get-script entities
- (cond (= :night (get-in @entities [:state :time]))
- (actions/talk entities :ego "The house is empty right now.")
+ :peeling (assoc (utils/atlas->texture atlas "house-cover")
+ :x 60 :y 92 :baseline 148
+ :label "Crumbly wall"
+ :cursor :hand
+ :script (actions/get-script entities
+ (cond (= :night (get-in @entities [:state :time]))
+ (actions/talk entities :ego "The house is empty right now.")
- (and (get-in @entities [:state :opened-crack?])
- (= 0 (get-in @entities [:state :safe-listen-count] 0)))
+ (and (get-in @entities [:state :opened-crack?])
+ (= 0 (get-in @entities [:state :safe-listen-count] 0)))
- (do (actions/walk-to entities :ego [70 80])
- (actions/play-animation entities :ego :start-squat :stop? false)
- (actions/talk entities :ego "I can see Gandarf the wizard inside." :animate? false :stop? false)
- (actions/talk entities :ego "It looks like he's opening his MagiSafe." :animate? false :stop? false)
- (actions/play-safe entities false)
- (actions/talk entities :ego "So that's the code to his safe..." :animate? false :stop? false)
- (actions/play-animation entities :ego :end-squat)
- (actions/talk entities :ego "A lot of good it'll do me to know his password while he's still there.")
- (steam/set-achievement "SAFE_AND_SOUND")
- (increment-safe-listens entities))
+ (do (actions/walk-to entities :ego [70 80])
+ (actions/play-animation entities :ego :start-squat :stop? false)
+ (actions/talk entities :ego "I can see Gandarf the wizard inside." :animate? false :stop? false)
+ (actions/talk entities :ego "It looks like he's opening his MagiSafe." :animate? false :stop? false)
+ (actions/play-safe entities false)
+ (actions/talk entities :ego "So that's the code to his safe..." :animate? false :stop? false)
+ (actions/play-animation entities :ego :end-squat)
+ (actions/talk entities :ego "A lot of good it'll do me to know his password while he's still there.")
+ (steam/set-achievement "SAFE_AND_SOUND")
+ (increment-safe-listens entities))
- (and (get-in @entities [:state :opened-crack?])
- (= 1 (get-in @entities [:state :safe-listen-count] 0)))
+ (and (get-in @entities [:state :opened-crack?])
+ (= 1 (get-in @entities [:state :safe-listen-count] 0)))
- (do (actions/walk-to entities :ego [70 80])
- (actions/talk entities :ego "I'll give it another listen.")
- (actions/play-animation entities :ego :start-squat :stop? false)
- (actions/talk entities :ego "It looks like Gandarf's opening his MagiSafe." :animate? false :stop? false)
- (actions/play-safe entities false)
- (actions/play-animation entities :ego :end-squat)
- (actions/talk entities :ego "Ugh! Now I've got it stuck in my head!")
- (increment-safe-listens entities)
- (actions/give entities :tune))
+ (do (actions/walk-to entities :ego [70 80])
+ (actions/talk entities :ego "I'll give it another listen.")
+ (actions/play-animation entities :ego :start-squat :stop? false)
+ (actions/talk entities :ego "It looks like Gandarf's opening his MagiSafe." :animate? false :stop? false)
+ (actions/play-safe entities false)
+ (actions/play-animation entities :ego :end-squat)
+ (actions/talk entities :ego "Ugh! Now I've got it stuck in my head!")
+ (increment-safe-listens entities)
+ (actions/give entities :tune))
- (get-in @entities [:state :opened-crack?])
- (actions/talk entities :ego "I've got the tune stuck in my head already.")
+ (get-in @entities [:state :opened-crack?])
+ (actions/talk entities :ego "I've got the tune stuck in my head already.")
- :else
- (do (actions/walk-to entities :ego [80 80] :face :left)
- (actions/talk entities :ego "It looks like the wall is crumbling here.")
- (actions/play-animation entities :ego :reach)
- (actions/update-entity entities :peeling #(assoc % :opacity 0))
- (actions/update-state entities (fn [state] (assoc state :opened-crack? true))))))
- :scripts {:stick (actions/get-script entities
-
- (if (get-in @entities [:state :opened-crack?])
- (actions/talk entities :ego "I could shove the stick in that hole, but why?")
- (actions/do-dialogue entities
- :ego "It looks like that wall is crumbling."
- :ego "I can probably scratch it off with my hand.")))
- :sword (actions/get-script entities
-
- (actions/do-dialogue entities
- :ego "I should be careful with this sword."
- :ego "It's sharp!"))})
- :bird (utils/make-bird screen [[50 235] [80 220] [100 239] [180 235] [85 225]])
+ :else
+ (do (actions/walk-to entities :ego [80 80] :face :left)
+ (actions/talk entities :ego "It looks like the wall is crumbling here.")
+ (actions/play-animation entities :ego :reach)
+ (actions/update-entity entities :peeling #(assoc % :opacity 0))
+ (actions/update-state entities (fn [state] (assoc state :opened-crack? true))))))
+ :scripts {:stick (actions/get-script entities
+
+ (if (get-in @entities [:state :opened-crack?])
+ (actions/talk entities :ego "I could shove the stick in that hole, but why?")
+ (actions/do-dialogue entities
+ :ego "It looks like that wall is crumbling."
+ :ego "I can probably scratch it off with my hand.")))
+ :sword (actions/get-script entities
+
+ (actions/do-dialogue entities
+ :ego "I should be careful with this sword."
+ :ego "It's sharp!"))})
+ :bird (utils/make-bird screen global-atlas [[50 235] [80 220] [100 239] [180 235] [85 225]])
:outside-particles (common/make-outside-particles)}
:collision "behindhouse/collision.png"
:scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00)
:apply-state (fn [_ entities]
(utils/fast-forward-particle (get-in entities [:room :entities :outside-particles]))
(as-> entities entities
- (if (get-in entities [:state :opened-crack?])
- (assoc-in entities [:room :entities :peeling :opacity] 0)
- entities)
- (if (actions/has-obtained? entities :stick)
- (update-in entities [:room :entities] #(dissoc % :stick))
- entities)
- (if (= :night (get-in entities [:state :time]))
- (make-night entities)
- entities)))
+ (if (get-in entities [:state :opened-crack?])
+ (assoc-in entities [:room :entities :peeling :opacity] 0)
+ entities)
+ (if (actions/has-obtained? entities :stick)
+ (update-in entities [:room :entities] #(dissoc % :stick))
+ entities)
+ (if (= :night (get-in entities [:state :time]))
+ (make-night entities)
+ entities)))
:start-pos [172 122]))
diff --git a/desktop/src-common/advent/screens/rooms/castle_gate.clj b/desktop/src-common/advent/screens/rooms/castle_gate.clj
index e5a5dc63..2dac2f80 100644
--- a/desktop/src-common/advent/screens/rooms/castle_gate.clj
+++ b/desktop/src-common/advent/screens/rooms/castle_gate.clj
@@ -16,15 +16,18 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn make-night [entities]
entities)
-(defn make-coin-flip [screen]
- (let [coin-flip (utils/make-anim "castle-gate/coinflip.png" [10 10] 0.05 (range 5))]
+(defn make-coin-flip [screen atlas]
+ (let [coin-flip (utils/make-anim atlas "coinflip" [10 10] 0.05 (range 5))]
(assoc (animation->texture screen coin-flip)
:x 212 :y 114 :baseline 151
:opacity 0.0
+ :label "Coin"
+ :cursor :hand
:origin-x 5
:origin-y 5
:night-profile :none
@@ -38,10 +41,12 @@
:walk coin-flip
:coinflip coin-flip)))
-(defn make-goon-1 [screen]
- (let [stand (utils/make-anim "castle-gate/goon-1.png" [13 33] 0.21 [0 0 0 0 0 0 0 0 0 1])]
+(defn make-goon-1 [screen atlas]
+ (let [stand (utils/make-anim atlas "goon-1" [13 33] 0.21 [0 0 0 0 0 0 0 0 0 1])]
(assoc (animation->texture screen stand)
:x 244 :y 102 :baseline 138
+ :label "Goon"
+ :cursor :talk
:scale-x 1.4
:scale-y 1.4
:night-profile :sprite
@@ -49,18 +54,21 @@
:anim-start 0
:stand stand)))
-(defn make-goon-2 [screen]
- (let [stand (utils/make-anim "castle-gate/goon-2.png" [12 32] 0.175 [0 0 0 0 0 0 0 0 0 0 0 0 0 1])
- talk (utils/make-anim "castle-gate/goon-2-talk.png" [12 32] 0.175 (range 2))
- flip (utils/make-anim "castle-gate/goon-2-flip.png" [12 32] 0.05 [1 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ])
- search (utils/make-anim "castle-gate/goon-2-search.png" [24 32] 0.3 [0 1 2 3 2 3 2 1 4 5 6 5 6 7 6 7 6 7 6 1 0])
- walk (utils/flip (utils/make-anim "castle-gate/goon-2-walk.png" [24 34] 0.075 (range 7)))]
+(defn make-goon-2 [screen atlas]
+ (let [
+ stand (utils/make-anim atlas "goon-2" [12 32] 0.175 [0 0 0 0 0 0 0 0 0 0 0 0 0 1])
+ talk (utils/make-anim atlas "goon-2-talk" [12 32] 0.175 (range 2))
+ flip (utils/make-anim atlas "goon-2-flip" [12 32] 0.05 [1 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ])
+ search (utils/make-anim atlas "goon-2-search" [24 32] 0.3 [0 1 2 3 2 3 2 1 4 5 6 5 6 7 6 7 6 7 6 1 0])
+ walk (utils/flip (utils/make-anim atlas "goon-2-walk" [24 34] 0.075 (range 7)))]
(assoc (animation->texture screen stand)
:x 214 :y 102 :baseline 151
:scale-x 1.4
:scale-y 1.4
:origin-x 6
:origin-y 0
+ :label "Bubba"
+ :cursor :talk
:anim stand
:talk talk
:flip flip
@@ -91,7 +99,7 @@
(assoc-in [:room :entities :coin-flip :opacity] 1.0))))
(actions/walk-straight-to entities :coin-flip [212 90] :update-baseline? false :speed 3.0)
- (screen! dialogue/talking-screen :stop-talk)
+ (screen! dialogue/talking-screen :stop-talk {})
(actions/do-stop entities :ego)
(actions/walk-straight-to entities :coin-flip [210 105] :update-baseline? false :speed 1.0)
@@ -127,6 +135,7 @@
(actions/walk-to entities :ego [245 90] :skip-type :end))
(defn flip-coin [screen entities]
+ (println "here")
(if (and (= 0 (rand-int 2))
(not (get-in entities [:state :has-dropped-coin?]))
(not (get-in entities [:state :bubba-gone?]))
@@ -182,16 +191,18 @@
(defn make-note []
{:box [97 102 111 132]
+ :label "Note"
+ :cursor :look
:script (actions/get-script entities
(look-at-note entities))
:scripts {:charcoal (actions/get-script entities
(sign-note entities))}})
-(defn make [screen]
- (let [throw-walkie (utils/make-anim-seq "castle-gate/throw-walkie" [205 136] 0.1 (flatten [(repeat 55 0) (range 9) (repeat 55 8)]))
- walkie-visible (animation 1.0 [(utils/get-texture "castle-gate/throw-walkie-9.png")])
- walkie-invisible (animation 1.0 [(utils/get-texture "castle-gate/throw-walkie-1.png")])]
- (rooms/make :music {:day :town-2 :night :night}
+(defn make [screen atlas global-atlas]
+ (let [throw-walkie (utils/make-anim-seq atlas "throw-walkie" [205 136] 0.1 (flatten [(repeat 55 0) (range 9) (repeat 55 8)]))
+ walkie-visible (animation 1.0 [(utils/atlas->texture atlas "throw-walkie" 8)])
+ walkie-invisible (animation 1.0 [(utils/atlas->texture atlas "throw-walkie" 0)])]
+ (rooms/make
:name "Castle gate"
:timers {:taunt [1.0 6.0 flip-coin]}
:interactions {:right-dir {:box [280 40 320 83]
@@ -207,6 +218,8 @@
:cursor :left}
:window {:box [192 157 215 215]
+ :label "Window"
+ :cursor :look
:script (actions/get-script entities
(actions/talk entities :ego "That's a big window!"))
:scripts {:walkie-talkies (actions/get-script entities
@@ -223,15 +236,15 @@
(actions/walk-straight-to entities :ego [285 71]))}}
:note (make-note)}
- :layers {:day [(assoc (utils/get-texture "castle-gate/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "castle-gate/overlay.png") :x 0 :y 0 :baseline 240)]
- :night [(assoc (utils/get-texture "castle-gate/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "castle-gate/overlay.png") :x 0 :y 0 :baseline 240)]}
- :entities {:frankie (common/make-frankie screen)
- :goon-1 (make-goon-1 screen)
- :goon-2 (make-goon-2 screen)
+ :layers {:day [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "overlay") :x 0 :y 0 :baseline 240)]
+ :night [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "overlay") :x 0 :y 0 :baseline 240)]}
+ :entities {:frankie (common/make-frankie screen global-atlas)
+ :goon-1 (make-goon-1 screen atlas)
+ :goon-2 (make-goon-2 screen atlas)
:outside-particles (common/make-outside-particles)
- :coin-flip (make-coin-flip screen)
+ :coin-flip (make-coin-flip screen atlas)
}
:walkie-talkies (rooms/make-entity :walkie-talkies
(assoc (animation->texture screen walkie-visible)
@@ -260,8 +273,7 @@
(if (and (not (actions/has-obtained? entities :money))
(get-in entities [:state :has-dropped-coin?]))
- (do
- (update-in entities [:room :entities :coin-flip] assoc :x 185 :y 44 :opacity 1.0))
+ (do (update-in entities [:room :entities :coin-flip] assoc :x 185 :y 44 :opacity 1.0))
entities)
(if (actions/has-obtained? entities :money)
(update-in entities [:room :entities] dissoc :coin-flip)
diff --git a/desktop/src-common/advent/screens/rooms/cat_tree.clj b/desktop/src-common/advent/screens/rooms/cat_tree.clj
index 5a00c1df..168a9dc7 100644
--- a/desktop/src-common/advent/screens/rooms/cat_tree.clj
+++ b/desktop/src-common/advent/screens/rooms/cat_tree.clj
@@ -11,6 +11,9 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+
+(println "loading " *ns*)
+
(defn get-down [entities & break]
(actions/walk-straight-to entities :ego [151 50] :update-baseline? false :face :left)
@@ -244,6 +247,8 @@
:ego "Thanks, I guess."))
(defn make-ladder-area [box]
{:box box
+ :cursor :hand
+ :label "Tree"
:script (actions/get-script entities
(actions/walk-to entities :ego [144 58] )
(actions/talk entities :ego "Maybe I can climb it!")
@@ -260,57 +265,58 @@
(actions/walk-straight-to entities :ego [140 85] :face :right :update-baseline? false)
(actions/add-entity entities :blank (get-in @entities [:room :blank])))}})
-(defn make [screen]
- (let [cat-stand-sheet (texture! (utils/get-texture "cat-tree/cat-stand.png") :split 22 10)
+(defn make [screen atlas global-atlas]
+ (let [cat-stand-sheet (texture! (utils/atlas->texture atlas "cat-stand") :split 22 10)
cat-stand (animation 0.15 (for [i (flatten [(repeat 10 0) 1 1 (repeat 10 0) 2 3 4 3 0 0 2 3 4 3 (repeat 10 0) 1 1 (repeat 10 0) 5 5 6 6 7 (repeat 10 [7 8]) 6 5 0])]
(aget cat-stand-sheet 0 i)))
- cat-walk (animation 0.2 [(utils/get-texture "cat-tree/pounce.png")])
- destroy-ladder (utils/make-anim "cat-tree/destroy-ladder.png" [29 38] 0.1 (range 18))
- ladder-entity (assoc (utils/get-texture "inside-cafeteria/ladder.png") :x 130 :y 60 :baseline 162
+ cat-walk (animation 0.2 [(utils/atlas->texture atlas "pounce")])
+ destroy-ladder (utils/make-anim atlas "destroy-ladder" [29 38] 0.1 (range 18))
+ ladder-entity (assoc (utils/atlas->texture atlas "ladder") :x 130 :y 60 :baseline 162
:origin-x 0
:destroy-ladder destroy-ladder
:ladder-break-sound (utils/load-sound "cat-tree/ladder-break.ogg")
:anim-sound-frames {destroy-ladder {4 [:ladder-break-sound 0.6]}})
- grandma-stand (utils/make-anim "cat-tree/grandma.png" [25 36] 0.2 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1])
- grandma-squat-1 (utils/make-anim "cat-tree/grandma.png" [25 36] 0.2 [3 4 5 5 5 5 5])
- grandma-squat-2 (utils/make-anim "cat-tree/grandma.png" [25 36] 0.2 [5 5 4 3])
- grandma-talk (utils/make-anim "cat-tree/grandma.png" [25 36] 0.2 [0 2 0 2 0 2 0 2 0 2 0 1 0 2 0 0])
- grandma-kiss (utils/make-anim "cat-tree/grandma.png" [25 36] 0.2 [0 8 9 10 9 10 9 10 9 8 0])
- grandma-cry (utils/make-anim-seq "cat-tree/grandma-cry" [58 40] 0.15 (flatten [(range 20) 0 0 0 0 0 0 0 0 0]))
- owl-stand (utils/make-anim "cat-tree/owl.png" [21 30] 0.2 [0 0 0 0 0 0 0 2])
- owl-talk (utils/make-anim "cat-tree/owl.png" [21 30] 0.2 [1 0 1 0 1 0 0 0 2 0])
- owl-puke (utils/make-anim "cat-tree/owl.png" [21 30] 0.10 [0 0 2 2 3 2 2 3 3 2 3 3 3 4 5 6 7 4 4 3 3 2 2 2 2 2])
- owl-eye (utils/make-anim-seq "cat-tree/eye" [44 48] 0.10 [0 0 1 1 2 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 3 4 4 4 3 4 4 4 5 6 7 8 9 9 9 9 9 9 9 9 9 10 11 12 12 11 10 9 9 9 9 9 9 9 9 10 11 12 12 12 11 10 9 9 9 9 9 8 7 6 5])
+ grandma-stand (utils/make-anim atlas "grandma" [25 36] 0.2 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1])
+ grandma-squat-1 (utils/make-anim atlas "grandma" [25 36] 0.2 [3 4 5 5 5 5 5])
+ grandma-squat-2 (utils/make-anim atlas "grandma" [25 36] 0.2 [5 5 4 3])
+ grandma-talk (utils/make-anim atlas "grandma" [25 36] 0.2 [0 2 0 2 0 2 0 2 0 2 0 1 0 2 0 0])
+ grandma-kiss (utils/make-anim atlas "grandma" [25 36] 0.2 [0 8 9 10 9 10 9 10 9 8 0])
+ grandma-cry (utils/make-anim-seq atlas "grandma-cry" [58 40] 0.15 (flatten [(range 20) 0 0 0 0 0 0 0 0 0]))
+ owl-stand (utils/make-anim atlas "owl" [21 30] 0.2 [0 0 0 0 0 0 0 2])
+ owl-talk (utils/make-anim atlas "owl" [21 30] 0.2 [1 0 1 0 1 0 0 0 2 0])
+ owl-puke (utils/make-anim atlas "owl" [21 30] 0.10 [0 0 2 2 3 2 2 3 3 2 3 3 3 4 5 6 7 4 4 3 3 2 2 2 2 2])
+ owl-eye (utils/make-anim-seq atlas "eye" [44 48] 0.10 [0 0 1 1 2 2 2 2 2 2 2 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 3 4 4 4 3 4 4 4 5 6 7 8 9 9 9 9 9 9 9 9 9 10 11 12 12 11 10 9 9 9 9 9 9 9 9 10 11 12 12 12 11 10 9 9 9 9 9 8 7 6 5])
puke (particle-effect "particles/puke")]
- (rooms/make :music {:day :town-2 :night :night}
- :name "Tree"
+ (rooms/make :name "Tree"
:sounds {:cat (utils/load-sound "cat-tree/cat.ogg")
:kiss (utils/load-sound "cat-tree/kiss.ogg")}
:ladder ladder-entity
:blank (rooms/make-entity :blank
{:object nil :x 0 :y 0 :width 320 :height 240 :baseline 240
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(when (get-in @entities [:room :entities :ladder])
(actions/talk entities :ego "I'll get down.")
(get-down entities)))})
:interactions
{:down-dir {:box [150 0 270 20]
- :script (actions/get-script entities
- (if (get-in @entities [:room :entities :ladder])
- (do
- (actions/talk entities :ego "I'll get down.")
- (get-down entities)))
-
- (actions/walk-to entities :ego [200 10] :skip-type :end :stop? false)
- (actions/walk-straight-to entities :ego [223 -51])
- (actions/transition-background entities :outside-house [137 204])
- (actions/walk-to entities :ego [158 110] :skip-type :end))
+ :only-script (actions/get-script entities
+ (if (get-in @entities [:room :entities :ladder])
+ (do
+ (actions/talk entities :ego "I'll get down.")
+ (get-down entities)))
+
+ (actions/walk-to entities :ego [200 10] :skip-type :end :stop? false)
+ (actions/walk-straight-to entities :ego [223 -51])
+ (actions/transition-background entities :outside-house [137 204])
+ (actions/walk-to entities :ego [158 110] :skip-type :end))
:cursor :down}
:ladder-area-1 (make-ladder-area [123 100 167 199])
:ladder-area-2 (make-ladder-area [87 151 227 212])
:ladder-area-3 (make-ladder-area [133 69 205 92])
:rock {:box [62 83 101 103]
+ :cursor :hand
+ :label "Suspicous looking rock"
:script (actions/get-script entities
(when (and (actions/has-obtained? entities :note-1)
(not (actions/has-obtained? entities :walkie-talkies)))
@@ -330,6 +336,8 @@
(actions/talk entities :ego "Tin cans connected with string?")
(actions/do-dialogue entities :ego "I wonder what all of these magic devices do.")))}
:grass {:box [26 105 60 160]
+ :cursor :hand
+ :label "Grass"
:script (actions/get-script entities
(if (not (actions/has-obtained? entities :grass))
(do
@@ -340,6 +348,8 @@
:ego "It's a high protein variety."))
(actions/talk entities :ego "I don't really need any more grass.")))}
:grandma {:box [109 33 132 98]
+ :cursor :talk
+ :label "Damsel"
:script (actions/get-script entities (do-grandma-dialogue entities))
:scripts #(condp = %
:kiss
@@ -350,71 +360,73 @@
(actions/do-dialogue entities :grandma "No thank you, handsome.")
(if (get-in @entities [:room :entities :ladder])
(actions/do-stop entities :ego :face :right))))
-}}
- :layers {:day [(assoc (utils/get-texture "cat-tree/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "cat-tree/tree-and-rock.png") :x 0 :y 0 :baseline 161)
- (assoc (utils/get-texture "cat-tree/brush-l.png") :x -5 :y -5 :parallax 1.3 :baseline 240)
- (assoc (utils/get-texture "cat-tree/tree-r.png") :x 270 :y 0 :scale-x 1.1 :scale-y 1.1 :parallax 1.5 :baseline 240)]
- :night [(assoc (utils/get-texture "cat-tree/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "cat-tree/tree-and-rock.png") :x 0 :y 0 :baseline 161)
- (assoc (utils/get-texture "cat-tree/brush-l.png") :x -5 :y -5 :parallax 1.3 :baseline 240)
- (assoc (utils/get-texture "cat-tree/tree-r.png") :x 270 :y 0 :scale-x 1.1 :scale-y 1.1 :parallax 1.5 :baseline 240)]}
+ }}
+ :layers {:day [(assoc (utils/atlas->texture atlas "background.png") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "tree-and-rock.png") :x 0 :y 0 :baseline 161)
+ (assoc (utils/atlas->texture atlas "brush-l.png") :x -5 :y -5 :parallax 1.3 :baseline 240)
+ (assoc (utils/atlas->texture atlas "tree-r.png") :x 270 :y 0 :scale-x 1.1 :scale-y 1.1 :parallax 1.5 :baseline 240)]
+ :night [(assoc (utils/atlas->texture atlas "background.png") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "tree-and-rock.png") :x 0 :y 0 :baseline 161)
+ (assoc (utils/atlas->texture atlas "brush-l.png") :x -5 :y -5 :parallax 1.3 :baseline 240)
+ (assoc (utils/atlas->texture atlas "tree-r.png") :x 270 :y 0 :scale-x 1.1 :scale-y 1.1 :parallax 1.5 :baseline 240)]}
:entities {
:outside-particles (common/make-outside-particles)
:cat (actions/start-animation screen
- (assoc (animation->texture screen cat-stand)
- :x 184 :y 173 :baseline 1000
- :walk cat-walk
- :stand cat-stand
- :script (actions/get-script entities
- (actions/talk entities :ego "Here kitty, kitty, kitty.")
- (actions/talk entities :ego "Kitty's so bored, he doesn't even notice me."))
- :scripts {:cat-toy (actions/get-script entities
- (actions/play-animation entities :ego :cat-toy)
- (if (get-in @entities [:room :entities :ladder])
- (do (actions/talk entities :ego "I think he's going for it!")
- (actions/play-animation entities :ego :cat-toy-first-half :stop? false)
- (actions/play-sound entities :cat 0.5)
- (actions/walk-straight-to entities :cat [138 40] :update-baseline? false :speed 3)
- (actions/play-animation entities :ego :cat-toy-last-half)
- (actions/play-animation entities :grandma :squat-1 :stop? false)
- (actions/remove-entity entities :cat)
- (actions/play-animation entities :grandma :squat-2)
- (actions/do-dialogue entities :grandma "Thank you for rescuing my furry friend, young man!")
- (get-down entities true)
- (actions/walk-straight-to entities :ego [165 45] :face :left)
- (actions/do-dialogue entities
- :ego "It's no big deal."
- :grandma "You won't go unrewarded!"
- :grandma "Come here, young man.")
- (actions/walk-straight-to entities :ego [133 35])
- (actions/talk entities :grandma "For your impressive display of courage and bravery, I give you this. ")
+ (assoc (animation->texture screen cat-stand)
+ :x 184 :y 173 :baseline 1000
+ :label "Smuffle Wuffles"
+ :cursor :talk
+ :walk cat-walk
+ :stand cat-stand
+ :script (actions/get-script entities
+ (actions/talk entities :ego "Here kitty, kitty, kitty.")
+ (actions/talk entities :ego "Kitty's so bored, he doesn't even notice me."))
+ :scripts {:cat-toy (actions/get-script entities
+ (actions/play-animation entities :ego :cat-toy)
+ (if (get-in @entities [:room :entities :ladder])
+ (do (actions/talk entities :ego "I think he's going for it!")
+ (actions/play-animation entities :ego :cat-toy-first-half :stop? false)
+ (actions/play-sound entities :cat 0.5)
+ (actions/walk-straight-to entities :cat [138 40] :update-baseline? false :speed 3)
+ (actions/play-animation entities :ego :cat-toy-last-half)
+ (actions/play-animation entities :grandma :squat-1 :stop? false)
+ (actions/remove-entity entities :cat)
+ (actions/play-animation entities :grandma :squat-2)
+ (actions/do-dialogue entities :grandma "Thank you for rescuing my furry friend, young man!")
+ (get-down entities true)
+ (actions/walk-straight-to entities :ego [165 45] :face :left)
+ (actions/do-dialogue entities
+ :ego "It's no big deal."
+ :grandma "You won't go unrewarded!"
+ :grandma "Come here, young man.")
+ (actions/walk-straight-to entities :ego [133 35])
+ (actions/talk entities :grandma "For your impressive display of courage and bravery, I give you this. ")
(actions/play-sound entities :kiss 0.7)
- (actions/play-animation entities :grandma :kiss)
- (actions/play-animation entities :ego :get-sick :stop? false)
- (actions/walk-straight-to entities :ego [165 45])
- (actions/do-dialogue entities :ego
- "Ugh! Gross!"
- :ego "What's this?")
- (actions/give entities :kiss)
- (actions/do-dialogue entities :ego "A kiss for an inventory item?"
- :ego "Sounds like the game designer was running out of good ideas.")
- (steam/set-achievement "KITTY_KISS"))
- (actions/talk entities :ego "I can't get his attention from way down here.")))
- :stick (actions/get-script entities
- (if (get-in @entities [:room :entities :ladder])
- (do
- (actions/play-animation entities :ego :poke)
- (actions/do-dialogue entities
- :ego "He's still too far for me to poke him."
- :ego "Maybe I can encourage him to come down on his own."))
- (do
- (actions/walk-to entities :ego [210 58] :face :right)
- (actions/play-animation entities :ego :poke)
- (actions/talk entities :ego "I can't poke him from way down here."))))
- :wool (actions/get-script entities (actions/talk entities :ego "I don't think the cat would notice the wool from all the way up there."))
- :default (actions/get-script entities (actions/talk entities :ego "Kitty seems disinterested in it."))})
- cat-stand)
+ (actions/play-animation entities :grandma :kiss)
+ (actions/play-animation entities :ego :get-sick :stop? false)
+ (actions/walk-straight-to entities :ego [165 45])
+ (actions/do-dialogue entities :ego
+ "Ugh! Gross!"
+ :ego "What's this?")
+ (actions/give entities :kiss)
+ (actions/do-dialogue entities :ego "A kiss for an inventory item?"
+ :ego "Sounds like the game designer was running out of good ideas.")
+ (steam/set-achievement "KITTY_KISS"))
+ (actions/talk entities :ego "I can't get his attention from way down here.")))
+ :stick (actions/get-script entities
+ (if (get-in @entities [:room :entities :ladder])
+ (do
+ (actions/play-animation entities :ego :poke)
+ (actions/do-dialogue entities
+ :ego "He's still too far for me to poke him."
+ :ego "Maybe I can encourage him to come down on his own."))
+ (do
+ (actions/walk-to entities :ego [210 58] :face :right)
+ (actions/play-animation entities :ego :poke)
+ (actions/talk entities :ego "I can't poke him from way down here."))))
+ :wool (actions/get-script entities (actions/talk entities :ego "I don't think the cat would notice the wool from all the way up there."))
+ :default (actions/get-script entities (actions/talk entities :ego "Kitty seems disinterested in it."))})
+ cat-stand)
:grandma (let [gma (assoc (animation->texture screen grandma-stand)
:x 130 :y 37 :baseline 200
:anim grandma-stand
@@ -441,10 +453,12 @@
:x 194 :y 188 :baseline 241)}
:owl (rooms/make-entity :owl (assoc (animation->texture screen owl-stand)
:x 187 :y 172 :baseline 241
+ :label "Owl"
:stand owl-stand
:talk owl-talk
:puke owl-puke
:eye owl-eye
+ :cursor :talk
:talk-color (color 0.5 0.5 1.0 1.0)
:anim owl-stand
:anim-start 0
@@ -529,5 +543,5 @@
(if (= :night (get-in entities [:state :time]))
(make-night entities)
(utils/remove-interaction entities :rock)
-)))
+ )))
:start-pos [200 10])))
diff --git a/desktop/src-common/advent/screens/rooms/common.clj b/desktop/src-common/advent/screens/rooms/common.clj
index 908c6e06..8cae657b 100644
--- a/desktop/src-common/advent/screens/rooms/common.clj
+++ b/desktop/src-common/advent/screens/rooms/common.clj
@@ -15,6 +15,8 @@
[play-clj.g2d :refer :all])
(:import [com.badlogic.gdx.graphics Color]))
+(println "loading " *ns*)
+
(defn go-to-jail [entities & [time]]
(actions/update-state entities #(assoc % :chest-contents (concat (remove #{:key :ladder} (:inventory %)) (:chest-contents %))))
@@ -27,13 +29,13 @@
:time time)
(actions/play-animation entities :ego :standup))
-(defn make-wizard [screen wizard-spec]
- (let [wizard-sheet (texture! (utils/get-texture "wizard/talk.png") :split 20 46)
+(defn make-wizard [screen atlas wizard-spec]
+ (let [wizard-sheet (texture! (utils/atlas->texture atlas "wizard/talk") :split 20 46)
wizard-stand (animation 0.2 (for [i (flatten [(repeat 10 0) 1])]
(aget wizard-sheet 0 i)))
- wizard-talk-angry (utils/make-anim "wizard/talk-angry.png" [20 50] 0.2 [0 2 0 2 1 2 0 3 0 2 0 1 0 2])
- wizard-magic-hands (utils/make-anim "wizard/magic-hands.png" [20 50] 0.2 (range 2))
- wizard-disappear (utils/make-anim "wizard/disappear.png" [20 46] 0.075 (range 19))
+ wizard-talk-angry (utils/make-anim atlas "wizard/talk-angry" [20 50] 0.2 [0 2 0 2 1 2 0 3 0 2 0 1 0 2])
+ wizard-magic-hands (utils/make-anim atlas "wizard/magic-hands" [20 50] 0.2 (range 2))
+ wizard-disappear (utils/make-anim atlas "wizard/disappear" [20 46] 0.075 (range 19))
disappear-left (utils/flip wizard-disappear)
wizard-talk (animation 0.2 (for [i [0 2 0 2 1 2 0 3 0 2 0 1 0 2]]
(aget wizard-sheet 0 i)))
@@ -66,6 +68,8 @@
disappear-left {1 [:disappear 0.7]}
}
:night-profile :sprite
+ :label "Gandarf"
+ :cursor :talk
:origin-x 0
:origin-y 0
:talk-color (color 0.95 0.3 1.0 1.0)
@@ -292,16 +296,18 @@
"Nevermind."
{:run #(actions/respond entities % :frankie "Come back when you've got some good valuables.")}]}))
-(defn make-frankie [screen]
- (let [stand (utils/make-anim "castle-gate/frankie.png" [24 35] 0.19 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1])
- talk (utils/make-anim "castle-gate/frankie.png" [24 35] 0.2 [2 0 2 0 2 0 2 0 0 1 0])
- walk (utils/make-anim-seq "castle-gate/frankie-walk" [24 35] 0.2 (range 8))
- laugh (utils/make-anim "castle-gate/frankie.png" [24 35] 0.1 [1 3 4 3 4 3 4 3 4 3 4 3 4 1 0])
- glance (utils/make-anim "castle-gate/frankie.png" [24 35] 0.25 [0 6 0 6 5 5 5 6 7 7 7 6 ])
- reach (utils/make-anim "castle-gate/frankie.png" [24 35] 0.2 [0 8 9 9 9 9 8])
- flex (utils/make-anim "castle-gate/frankie.png" [24 35] 0.2 [0 10 11 12 12 12 12 11 10])]
+(defn make-frankie [screen atlas]
+ (let [stand (utils/make-anim atlas "frankie" [24 35] 0.19 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1])
+ talk (utils/make-anim atlas "frankie" [24 35] 0.2 [2 0 2 0 2 0 2 0 0 1 0])
+ walk (utils/make-anim-seq atlas "frankie-walk" [24 35] 0.2 (range 8))
+ laugh (utils/make-anim atlas "frankie" [24 35] 0.1 [1 3 4 3 4 3 4 3 4 3 4 3 4 1 0])
+ glance (utils/make-anim atlas "frankie" [24 35] 0.25 [0 6 0 6 5 5 5 6 7 7 7 6 ])
+ reach (utils/make-anim atlas "frankie" [24 35] 0.2 [0 8 9 9 9 9 8])
+ flex (utils/make-anim atlas "frankie" [24 35] 0.2 [0 10 11 12 12 12 12 11 10])]
(assoc (animation->texture screen stand)
:x 235 :y 90 :baseline 150
+ :label "Frankie Rockfist"
+ :cursor :talk
:origin-x 12
:origin-y 0
:anim stand
@@ -455,7 +461,9 @@
:bloodclot-head "Give it here!")
(actions/transition-background entities :space [200 45] :between (fn [s e]
(-> e
+
(assoc-in [:room :entities :ego :stand-override] :crawl-stand)
+ (assoc-in [:room :entities :ego :previous-frame-index] -1)
(update-in [:room :entities :ego] #(actions/start-animation s % :crawl-stand)))
))
(actions/do-dialogue entities
diff --git a/desktop/src-common/advent/screens/rooms/dream.clj b/desktop/src-common/advent/screens/rooms/dream.clj
index bdeff743..af1404b8 100644
--- a/desktop/src-common/advent/screens/rooms/dream.clj
+++ b/desktop/src-common/advent/screens/rooms/dream.clj
@@ -19,19 +19,23 @@
[play-clj.g2d :refer :all])
(:import [com.badlogic.gdx.graphics Color]))
+(println "loading " *ns*)
+
(def walk-chan (a/chan))
(defn set-opacity [entities opacity tool-opacity]
(-> entities
- (assoc-in [:room :layers 0 :opacity] opacity)
- (assoc-in [:room :layers 1 :opacity] opacity)
- (assoc-in [:room :layers 2 :opacity] opacity)
- (assoc-in [:room :layers 3 :opacity] opacity)
- (assoc-in [:room :layers 4 :opacity] opacity)
- (assoc-in [:room :layers 5 :opacity] opacity)
- (assoc-in [:room :layers 6 :opacity] opacity)
- (assoc-in [:room :layers 7 :opacity] opacity)
- (assoc-in [:room :layers 8 :opacity] opacity)
+ (assoc-in [:room :current-layers 0 :opacity] opacity)
+ (assoc-in [:room :current-layers 1 :opacity] opacity)
+ (assoc-in [:room :current-layers 2 :opacity] opacity)
+ (assoc-in [:room :current-layers 3 :opacity] opacity)
+ (assoc-in [:room :current-layers 4 :opacity] opacity)
+ (assoc-in [:room :current-layers 5 :opacity] opacity)
+ (assoc-in [:room :current-layers 6 :opacity] opacity)
+ (assoc-in [:room :current-layers 7 :opacity] opacity)
+ (assoc-in [:room :current-layers 8 :opacity] opacity)
+ (assoc-in [:room :entities :fairy-godfather :label] (if (> opacity 0.0) "Fairy Godfather" nil))
+ (assoc-in [:room :entities :fairy-godfather :cursor] (if (> opacity 0.0) :talk nil))
(assoc-in [:room :entities :sword :opacity] tool-opacity)
(assoc-in [:room :entities :case :opacity] tool-opacity)
(assoc-in [:room :entities :broom :opacity] tool-opacity)
@@ -47,13 +51,13 @@
(begin [this screen entities]
(-> entities
(assoc-in [:tweens :fade-in]
- (tween/tween :fade-in screen [:room :layers 0 :opacity] 0.0 1.0 0.5 :ease tween/ease-in-out-quintic))))
+ (tween/tween :fade-in screen [:room :current-layers 0 :opacity] 0.0 1.0 0.5 :ease tween/ease-in-out-quintic))))
(continue [this screen entities]
- (set-opacity entities (get-in entities [:room :layers 0 :opacity] ) 0.0))
+ (set-opacity entities (get-in entities [:room :current-layers 0 :opacity] ) 0.0))
(done? [this screen entities]
- (= 1.0 (get-in entities [:room :layers 0 :opacity])))
+ (= 1.0 (get-in entities [:room :current-layers 0 :opacity])))
(terminate [this screen entities]
entities)
@@ -363,13 +367,15 @@
:fairy-godfather "Imagine the sweet smell of victory once you've mopped up some spilled milk."
:fairy-godfather "Or the smell of soap in the bathroom, where you'll spend your time making the tile and porcelain shine."))
-(defn make [screen]
- (let [fairy-godfather-anim (utils/make-anim "dream/fairy-godfather.png" [63 77] 0.15 [0 1 2 3 2 1 0 1 4 3 2 1])
- fairy-godfather-talk-anim (utils/make-anim "dream/fairy-godfather.png" [63 77] 0.15 [5 6 7 8 7 6])
- fairy-godfather-magic-anim (utils/make-anim "dream/fairy-godfather-magic.png" [100 77] 0.15 [0 1 2 3 4 4 4 4 3 2 1 0])]
- (rooms/make :music {:intro :wind :day :dream}
+(defn make [screen atlas global-atlas]
+ (let [fairy-godfather-anim (utils/make-anim atlas "fairy-godfather" [63 77] 0.15 [0 1 2 3 2 1 0 1 4 3 2 1])
+ fairy-godfather-talk-anim (utils/make-anim atlas "fairy-godfather" [63 77] 0.15 [5 6 7 8 7 6])
+ fairy-godfather-magic-anim (utils/make-anim atlas "fairy-godfather-magic" [100 77] 0.15 [0 1 2 3 4 4 4 4 3 2 1 0])]
+ (rooms/make
:name "Dream"
:interactions {:pit {:box [54 0 219 36]
+ :label "Pit of destiny"
+ :cursor :look
:script (actions/get-script entities
(actions/walk-to entities :ego [154 41])
(actions/talk entities :ego "Wow! That's a long way down."))
@@ -401,21 +407,32 @@
:ego "It seems like misery!"
:ego "Plus, how can I ever win the heart of my true love, Georgia McGorgeous?"))}}}
:timers {:return [1.0 1.0 return-from-island]}
- :layers [(assoc (utils/get-texture "dream/sky.png") :x 0 :y 0 :baseline -3 :parallax 0.01)
- (assoc (utils/get-texture "dream/far.png") :x -10 :y 0 :baseline -2 :parallax 0.01)
- (assoc (utils/get-texture "dream/clouds1.png") :x -10 :y 0 :baseline -1 :parallax 0.2 :scale-x 1.1 :scale-y 1.1)
- (assoc (utils/get-texture "dream/island.png") :x 180 :y 180 :baseline 0 :parallax 0.3 :scale-x 1.1 :scale-y 1.1)
- (assoc (utils/get-texture "dream/cliff.png") :x 50 :y 133 :baseline 1 :parallax 0.6 :scale-x 1.2 :scale-y 1.2)
- (assoc (utils/get-texture "dream/background.png") :x 0 :y 0 :baseline 2)
- (assoc (utils/get-texture "dream/corner-l.png") :x -10 :y -10 :baseline 240 :parallax 2.0 )
- (assoc (utils/get-texture "dream/corner-r.png") :x (- 320 80) :y -20 :baseline 240 :parallax 3.2)
- (assoc (utils/get-texture "dream/pedestals.png") :x 0 :y 0 :baseline 139)]
+ :layers [(assoc (utils/atlas->texture atlas "sky") :x 0 :y 0 :baseline -3 :parallax 0.5)
+ (assoc (utils/atlas->texture atlas "far") :x -10 :y 0 :baseline -2 :origin-x 160 :parallax 0.5)
+ (assoc (utils/atlas->texture atlas "clouds1") :x -10 :y 0 :baseline -1 :parallax 0.2 :scale-x 1.1 :scale-y 1.1)
+ (assoc (utils/atlas->texture atlas "island") :x 180 :y 180 :baseline 0 :parallax 0.3 :scale-x 1.1 :scale-y 1.1)
+ (assoc (utils/atlas->texture atlas "cliff") :x 50 :y 133 :baseline 1 :parallax 0.6 :scale-x 1.2 :scale-y 1.2)
+ (assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 2)
+ (assoc (utils/atlas->texture atlas "corner-l") :x -10 :y -10 :baseline 240 :parallax 2.0 )
+ (assoc (utils/atlas->texture atlas "corner-r") :x (- 320 80) :y -20 :baseline 240 :parallax 3.2)
+ (assoc (utils/atlas->texture atlas "pedestals") :x 0 :y 0 :baseline 139)]
+ :current-layers [(assoc (utils/atlas->texture atlas "sky") :x 160 :y 120 :origin-y 120 :baseline -3 :origin-x 160 :parallax 0.01)
+ (assoc (utils/atlas->texture atlas "far") :x 160 :y 120 :baseline -2 :origin-y 120 :origin-x 160 :parallax 0.01)
+ (assoc (utils/atlas->texture atlas "clouds1") :x 150 :y 120 :baseline -1 :origin-x 160 :origin-y 120 :parallax 0.1 :scale-x 1.1 :scale-y 1.1)
+ (assoc (utils/atlas->texture atlas "island") :x 180 :y 180 :origin-x 15 :origin-y 10 :baseline 0 :parallax 0.2 :scale-x 1.1 :scale-y 1.1)
+ (assoc (utils/atlas->texture atlas "cliff") :x 160 :y 120 :origin-x 160 :origin-y 120 :baseline 1 :parallax 0.6 :scale-x 1.2 :scale-y 1.2)
+ (assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 2)
+ (assoc (utils/atlas->texture atlas "corner-l") :x -10 :y -10 :baseline 240 :parallax 2.0 )
+ (assoc (utils/atlas->texture atlas "corner-r") :x (- 320 80) :y -20 :baseline 240 :parallax 3.2)
+ (assoc (utils/atlas->texture atlas "pedestals") :x 0 :y 0 :baseline 139)]
:entities {:magic (assoc (particle-effect "particles/dream-magic") :x 160 :y 80 :baseline 240)
:clouds (assoc (particle-effect "particles/cloudy2") :x 160 :y 120 :baseline 241)
- :case (assoc (utils/get-texture "dream/case.png")
+ :case (assoc (utils/atlas->texture atlas "case")
:x 144 :y 122 :baseline 139
+ :label "Glass case"
+ :cursor :look
:script (actions/get-script entities
(read-sword-plaque entities))
:scripts {:shovel (actions/get-script entities
@@ -439,9 +456,9 @@
(actions/walk-straight-to entities :ego [180 100] :anim :jumping-straight :update-baseline? false :stop? false :speed 2.0)
(actions/walk-straight-to entities :ego [190 30] :anim :jumping-straight :update-baseline? false :stop? false :speed 3.0)
(actions/walk-straight-to entities :ego [200 -80] :anim :jumping-straight :update-baseline? false :stop? false :speed 8.0)
- (actions/remove-item entities :dream-sword)
- (actions/remove-item entities :broom)
- (actions/remove-item entities :shovel)
+ (actions/remove-item entities :dream-sword :quiet? true)
+ (actions/remove-item entities :broom :quiet? true)
+ (actions/remove-item entities :shovel :quiet? true)
(actions/transition-background entities :inside-castle [92 150] :time 8.0)
(actions/resume-camera entities)
(actions/walk-straight-to entities :ego [79 145] :stop? false)
@@ -462,15 +479,17 @@
(do (actions/walk-to entities :ego [148 76] :face :right)
(actions/do-dialogue entities
:fairy-godfather "What are you doing?" :ego "Erm... Nothing."))))})
- :sword (assoc (utils/get-texture "dream/sword.png")
+ :sword (assoc (utils/atlas->texture atlas "sword")
:x 144 :y 122 :baseline 139)
:explode (assoc (particle-effect "particles/explode") :x 150 :y 138 :baseline 240)
- :broom (assoc (utils/get-texture "dream/broom.png") :x 286 :y 122
+ :broom (assoc (utils/atlas->texture atlas "broom") :x 286 :y 122
:path (catmull-rom-spline (map #(apply vector-2* %) [[286 122] [286 128]]) true)
:update-fn (partial utils/update-path-location 0.30)
:baseline 240
+ :label "Broom"
+ :cursor :hand
:script (actions/get-script entities
(if ((get-in @entities [:state :plaques-read]) :broom)
(do
@@ -481,11 +500,13 @@
(actions/give entities :broom))
(read-broom-plaque entities))))
- :shovel (assoc (utils/get-texture "dream/shovel.png") :x 33 :y 122
+ :shovel (assoc (utils/atlas->texture atlas "shovel") :x 33 :y 122
:path (catmull-rom-spline (map #(apply vector-2* %) [[22 122] [22 128]]) true)
:update-fn (partial utils/update-path-location 0.33)
:baseline 240
+ :label "Shovel"
+ :cursor :hand
:script (actions/get-script entities
(if ((get-in @entities [:state :plaques-read]) :shovel)
(do
@@ -496,10 +517,10 @@
(actions/give entities :shovel))
(read-shovel-plaque entities))))
- :sign (assoc (utils/get-texture "dream/sign.png") :x 229 :y 33 :baseline 207)
- :plaque-1 (assoc (utils/get-texture "dream/plaque1.png") :x 39 :y 99 :baseline 139 :script (actions/get-script entities (read-shovel-plaque entities)))
- :plaque-2 (assoc (utils/get-texture "dream/plaque2.png") :x 147 :y 104 :baseline 139 :script (actions/get-script entities (read-sword-plaque entities)))
- :plaque-3 (assoc (utils/get-texture "dream/plaque3.png") :x 283 :y 98 :baseline 139 :script (actions/get-script entities (read-broom-plaque entities)))
+ :sign (assoc (utils/atlas->texture atlas "sign") :x 229 :y 33 :baseline 207)
+ :plaque-1 (assoc (utils/atlas->texture atlas "plaque1") :x 39 :y 99 :baseline 139 :label "Plaque" :cursor :look :script (actions/get-script entities (read-shovel-plaque entities)))
+ :plaque-2 (assoc (utils/atlas->texture atlas "plaque2") :x 147 :y 104 :baseline 139 :label "Plaque" :cursor :look :script (actions/get-script entities (read-sword-plaque entities)))
+ :plaque-3 (assoc (utils/atlas->texture atlas "plaque3") :x 283 :y 98 :baseline 139 :label "Plaque" :cursor :look :script (actions/get-script entities (read-broom-plaque entities)))
:outside-particles (common/make-outside-particles)
:bounce-surrogate {:object nil
:path (catmull-rom-spline (map #(apply vector-2* %) [[200 130] [200 150]]) true)
@@ -539,8 +560,11 @@
:default {:origin-x 31}}
:facing :left
:update-fn (fn [s es e]
+
(assoc-in e [:offset-y] (* (:scale-y e) (get-in es [:bounce-surrogate :delta-y] 0))))
:talk-color (Color/valueOf "ADA6FFFF")
+ :label "Fairy godfather"
+ :cursor :talk
:script (actions/get-script entities
(if (get-in @entities [:room :entities :fairy-godfather :distracted?])
(actions/do-dialogue entities :ego "He wouldn't be able to hear me from there.")
@@ -564,7 +588,7 @@
(utils/fast-forward-particle (get-in entities [:room :entities :outside-particles]))
(as-> entities entities
- (if (get-in entities [:state :seen-intro?])
+ (if (get-in entities [:state :seen-intro?])
(set-opacity entities 1.0 1.0)
(set-opacity entities 0.0 0.0))
(if (actions/has-item? entities :broom)
diff --git a/desktop/src-common/advent/screens/rooms/ending.clj b/desktop/src-common/advent/screens/rooms/ending.clj
index 03fa762e..95310d33 100644
--- a/desktop/src-common/advent/screens/rooms/ending.clj
+++ b/desktop/src-common/advent/screens/rooms/ending.clj
@@ -17,40 +17,41 @@
[play-clj.g2d :refer :all])
(:import [com.badlogic.gdx.graphics Color]))
-(defn make [screen]
- (let [
- peddler-sheet (texture! (utils/get-texture "outside-castle/peddler-talk.png" ) :split 18 36)
+(println "loading " *ns*)
+
+(defn make [screen atlas global-atlas]
+ (let [peddler-sheet (texture! (utils/atlas->texture atlas "peddler-talk" ) :split 18 36)
peddler-stand (utils/flip (animation 0.2 (for [i (flatten [(repeat 8 0) 6 (repeat 8 0) 6 (repeat 5 0) 4 5 4 5 4 5])]
(aget peddler-sheet 0 i))))
- warden-stand (utils/make-anim "ending-castle/warden-2.png" [21 41] 0.21 (flatten [(repeat 7 0) 1]))
+ warden-stand (utils/make-anim atlas "warden-2" [21 41] 0.21 (flatten [(repeat 7 0) 1]))
- game-player-stand (utils/make-anim "ending-castle/game-player.png" [14 39] 0.2 (flatten [(repeat 5 0) 1] ))
+ game-player-stand (utils/make-anim atlas "game-player" [14 39] 0.2 (flatten [(repeat 5 0) 1] ))
- ladder-guard-stand-1 (animation 0.1 [(utils/get-texture "inside-cafeteria/ladder-guard-2.png")])
- ladder-guard-stand-2 (utils/flip (animation 0.1 [(utils/get-texture "inside-cafeteria/ladder-guard-2.png")]))
- grandma-stand (utils/make-anim "cat-tree/grandma.png" [25 36] 0.2 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1])
- cat-stand (utils/make-anim "cat-tree/cat-stand.png" [22 10] 0.15 (flatten [(repeat 10 0) 1 1 (repeat 10 0) 2 3 4 3 0 0 2 3 4 3 (repeat 10 0) 1 1 (repeat 10 0) 5 5 6 6 7 (repeat 10 [7 8]) 6 5 0]))
- duke-stand (utils/make-anim "ending-castle/duke.png" [40 48] 0.23 (flatten [(repeat 4 0) 1]))
- duke-talk (utils/make-anim "ending-castle/duke.png" [40 48] 0.23 [0 2 0 2 1 2])
- duke-reach (utils/make-anim "ending-castle/duke.png" [40 48] 0.23 [3 4 5 6])
- duke-reach-talk (utils/make-anim "ending-castle/duke.png" [40 48] 0.23 [6 7])
- duke-knight (utils/make-anim "ending-castle/duke.png" [40 48] 0.23 [8 9 10 9 8])
+ ladder-guard-stand-1 (animation 0.1 [(utils/atlas->texture atlas "ladder-guard-2")])
+ ladder-guard-stand-2 (utils/flip (animation 0.1 [(utils/atlas->texture atlas "ladder-guard-2")]))
+ grandma-stand (utils/make-anim atlas "grandma" [25 36] 0.2 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1])
+ cat-stand (utils/make-anim atlas "cat-stand" [22 10] 0.15 (flatten [(repeat 10 0) 1 1 (repeat 10 0) 2 3 4 3 0 0 2 3 4 3 (repeat 10 0) 1 1 (repeat 10 0) 5 5 6 6 7 (repeat 10 [7 8]) 6 5 0]))
+ duke-stand (utils/make-anim atlas "duke" [40 48] 0.23 (flatten [(repeat 4 0) 1]))
+ duke-talk (utils/make-anim atlas "duke" [40 48] 0.23 [0 2 0 2 1 2])
+ duke-reach (utils/make-anim atlas "duke" [40 48] 0.23 [3 4 5 6])
+ duke-reach-talk (utils/make-anim atlas "duke" [40 48] 0.23 [6 7])
+ duke-knight (utils/make-anim atlas "duke" [40 48] 0.23 [8 9 10 9 8])
- georgia-stand (utils/make-anim "georgia/stand.png" [20 43] 0.2 (flatten [(repeat 20 0) 1 (repeat 10 0) 1]))
- georgia-hand-hold (utils/make-anim "georgia/stand.png" [20 43] 0.2 (flatten [(repeat 3 0) 3 4]))
- georgia-talk (utils/make-anim "georgia/stand.png" [20 43] 0.2 (flatten [0 2 0 2 0 1 0 0 2]))
- georgia-kick (utils/make-anim-seq "georgia/kick" [40 43] 0.1 (flatten [(repeat 10 0) (repeat 7 1) (repeat 7 2)
+ georgia-stand (utils/make-anim atlas "georgia/stand" [20 43] 0.2 (flatten [(repeat 20 0) 1 (repeat 10 0) 1]))
+ georgia-hand-hold (utils/make-anim atlas "georgia/stand" [20 43] 0.2 (flatten [(repeat 3 0) 3 4]))
+ georgia-talk (utils/make-anim atlas "georgia/stand" [20 43] 0.2 (flatten [0 2 0 2 0 1 0 0 2]))
+ georgia-kick (utils/make-anim-seq atlas "georgia/kick" [40 43] 0.1 (flatten [(repeat 10 0) (repeat 7 1) (repeat 7 2)
3 4 5 6 7 8 9 10 11 12 13 (repeat 10 14)
15 16 17 18 19 (repeat 10 0)]))
- frankie-fall (utils/make-anim-seq "ending-castle/frankie-fall" [40 35] 0.1 (flatten [(range 8) (repeat 20 7) 8 9 10 11 7]))
- frankie-down (utils/make-anim-seq "ending-castle/frankie-fall" [40 35] 0.1 [0])
+ frankie-fall (utils/make-anim-seq atlas "frankie-fall" [40 35] 0.1 (flatten [(range 8) (repeat 20 7) 8 9 10 11 7]))
+ frankie-down (utils/make-anim-seq atlas "frankie-fall" [40 35] 0.1 [0])
scaler (utils/scaler-fn-with-baseline 20 1.3 1.30)]
- (rooms/make :music :dream
+ (rooms/make
:sounds {:cloud (utils/load-sound "ending-castle/cloud.ogg")}
:name "Ending"
:interactions {}
- :layers [(assoc (utils/get-texture "ending-castle/ending-castle2-assets/background.png") :x 0 :y 0 :origin-x 0 :origin-y 0 :baseline 0)
- (assoc (utils/get-texture "ending-castle/ending-castle2-assets/foreground.png") :x 160 :y 0 :origin-x 165 :origin-y 5 :baseline 240 :parallax 1.4)]
+ :layers [(assoc (utils/atlas->texture atlas "ending-castle2-assets/background") :x 0 :y 0 :origin-x 0 :origin-y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "ending-castle2-assets/foreground") :x 160 :y 0 :origin-x 165 :origin-y 5 :baseline 240 :parallax 1.4)]
:apply-state (fn [screen e]
(as-> e e
(utils/play-sound! screen e :cloud (fn [e]
@@ -70,14 +71,14 @@
:stand georgia-stand
:talk georgia-talk
:kick georgia-kick
- :walk (utils/make-anim "georgia/walk.png" [20 43] 0.2 (range 8))
+ :walk (utils/make-anim atlas "georgia/walk" [20 43] 0.2 (range 8))
:hand-hold georgia-hand-hold
:kick-sound (utils/load-sound "georgia/kick.ogg")
:anim-sound-frames {georgia-kick {27 [:kick-sound (constantly 0.6)]}}
:anim-merges {georgia-stand {:origin-x 10 :origin-y 1}
:default {:origin-x 10 :origin-y 1}
georgia-kick {:origin-x 19 :origin-y 0}}))
- :entities {:frankie (assoc (common/make-frankie screen)
+ :entities {:frankie (assoc (common/make-frankie screen global-atlas)
:x 28 :y 21 :baseline 200
:fall frankie-fall
:down frankie-down
@@ -88,7 +89,7 @@
:anim-merges {:default {:origin-x 12 :origin-y 0}
frankie-fall {:origin-x 22 :origin-y 0}
frankie-down {:origin-x 22 :origin-y 0}})
- :gandarf (assoc (common/make-wizard screen {:x 205 :y 400 :baseline 239})
+ :gandarf (assoc (common/make-wizard screen global-atlas {:x 205 :y 400 :baseline 239})
:update-fn (fn [screen entities gandarf]
(assoc gandarf :y (or (get-in entities [:gandarf-cloud :y])
(:y gandarf)))))
@@ -119,22 +120,22 @@
:scale-x 0.65
:scale-y 0.65
:scaled true)
- :crowd-left (assoc (utils/get-texture "ending-castle/crowd-left.png")
+ :crowd-left (assoc (utils/atlas->texture atlas "crowd-left")
:x 0 :y 0
:scale-x 1.3
:scale-y 1.3
:baseline 239)
- :crowd-right (assoc (utils/get-texture "ending-castle/crowd-right.png")
+ :crowd-right (assoc (utils/atlas->texture atlas "crowd-right")
:x 196 :y 0
:scale-x 1.3
:scale-y 1.3
:baseline 238)
- :guard-1 (assoc (utils/get-texture "ending-castle/guard-1.png")
+ :guard-1 (assoc (utils/atlas->texture atlas "guard-1")
:x 91 :y 73
:scale-x 0.9
:scale-y 0.9
:baseline 140)
- :guard-2 (assoc (utils/get-texture "ending-castle/guard-2.png")
+ :guard-2 (assoc (utils/atlas->texture atlas "guard-2")
:x 182 :y 73
:scale-x 0.9
:scale-y 0.9
diff --git a/desktop/src-common/advent/screens/rooms/held.clj b/desktop/src-common/advent/screens/rooms/held.clj
index 4663b427..2e6f4256 100644
--- a/desktop/src-common/advent/screens/rooms/held.clj
+++ b/desktop/src-common/advent/screens/rooms/held.clj
@@ -15,6 +15,7 @@
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn bloodclot-choices [entities]
@@ -56,12 +57,13 @@
(actions/get-script entities
(actions/talk entities who msg)))
-(defn make [screen]
- (let [bloodclot-talk (utils/make-anim-seq "held/bloodclot-head" [114 82] 0.1 [0 1 2 1 0 3 3 0 1 2 1 0 3 4 5 6 5 3 3 1 2 1 3 3 3 3 3 0 0 0 7 8 7])
- bloodclot-stand (utils/make-anim-seq "held/bloodclot-head" [114 82] 0.1 (flatten [(repeat 15 0) 7 8 7]))]
- (rooms/make :music :fight
- :name "Held"
+(defn make [screen atlas global-atlas]
+ (let [bloodclot-talk (utils/make-anim-seq atlas "bloodclot-head" [114 82] 0.1 [0 1 2 1 0 3 3 0 1 2 1 0 3 4 5 6 5 3 3 1 2 1 3 3 3 3 3 0 0 0 7 8 7])
+ bloodclot-stand (utils/make-anim-seq atlas "bloodclot-head" [114 82] 0.1 (flatten [(repeat 15 0) 7 8 7]))]
+ (rooms/make :name "Held"
:interactions {:bloodclot {:box [182 42 270 196]
+ :label "Bloodclot"
+ :cursor :talk
:script (actions/get-script entities
(bloodclot-talk-script entities))
:scripts #(condp = %
@@ -79,8 +81,8 @@
(actions/talk entities :bloodclot-head "Don't make me laugh, kid!")))
}}
:timers {:taunt [5.0 1.0 add-second]}
- :layers [(assoc (utils/get-texture "held/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "held/hand.png") :x 0 :y 0 :baseline 240)]
+ :layers [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "hand") :x 0 :y 0 :baseline 240)]
:entities {:bloodclot-head (assoc (animation->texture screen bloodclot-stand)
:x 211 :y 115 :baseline 240
:origin-x 57 :origin-y 0
diff --git a/desktop/src-common/advent/screens/rooms/inside_antique.clj b/desktop/src-common/advent/screens/rooms/inside_antique.clj
index a560e620..f06ad8c7 100644
--- a/desktop/src-common/advent/screens/rooms/inside_antique.clj
+++ b/desktop/src-common/advent/screens/rooms/inside_antique.clj
@@ -11,6 +11,7 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(def boy-names
["Steve" "Bob" "Bud" "Clement" "Terrence" "Flapjack" "Ticklemonster" "Peter" "Greg" "Dave" "Stu" "Calsbad" "Fatso" "Tanner" "Klug"
"Griswold" "Leonardo" "Donatello" "Raphael" "Michelangelo" "Francis" "Ebeneezer" "Pierre" "Finn" "Slade" "Gilbert" "Graham"
@@ -159,20 +160,25 @@
(actions/walk-to entities :ego [143 58] :face :left)
(actions/play-animation entities :ego :reach)
(actions/add-entity entities :portrait (get-in @entities [:room :portrait]))
- (actions/remove-item entities :portrait))
+ (actions/remove-item entities :portrait)
+ (actions/remove-entity entities :return-portrait)
+ (actions/remove-entity entities :return-portrait-2))
(defn get-portrait [entities]
(actions/walk-to entities :ego [140 58] :face :left)
(actions/play-animation entities :ego :reach)
(actions/remove-entity entities :portrait)
(actions/give entities :portrait)
- (actions/talk entities :ego "It's a portrait. There's something on the back but it's too dim to read."))
+ (actions/talk entities :ego "It's a portrait. There's something on the back but it's too dim to read.")
+ (actions/add-entity entities :return-portrait-2 (get-in @entities [:room :return-portrait-2]))
+ (actions/add-entity entities :return-portrait (get-in @entities [:room :return-portrait])))
(defn return-teddy [entities]
(actions/walk-to entities :ego [242 49] :face :right)
(actions/play-animation entities :ego :reach)
(actions/add-entity entities :teddy (get-in @entities [:room :teddy]))
- (actions/remove-item entities :teddy))
+ (actions/remove-item entities :teddy)
+ (actions/remove-entity entities :return-teddy))
(defn has-to-return-teddy? [entities]
(and (actions/has-item? entities :teddy)
@@ -191,22 +197,25 @@
(assoc-in [:room :entities :darken :opacity] 0.4)
(assoc-in [:room :entities :glow :opacity] 0.0))))
-(defn make [screen]
- (let [shopkeep-sheet (texture! (utils/get-texture "inside-antique/shopkeep-talk.png") :split 18 21)
+(defn make [screen atlas global-atlas]
+ (let [shopkeep-sheet (texture! (utils/atlas->texture atlas "shopkeep-talk") :split 18 21)
shopkeep-stand (animation 0.1 (for [i (flatten [(repeat 30 0) 1 (repeat 50 0) 1 0 1 0])]
(aget shopkeep-sheet 0 i)))
shopkeep-talk (animation 0.15 (for [i [0 2 0 2 0 3 1 0]]
(aget shopkeep-sheet 0 i)))
- shopkeep-sigh (utils/make-anim "inside-antique/antique-sigh.png" [24 21] 0.12 (flatten [ (range 9) 0 0 ]))
+ shopkeep-sigh (utils/make-anim atlas "antique-sigh" [24 21] 0.12 (flatten [ (range 9) 0 0 ]))
- beard (utils/make-anim "inside-antique/beard.png" [28 54] 0.5 [0 1 0 2])
- teddy (assoc (utils/get-texture "inside-antique/teddy.png")
+ beard (utils/make-anim atlas "beard" [28 54] 0.5 [0 1 0 2])
+ teddy (assoc (utils/atlas->texture atlas "teddy")
:x 255
:y 95
:baseline 160
+ :label "Choicest teddy bear"
+ :cursor :hand
:script (actions/get-script entities
(actions/walk-to entities :ego [242 49] :face :right)
(actions/play-animation entities :ego :reach)
+ (actions/add-entity entities :return-teddy (get-in @entities [:room :return-teddy]))
(actions/give entities :teddy)
(actions/remove-entity entities :teddy)
(when (not (get-in @entities [:state :allowed-to-keep-teddy?]))
@@ -215,16 +224,49 @@
:shopkeep "Don't get any fast ideas."
:shopkeep "That teddy bear does not leave my store."
:shopkeep "My son would be stricken with grief to find it missing."))))]
- (rooms/make :music :inside-antique
+ (rooms/make
:name "Antique shop"
:sounds {:fire-1 (utils/load-sound "inside-antique/fire-1.ogg")
:fire-2 (utils/load-sound "inside-antique/fire-2.ogg")
:fire-3 (utils/load-sound "inside-antique/fire-3.ogg")
}
+ :return-portrait (rooms/make-entity :return-portrait {:box [103 70 206 116]
+ :label "Desk"
+ :baseline 0
+ :cursor :look
+ :script (actions/get-script entities (actions/talk entities :ego "It's the shopkeep's desk."))
+ :scripts {:portrait (actions/get-script entities
+ (return-portrait entities))
+ :teddy (actions/get-script entities
+ (return-teddy entities))}})
+ :return-portrait-2 (rooms/make-entity :return-portrait-2
+ {:box [103 116 131 131]
+ :label "Desk"
+ :baseline 0
+ :cursor :look
+ :script (actions/get-script entities (if (actions/has-item? entities :portrait)
+ (actions/talk entities :ego "The shopkeep's portrait used to sit there.")
+ (get-portrait entities)
+
+ ))
+ :scripts {:portrait (actions/get-script entities
+ (return-portrait entities))
+ :teddy (actions/get-script entities
+ (return-teddy entities))}})
+ :return-teddy (rooms/make-entity :return-teddy {:box [227 90 301 105]
+ :baseline 0
+ :cursor :look
+ :label "Shelf"
+ :script (actions/get-script entities
+ (actions/talk entities :ego "It's a shelf."))
+ :scripts {:teddy (actions/get-script entities
+ (return-teddy entities))
+ :portrait (actions/get-script entities
+ (return-portrait entities))}})
:interactions
{:right {:box [250 0 320 75]
:cursor :right
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(when (or (actions/has-item? entities :portrait)
(has-to-return-teddy? entities))
(actions/walk-to entities :ego [235 15])
@@ -238,30 +280,12 @@
(actions/walk-straight-to entities :ego [320 -5])
(actions/transition-background entities :inside-castle [182 90])
(actions/walk-to entities :ego [187 75]))}
- :return-portrait-2 {:box [103 116 131 131]
- :script (actions/get-script entities (if (actions/has-item? entities :portrait)
- (actions/talk entities :ego "The shopkeep's portrait used to sit there.")
- (get-portrait entities)
-
- ))
- :scripts {:portrait (actions/get-script entities
- (return-portrait entities))
- :teddy (actions/get-script entities
- (return-teddy entities))}}
- :return-portrait {:box [103 70 206 116]
- :script (actions/get-script entities (actions/talk entities :ego "It's the shopkeep's desk."))
- :scripts {:portrait (actions/get-script entities
- (return-portrait entities))
- :teddy (actions/get-script entities
- (return-teddy entities))}}
- :return-teddy {:box [227 90 301 105]
- :script (actions/get-script entities
- (actions/talk entities :ego "It's a shelf."))
- :scripts {:teddy (actions/get-script entities
- (return-teddy entities))
- :portrait (actions/get-script entities
- (return-portrait entities))}}
+
+
+
:window {:box [195 121 256 190]
+ :label "Window"
+ :cursor :hand
:script (actions/get-script entities
(actions/walk-to entities :ego [207 68] :face :right)
@@ -294,29 +318,39 @@
(actions/play-animation entities :ego :hold-up-to-window)
(actions/talk entities :ego "It's just too dim."))))}}
:grandfather-clock {:box [55 70 103 185]
+ :label "Grandfather clock"
+ :cursor :look
:script (actions/get-script entities
(actions/do-dialogue entities :ego "Cool grandfather clock!"
:shopkeep "It's quite the exquisite piece, isn't it?"))}
:shelf {:box [0 60 52 199]
+ :cursor :look
+ :label "Trinkets"
:script (actions/get-script entities
(actions/walk-to entities :ego [48 58])
(actions/talk entities :ego "All of these trinkets seem too bulky to fit in my pack."))}
:flowers {:box [178 115 188 143]
+ :label "Flowers"
+ :cursor :look
:script (actions/get-script entities
(actions/talk entities :ego "I've never been a fan of flowers."))}
:lian {:box [264 103 317 198]
+ :cursor :look
+ :label "Tapestry"
:script (actions/get-script entities
(actions/walk-to entities :ego [220 35] :face :right)
(actions/do-dialogue entities
:ego "It's a tapestry of Rupert the Lion!"
:ego "He's the town of Remington's mascot."))}
}
- :layers [(assoc (utils/get-texture "inside-antique/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "inside-antique/desk.png") :x 0 :y 0 :baseline 113)
+ :layers [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "desk") :x 0 :y 0 :baseline 113)
- (assoc (utils/get-texture "inside-antique/fg.png") :x 0 :y 0 :baseline 320 :parallax 1.5)
+ (assoc (utils/atlas->texture atlas "fg") :x 0 :y 0 :baseline 320 :parallax 1.5)
]
:entities {:shopkeep (actions/start-animation screen (assoc (animation->texture screen shopkeep-stand) :x 148 :y 122 :baseline 112
+ :label "Shopkeeper"
+ :cursor :talk
:stand shopkeep-stand
:scale-x 1.6
:scale-y 1.6
@@ -348,10 +382,10 @@
(actions/get-script entities
(actions/talk entities :shopkeep "No thanks, sonny."))))
:stand)
- :glow (assoc (utils/get-texture "inside-antique/glow.png") :x 0 :y 0 :baseline 240 :additive? true :opacity 0.3)
- :closed-blinds (assoc (utils/get-texture "inside-antique/closed-blinds.png") :x 0 :y 0 :baseline 0 :opacity 1.0)
- :open-blinds (assoc (utils/get-texture "inside-antique/open-blinds.png") :x 0 :y 0 :baseline 0 :opacity 0.0)
- :darken (assoc (utils/get-texture "inside-antique/darken.png") :x 0 :y 0 :baseline 321 :opacity 0.4 )
+ :glow (assoc (utils/atlas->texture atlas "glow") :x 0 :y 0 :baseline 240 :additive? true :opacity 0.3)
+ :closed-blinds (assoc (utils/atlas->texture atlas "closed-blinds") :x 0 :y 0 :baseline 1 :opacity 1.0)
+ :open-blinds (assoc (utils/atlas->texture atlas "open-blinds") :x 0 :y 0 :baseline 1 :opacity 0.0)
+ :darken (assoc (utils/atlas->texture atlas "darken") :x 0 :y 0 :baseline 321 :opacity 0.4 )
:beard (assoc (animation->texture screen beard)
:anim beard
:anim-start 0
@@ -364,14 +398,16 @@
:fire-particle (doto (assoc (particle-effect "particles/fire-particle") :x 162 :y 104
:baseline 240)
(particle-effect! :set-position 162 104))
- :bowl (assoc (utils/get-texture "inside-antique/bowl.png")
- :images [(utils/get-texture "inside-antique/bowl-0.png")
- (utils/get-texture "inside-antique/bowl-1.png")
- (utils/get-texture "inside-antique/bowl-2.png")
- (utils/get-texture "inside-antique/bowl-3.png")]
+ :bowl (assoc (utils/atlas->texture atlas "bowl")
+ :images [(utils/atlas->texture atlas "bowl-0")
+ (utils/atlas->texture atlas "bowl-1")
+ (utils/atlas->texture atlas "bowl-2")
+ (utils/atlas->texture atlas "bowl-3")]
:x 165
:y 110
:baseline 125
+ :label "Mint bowl"
+ :cursor :hand
:script (actions/get-script entities
(if (= 3 (get-in @entities [:state :mints-eaten]))
(do (actions/walk-to entities :ego [159 58] :face :right)
@@ -415,10 +451,12 @@
:shopkeep "Pronto!"))))))
:teddy teddy}
:portrait (rooms/make-entity :portrait
- (assoc (utils/get-texture "inside-antique/portrait.png")
+ (assoc (utils/atlas->texture atlas "portrait")
:x 112
:y 114
:baseline 120
+ :cursor :hand
+ :label "Portrait"
:script (actions/get-script entities
(get-portrait entities))))
:teddy (rooms/make-entity :teddy teddy)
@@ -431,6 +469,17 @@
(update-in entities [:room :entities] #(dissoc % :teddy))
entities)
+ (if (actions/has-item? entities :portrait)
+ (update-in entities [:room :entities] assoc
+ :return-portrait (get-in entities [:room :return-portrait])
+ :return-portrait-2 (get-in entities [:room :return-portrait-2]))
+ entities)
+
+ (if (actions/has-item? entities :teddy)
+ (update-in entities [:room :entities] assoc
+ :return-teddy (get-in entities [:room :return-teddy]))
+ entities)
+
(update-in entities
[:room :entities :bowl]
(fn [b]
diff --git a/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj b/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj
index ccb06fff..4b79b753 100644
--- a/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj
+++ b/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj
@@ -11,8 +11,10 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
-(defn make-fight-entity []
- (assoc (utils/get-texture "black.png")
+(println "loading " *ns*)
+
+(defn make-fight-entity [global-atlas]
+ (assoc (utils/atlas->texture global-atlas "black.png")
:x 0
:y 0
:scale-x 21
@@ -171,22 +173,15 @@
(defn pace [xs speed]
(mapcat #(repeat (- 4 speed) %) xs))
-(defn make [screen]
- (let [#_#_warriors-stand-sheet (texture! (utils/get-texture "inside-cafeteria/warriors-stand.png") :split 66 126)
- #_#_warriors-stand (animation 0.2 (for [i [0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 2 2 2 2 3 3 3 0 0 0 2 2 2 ]]
- (aget warriors-stand-sheet 0 i)))
- #_#_ladder-guard-sheet (texture! (utils/get-texture "inside-cafeteria/ladder-guard.png") :split 37 87)
- #_#_ladder-guard-stand (animation 0.1 [(aget ladder-guard-sheet 0 0)])
- ladder-guard-stand (animation 0.1 [(utils/get-texture "inside-cafeteria/ladder-guard-2.png")])
- ladder-guard-talk (animation 0.1 [ (utils/get-texture "inside-cafeteria/ladder-guard-2.png")])
- warriors-stand (utils/make-anim "inside-cafeteria/knights-stand.png" [49 80] 0.6 (take 100 (repeatedly #(rand-int 10))))
- knight-a-stand (utils/make-anim "inside-cafeteria/knight-a.png" [70 85] 0.2 (flatten [(repeat 3 [(repeat 7 0) (repeat 7 1) (repeat 7 0) (repeat 7 2)]) [3 4 5 6 7 8 9]]))
+(defn make [screen atlas global-atlas]
+ (let [ladder-guard-stand (animation 0.1 [(utils/atlas->texture atlas "ladder-guard-2")])
+ ladder-guard-talk (animation 0.1 [ (utils/atlas->texture atlas "ladder-guard-2")])
+ warriors-stand (utils/make-anim atlas "knights-stand" [49 80] 0.6 (take 100 (repeatedly #(rand-int 10))))
+ knight-a-stand (utils/make-anim atlas "knight-a" [70 85] 0.2 (flatten [(repeat 3 [(repeat 7 0) (repeat 7 1) (repeat 7 0) (repeat 7 2)]) [3 4 5 6 7 8 9]]))
- #_#_ladder-guard-talk (animation 0.2 (for [i [0 0 0 0 1 0 0 1]]
- (aget ladder-guard-sheet 0 i)))
- hands-fight-win (utils/make-anim-seq "inside-cafeteria/fight-new-assets/fight" [256 192] 0.025 (flatten [(pace [0 1 0 4 0 1 0 4 0 1 0 4 0 1 0 4 0 1 0 4 0 0 1 1 1 1 0 0 0 4 0 1 1 1 1 1 1 1 1 4 0 4 0 4 0 4 5 5 5 5 5 4 4 4] 0)
+ hands-fight-win (utils/make-anim-seq atlas "fight-new-assets/fight" [256 192] 0.025 (flatten [(pace [0 1 0 4 0 1 0 4 0 1 0 4 0 1 0 4 0 1 0 4 0 0 1 1 1 1 0 0 0 4 0 1 1 1 1 1 1 1 1 4 0 4 0 4 0 4 5 5 5 5 5 4 4 4] 0)
(pace (flatten (repeat 6 [12 13])) 0)
(pace (flatten (repeat 15 [7 8])) 0)
(pace (flatten (repeat 15 [9])) 0)
@@ -202,25 +197,26 @@
(pace (flatten (repeat 6 [12 13])) 0)
(pace [0 0 0 0 2 1 1 2 2 1 1 2 2 2 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3] 0)]))
- hands-fight-lose (utils/make-anim-seq "inside-cafeteria/fight-new-assets/fight" [256 192] 0.1 (flatten [4 4 4 4 4 4 0 0 0 0 4 4 4 0 0 0 5 5 5 6 6 6 6 6 6]))]
- (rooms/make :music :town-1
- :name "Cafeteria"
+ hands-fight-lose (utils/make-anim-seq atlas "fight-new-assets/fight" [256 192] 0.1 (flatten [4 4 4 4 4 4 0 0 0 0 4 4 4 0 0 0 5 5 5 6 6 6 6 6 6]))]
+ (rooms/make :name "Cafeteria"
:interactions
{:right-dir {:box [272 45 320 120]
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(actions/walk-to entities :ego [319 50] :skip-type :end)
(actions/transition-background entities :inside-castle [65 150])
(actions/walk-to entities :ego [126 80] :skip-type :end))
:cursor :right}
}
- :layers [(assoc (utils/get-texture "inside-cafeteria/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "inside-cafeteria/doorway.png") :x 306 :y 34 :baseline 202)
- (assoc (utils/get-texture "inside-cafeteria/glow.png") :y 0 :baseline 240 :additive? true :opacity 0.3)
- (assoc (utils/get-texture "inside-cafeteria/fg.png") :x 10 :y 0 :scale-x 1.1 :scale-y 1.0 :baseline 320 :parallax 1.5)
+ :layers [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "doorway") :x 306 :y 34 :baseline 202)
+ (assoc (utils/atlas->texture atlas "glow") :y 0 :baseline 240 :additive? true :opacity 0.3)
+ (assoc (utils/atlas->texture atlas "fg") :x 10 :y 0 :scale-x 1.1 :scale-y 1.0 :baseline 320 :parallax 1.5)
]
:entities {:warriors (actions/start-animation screen (assoc (animation->texture screen warriors-stand) :x 31 :y 36 :baseline 180
+ :cursor :talk
+ :label "Knights"
:left {:stand (utils/flip warriors-stand)
:talk (utils/flip warriors-stand)}
:right {:stand warriors-stand
@@ -239,8 +235,19 @@
:anim knight-a-stand
:anim-start 0
:talk knight-a-stand
- :stand knight-a-stand)
+ :stand knight-a-stand
+ :label "Knights"
+ :cursor :talk
+ :talk-color (color 1.0 0.2 0.3 1.0)
+ :script (actions/get-script entities
+ (do-warrior-dialogue entities))
+ :scripts (constantly (actions/get-script entities
+ (actions/walk-to entities :ego [150 45] :face :left)
+ (actions/do-dialogue entities :warriors
+ "We are warriors. We coveteth not earthly possessions."))))
:ladder-guard (actions/start-animation screen (assoc (animation->texture screen ladder-guard-stand) :x 180 :y 70 :baseline 170
+ :cursor :talk
+ :label "On-duty knight"
:stand ladder-guard-stand
:talk ladder-guard-talk
:talk-color (color 0.2 0.6 1.0 1.0)
@@ -252,12 +259,14 @@
"Do not durst telleth a soul about that ladder!"
"No thank you, young sire."))))
:stand)
- :ladder (assoc (utils/get-texture "inside-cafeteria/ladder.png") :x 205 :y 70 :baseline 170
+ :ladder (assoc (utils/atlas->texture atlas "ladder") :x 205 :y 70 :baseline 170
+ :cursor :hand
+ :label "Ladder"
:script (actions/get-script entities
(actions/talk entities :ladder-guard "Do not toucheth, young sire.")))}
:collision "inside-cafeteria/collision.png"
- :fight (make-fight-entity)
- :hands-fight (assoc (animation->texture screen hands-fight-win)
+ :fight (make-fight-entity global-atlas)
+ :hands-fight (assoc (utils/atlas->texture atlas "fight-new-assets/fight" 0)
:origin-x 128
:origin-y 96
:x 150
diff --git a/desktop/src-common/advent/screens/rooms/inside_castle.clj b/desktop/src-common/advent/screens/rooms/inside_castle.clj
index df9ff943..a7f86367 100644
--- a/desktop/src-common/advent/screens/rooms/inside_castle.clj
+++ b/desktop/src-common/advent/screens/rooms/inside_castle.clj
@@ -16,6 +16,7 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn brian [screen entities]
(when (and (not (get-in entities [:fg-actions :script-running?]))
(not (get-in entities [:bg-actions :script-running?]))
@@ -360,32 +361,31 @@
(do (actions/do-dialogue entities :ego "What about this?" :game-player "No, that's not the solution. Keep looking.")
nil)))
-(defn make [screen]
- (let [sign (utils/make-anim-seq "inside-castle/sign" [44 20] 0.3 (flatten [(repeat 20 0) 1 0 2 0 1 0 2 0 1 0 2 0 1]))
- game-player-talk-sheet (texture! (utils/get-texture "inside-castle/game-player-talk.png") :split 40 44)
+(defn make [screen atlas global-atlas]
+ (let [sign (utils/make-anim-seq atlas "sign" [44 20] 0.3 (flatten [(repeat 20 0) 1 0 2 0 1 0 2 0 1 0 2 0 1]))
+ game-player-talk-sheet (texture! (utils/atlas->texture atlas "game-player-talk") :split 40 44)
game-player-talk-up (animation 0.15 (for [i [0 2 0 2 0 2 0 3 0 2 0 1 0 0 0 0 2 0 2 0 3 0 1 0 1 0 0 1 0 2 0 3 0]]
(aget game-player-talk-sheet 0 i)))
game-player-stand-up (animation 0.15 (for [i [0 0 0 0 0 0 0 0 0 0 0 1]]
(aget game-player-talk-sheet 0 i)))
- game-player-stand-down (utils/make-anim "inside-castle/brian-working.png" [40 44] 0.1 (flatten (repeat 4 [0 1 1 2 0 2 2 1 0 2 2 2 2 2 1 1 ])))
- game-player-talk-down (utils/make-anim "inside-castle/brian-working.png" [40 44] 0.2 [2 3 2 2 3 2 3 2])
- game-player-pause-from-work (utils/make-anim "inside-castle/brian-working.png" [40 44] 0.15 [2 3 4 5 6 7])
- game-player-get-to-work (utils/make-anim "inside-castle/brian-working.png" [40 44] 0.15 (reverse [2 3 4 5 6 7]))
+ game-player-stand-down (utils/make-anim atlas "brian-working" [40 44] 0.1 (flatten (repeat 4 [0 1 1 2 0 2 2 1 0 2 2 2 2 2 1 1 ])))
+ game-player-talk-down (utils/make-anim atlas "brian-working" [40 44] 0.2 [2 3 2 2 3 2 3 2])
+ game-player-pause-from-work (utils/make-anim atlas "brian-working" [40 44] 0.15 [2 3 4 5 6 7])
+ game-player-get-to-work (utils/make-anim atlas "brian-working" [40 44] 0.15 (reverse [2 3 4 5 6 7]))
game-player-flex (animation 0.075 (for [i [0 0 4 4 5 5 5 5 5 5 5 6 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 9 7 8 7 6 5 5 5 5 5 5 5 5 5 5 4 4 0 0 0 0]]
(aget game-player-talk-sheet 0 i)))
- trophy (utils/make-anim "inside-castle/trophy.png" [16 16] 0.1 (flatten [(repeat 50 0) 1 2 3 3 3 3 2 1]))
- pull-sword-anim (utils/make-anim "inside-castle/pull-sword.png" [95 190] 0.10 (flatten [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 3 2 3 2 3 3 2 3 2 2 3 3 2 3 2 3 2 3 2 3 2 3 2 2 3 3 3 2 3 2 3 3 2 3 2 3 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ]))
- monocle (utils/make-anim "inside-castle/monocle.png" [19 19] 0.05 (flatten [(repeat 70 0) 1 2 3 3 3 2 1]))
- door (utils/make-anim "inside-castle/door.png" [21 49] 0.15 (flatten [(range 4) 3 3 3 3 3 3 3]))
+ trophy (utils/make-anim atlas "trophy" [16 16] 0.1 (flatten [(repeat 50 0) 1 2 3 3 3 3 2 1]))
+ pull-sword-anim (utils/make-anim atlas "pull-sword" [95 190] 0.10 (flatten [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 3 2 3 2 3 3 2 3 2 2 3 3 2 3 2 3 2 3 2 3 2 3 2 2 3 3 3 2 3 2 3 3 2 3 2 3 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ]))
+ monocle (utils/make-anim atlas "monocle" [19 19] 0.05 (flatten [(repeat 70 0) 1 2 3 3 3 2 1]))
+ door (utils/make-anim atlas "door" [21 49] 0.15 (flatten [(range 4) 3 3 3 3 3 3 3]))
]
- (rooms/make :music {:day :town-1 :night :night :sunrise :night}
- :name "Inside castle"
+ (rooms/make :name "Inside castle"
:timers {:brian [10.0 7.0 brian]}
:interactions
{:right-door {:box [286 140 306 160]
:cursor :right
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(actions/walk-to entities :ego [284 145] :skip-type :end)
(actions/walk-straight-to entities :ego [295 145])
(if (outside-castle/should-block? entities)
@@ -397,7 +397,7 @@
(actions/walk-straight-to entities :ego [82 180])
(actions/walk-to entities :ego [129 148] :skip-type :end))))}
:up-door {:box [50 150 70 170]
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(actions/walk-to entities :ego [65 155] :skip-type :end)
(if (= :night (get-in @entities [:state :time]))
(actions/talk entities :ego "It's locked.")
@@ -406,7 +406,7 @@
:cursor :up}
:antique-door {:box [154 90 189 150]
:cursor :up
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(actions/walk-to entities :ego [182 90] :face :left :skip-type :end)
(actions/play-animation entities :ego :reach)
(if (= :night (get-in @entities [:state :time]))
@@ -424,6 +424,8 @@
:shopkeep "Oh, you're not him."
:shopkeep "Welcome to Ye Olde Antique Shop.")))))}
:sword {:box [15 93 49 125]
+ :label "Pedestal"
+ :cursor :hand
:script (actions/get-script entities
(if (actions/has-item? entities :sword)
(actions/talk entities :ego "I already have the Sword of Blergh!")
@@ -436,43 +438,51 @@
(pull-sword entities)
(try-to-pull-sword entities missing-items obtained-items))))))}
:sign {:box [125 140 165 155]
+ :label "Sign"
+ :cursor :look
:script (actions/get-script entities
(actions/talk entities :ego "Ye Ol' Antique Shoppe."))}
:background-houses {:box [84 145 126 180]
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(actions/walk-to entities :ego [81 148] :face :right :stop? false :skip-type :end)
(actions/walk-straight-to entities :ego [92 150] :face :right)
(actions/transition-background entities :outside-jail [159 -20])
(actions/walk-straight-to entities :ego [159 20]))
:cursor :right}
:mid-house {:box [217 125 250 180]
+ :cursor :look
+ :label "Billy's house"
:script (actions/get-script entities
(actions/do-dialogue entities
:ego "That's Billy Billigan's house."
:ego "He's probably still angry from when I put his dog in the dryer."))}
:frankie-house {:box [251 140 266 160]
+ :cursor :look
+ :label "Frankie's house"
:script (actions/get-script entities
(actions/do-dialogue entities
:ego "That's Frankie Rockfist's house."
:ego "The last time I saw him, he socked me one, right in the kisser."))}
:georgia-house {:box [271 150 286 170]
+ :cursor :look
+ :label "Georgia's house"
:script (actions/get-script entities
(actions/do-dialogue entities
:ego "That's Georgia McGorgeous' house."
:ego "One day, when I'm a knight, she'll say...")
(actions/georgia-say entities "Kiss me, brave Sir Tick!")
#_(actions/in-love entities))}}
- :layers {:day [(assoc (utils/get-texture "inside-castle/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "inside-castle/way-back-tree.png") :x 0 :y 0 :baseline 97)
- (assoc (utils/get-texture "inside-castle/roof.png") :x (- 320 57) :y 0 :baseline 240 :parallax 1.5)
- (assoc (utils/get-texture "inside-castle/bookstack.png") :x 244 :y 67 :baseline 190 :origin-x 0 :origin-y 0)]
- :night [(assoc (utils/get-texture "inside-castle/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "inside-castle/way-back-tree.png") :x 0 :y 0 :baseline 97)
- (assoc (utils/get-texture "inside-castle/roof.png") :x (- 320 57) :y 0 :baseline 240 :parallax 1.5)]
- :sunrise [(assoc (utils/get-texture "inside-castle/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "inside-castle/way-back-tree.png") :x 0 :y 0 :baseline 97)
- (assoc (utils/get-texture "inside-castle/roof.png") :x (- 320 57) :y 0 :baseline 240 :parallax 1.5)]}
- :blackout (assoc (utils/get-texture "black.png")
+ :layers {:day [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "way-back-tree") :x 0 :y 0 :baseline 97)
+ (assoc (utils/atlas->texture atlas "roof") :x (- 320 57) :y 0 :baseline 238 :parallax 1.5)
+ (assoc (utils/atlas->texture atlas "bookstack") :x 244 :y 67 :baseline 190 :origin-x 0 :origin-y 0)]
+ :night [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "way-back-tree") :x 0 :y 0 :baseline 97)
+ (assoc (utils/atlas->texture atlas "roof") :x (- 320 57) :y 0 :baseline 238 :parallax 1.5)]
+ :sunrise [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "way-back-tree") :x 0 :y 0 :baseline 97)
+ (assoc (utils/atlas->texture atlas "roof") :x (- 320 57) :y 0 :baseline 238 :parallax 1.5)]}
+ :blackout (assoc (utils/atlas->texture global-atlas "black")
:x -10 :y -10
:width 340
:height 260 :opacity 0.8
@@ -508,31 +518,33 @@
(particle-effect! magic :allow-completion)
entities)
entities))}]
- :entities {:bird-1 (utils/make-bird screen (as-> [[185 235]
+ :entities {:bird-1 (utils/make-bird screen global-atlas (as-> [[185 235]
[220 225] [210 230] [250 235]] p
(concat p (reverse p))))
:sign (assoc (animation->texture screen sign )
:anim sign
:anim-start 0
- :x 125 :y 138 :baseline 239)
- :bird-2 (utils/make-bird screen (as-> [[220 225] [195 235] [210 230] [250 225]] p
+ :x 125 :y 138 :baseline 237)
+ :bird-2 (utils/make-bird screen global-atlas (as-> [[220 225] [195 235] [210 230] [250 225]] p
(concat p (reverse p))))
:outside-particles (common/make-outside-particles)
- :door (assoc (animation->texture screen door)
+ :door (assoc (animation->texture (assoc screen :total-time 0) door)
:x 160 :y 97 :baseline 99
:open door
:door-sound (utils/load-sound "door.ogg")
:anim-sound-frames {door {1 [:door-sound 0.1]}}
)
- :sword (assoc (utils/get-texture "inside-castle/sword.png")
+ :sword (assoc (utils/atlas->texture atlas "sword")
:x 22
:y 110
:baseline 95)
- :walkie-talkie (assoc (utils/get-texture "inside-castle/walkie-talkie.png")
+ :walkie-talkie (assoc (utils/atlas->texture atlas "walkie-talkie")
+ :label "Walkie-talkie"
+ :cursor :talk
:x 257
:y 135
- :baseline 0
+ :baseline 1
:night-profile :sprite
:script (actions/get-script entities
(actions/talk entities :ego "Let's see if this thing works.")
@@ -543,6 +555,8 @@
:trophy (assoc (animation->texture screen trophy)
:x 230 :y 69 :baseline 191
+ :label "Trophy"
+ :cursor :hand
:anim trophy
:anim-start 0
:script (actions/get-script entities
@@ -556,12 +570,16 @@
(brian-get-to-work entities))
(actions/do-dialogue entities :ego "Can't you give me your trophy of wisdom?"
:game-player "If you want my trophy, you'll have to help me with my riddles."))))
- :books (assoc (utils/get-texture "inside-castle/books.png")
+ :books (assoc (utils/atlas->texture atlas "books")
+ :label "Books"
+ :cursor :hand
:x 230 :y 30 :baseline 191
:script (actions/get-script entities
(walk-to-player entities)
(actions/talk entities :game-player "Don't touch my books!")))
- :game-player (assoc (utils/get-texture "inside-castle/gameplayer.png") :x 266 :y 49 :baseline 191
+ :game-player (assoc (utils/atlas->texture atlas "gameplayer") :x 266 :y 49 :baseline 191
+ :label "Brian O'Brainy"
+ :cursor :talk
:talk-color (color 1.0 0.3 0.4 1.0)
:script (actions/get-script entities (do-game-player-dialogue entities))
:writing-sound (utils/load-sound "inside-castle/writing.ogg")
@@ -651,6 +669,8 @@
game-player-flex {1 [:flex-sound 0.5]}}
:flex game-player-flex)}
:monocle (rooms/make-entity :monocle (assoc (animation->texture screen monocle)
+ :label "A reflective thing"
+ :cursor :hand
:x 209 :y 160 :baseline 240
:origin-x 9
:anim monocle
diff --git a/desktop/src-common/advent/screens/rooms/inside_house.clj b/desktop/src-common/advent/screens/rooms/inside_house.clj
index 03f7e7de..ee2826d1 100644
--- a/desktop/src-common/advent/screens/rooms/inside_house.clj
+++ b/desktop/src-common/advent/screens/rooms/inside_house.clj
@@ -11,36 +11,38 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
+
(defn open-safe [entities]
(actions/play-animation entities :ego :start-squat :stop? false)
(Thread/sleep 500)
(screen! safe/safe-screen :show-screen
- :success (actions/get-script entities
- (Thread/sleep 500)
- (actions/play-animation entities :ego :end-squat)
+ { :success (actions/get-script entities
+ (Thread/sleep 500)
+ (actions/play-animation entities :ego :end-squat)
- (if (actions/has-item? entities :recipe)
- (do
-
- (actions/talk entities :ego "I already took everything interesting from there."))
- (do
- (actions/talk entities :ego "Yes! That worked.")
- (actions/talk entities :ego "Let's see here...")
- (actions/play-animation entities :ego :squat)
- (actions/talk entities :ego "No, that's a recipe to turn someone into a professional dancer...")
- (actions/play-animation entities :ego :squat)
- (actions/talk entities :ego "Here's a recipe to make everything taste like cotton candy. I'll just put that back.")
- (actions/play-animation entities :ego :squat)
- (actions/give entities :recipe)
- (actions/talk entities :ego "Aha! Here it is! I found a recipe for a strength potion!")
- (actions/talk entities :ego "Looks like there's something else in here too...")
- (actions/play-animation entities :ego :squat)
- (actions/give entities :mandrake)
- (actions/talk entities :ego "Weird. It's some kind of root."))))
- :failure (actions/get-script entities
- (Thread/sleep 500)
- (actions/play-animation entities :ego :end-squat)
- (actions/talk entities :ego "I don't think that worked...")))
+ (if (actions/has-item? entities :recipe)
+ (do
+
+ (actions/talk entities :ego "I already took everything interesting from there."))
+ (do
+ (actions/talk entities :ego "Yes! That worked.")
+ (actions/talk entities :ego "Let's see here...")
+ (actions/play-animation entities :ego :squat)
+ (actions/talk entities :ego "No, that's a recipe to turn someone into a professional dancer...")
+ (actions/play-animation entities :ego :squat)
+ (actions/talk entities :ego "Here's a recipe to make everything taste like cotton candy. I'll just put that back.")
+ (actions/play-animation entities :ego :squat)
+ (actions/give entities :recipe)
+ (actions/talk entities :ego "Aha! Here it is! I found a recipe for a strength potion!")
+ (actions/talk entities :ego "Looks like there's something else in here too...")
+ (actions/play-animation entities :ego :squat)
+ (actions/give entities :mandrake)
+ (actions/talk entities :ego "Weird. It's some kind of root."))))
+ :failure (actions/get-script entities
+ (Thread/sleep 500)
+ (actions/play-animation entities :ego :end-squat)
+ (actions/talk entities :ego "I don't think that worked..."))})
(actions/update-state entities #(assoc % :active? false)))
(defn do-wizard-dialogue [entities]
@@ -131,22 +133,23 @@
"Nevermind."
{:run #(actions/do-dialogue entities :ego %)}]}))
-(defn make [screen]
- (let [
- safe-lock (utils/make-anim "inside-house/safe-lock.png" [11 8] 0.1 (flatten [(repeat 20 0) 1 2 1 2 1 2 1 2 1 2 1 1 2 1 2 1 2 1 2 1 2 1 (range 3 20) 20 20 20 20 21 21 21 21 21 20 20 21 21 21 21 21 20 20 20 ]))
- candle (utils/make-anim "inside-house/candle.png" [34 32] 0.2 [1 0 1 2])
- candle-aura (utils/make-anim "inside-house/candle-aura.png" [27 27] 0.2 [0 1 2 3 2 1] )
- experiment-left (utils/flip (utils/make-anim-seq "wizard/experiment" [45 55] 0.075 [0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 2 3 3 3 4 4 5 5 6 6 6 6 6 6 7 8 9 9 10 10 11 11 12 12 12 12 12 12 12 12 12 12 12 13 13 14 14 14 14 14 15 15 16 16 17 17 18 18 18 18 19 20 21 21 21 21 21 21 22 23 22 23 22 23 22 23 23 23 23 23 23 23 23 24 24 24 24 24 24 24 24 24 25 26 27 37 38 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 29 29 29 28 28 28 28 29 29 28 28 28 28 28 28 28 28 30 30 30 30 31 32 33 31 31 31 31 31 31 31 31 34 35 36 36 36 36 36 36 36 36 36] ))]
- (rooms/make :music :inside-fangald
+(defn make [screen atlas global-atlas]
+ (let [safe-lock (utils/make-anim atlas "safe-lock" [11 8] 0.1 (flatten [(repeat 20 0) 1 2 1 2 1 2 1 2 1 2 1 1 2 1 2 1 2 1 2 1 2 1 (range 3 20) 20 20 20 20 21 21 21 21 21 20 20 21 21 21 21 21 20 20 20 ]))
+ candle (utils/make-anim atlas "candle" [34 32] 0.2 [1 0 1 2])
+ candle-aura (utils/make-anim atlas "candle-aura" [27 27] 0.2 [0 1 2 3 2 1] )
+ experiment-left (utils/flip (utils/make-anim-seq global-atlas "wizard/experiment" [45 55] 0.075 [0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 2 3 3 3 4 4 5 5 6 6 6 6 6 6 7 8 9 9 10 10 11 11 12 12 12 12 12 12 12 12 12 12 12 13 13 14 14 14 14 14 15 15 16 16 17 17 18 18 18 18 19 20 21 21 21 21 21 21 22 23 22 23 22 23 22 23 23 23 23 23 23 23 23 24 24 24 24 24 24 24 24 24 25 26 27 37 38 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 29 29 29 28 28 28 28 29 29 28 28 28 28 28 28 28 28 30 30 30 30 31 32 33 31 31 31 31 31 31 31 31 34 35 36 36 36 36 36 36 36 36 36] ))]
+ (rooms/make
:name "Inside house"
:interactions {:down-dir {:box [151 0 320 40]
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(actions/update-state entities #(assoc % :wizard-left? false))
(actions/walk-to entities :ego [237 1] :stop? false :skip-type :end)
(actions/walk-straight-to entities :ego [245 -60])
(actions/transition-background entities :outside-house [257 90] :face :left))
:cursor :down}
:safe {:box [34 70 70 115]
+ :label "MagiSafe 2000"
+ :cursor :hand
:script (actions/get-script entities
(actions/walk-to entities :ego [59 65])
(if (get-in @entities [:room :entities :wizard])
@@ -159,51 +162,58 @@
(actions/talk entities :ego "How did that tune go again?")
(actions/play-safe entities))))}}
:knight {:box [71 70 102 190]
+ :cursor :look
+ :label "Armor"
:script (actions/get-script entities
(actions/talk entities :ego "Maybe when I am an older knight, Gandarf will give me his armor!"))}
:shelves {:box [215 100 320 220]
+ :cursor :look
+ :label "Shelves"
:script (actions/get-script entities
(actions/talk entities :ego "His shelves are full of books and strange ingredients."))}
:window {:box [119 120 203 190]
+ :label "Window"
+ :cursor :look
:script (actions/get-script entities
(actions/talk entities :ego "It's a really big window!"))}}
- :layers [(assoc (utils/get-texture "inside-house/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "inside-house/desk.png") :x 0 :y 0 :baseline 200)
- (assoc (utils/get-texture "inside-house/sillhoute.png") :x 0 :y 0 :baseline 240 :parallax 2.0)
- (assoc (utils/get-texture "inside-house/glow.png") :x 0 :y 0 :baseline 199 :additive? true)]
+ :layers [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "desk") :x 0 :y 0 :baseline 200)
+ (assoc (utils/atlas->texture atlas "sillhoute") :x 0 :y 0 :baseline 240 :parallax 2.0)
+ (assoc (utils/atlas->texture atlas "glow") :x 0 :y 0 :baseline 199 :additive? true)]
:entities {
- :wizard (common/make-wizard screen {:x 228 :y 60 :baseline 160 :scale-x 1.75 :scale-y 1.75 :origin-x 0 :origin-y 0
- :script (actions/get-script entities (do-wizard-dialogue entities))
- :scripts #(condp = %
- :kiss (actions/get-script entities
- (actions/do-dialogue entities
- :wizard "Good job, boy! You saved a damsel in distress."
- :wizard "You have proven yourself worthy in courage."))
- :medal (actions/get-script entities
- (actions/do-dialogue entities
- :wizard "So you beat Captain McHulk at arm wrestling? "
- :wizard "You must have been working out!"))
- :trophy (actions/get-script entities
- (actions/do-dialogue entities
- :wizard "My, my, you have proven your worth in wisdom!"
- :wizard "One day, you'll be as wise as I am!"))
- :recipe (actions/get-script entities
- (actions/do-dialogue entities
- :ego "I probably shouldn't show him that I have his stolen possessions."))
- :frog-legs (actions/get-script entities
- (actions/do-dialogue entities
- :ego "I probably shouldn't show him that I have his stolen possessions."))
- :mandrake (actions/get-script entities
- (actions/do-dialogue entities
- :ego "I probably shouldn't show him that I have his stolen possessions."))
- :flask-1 (actions/get-script entities
- (actions/do-dialogue entities
- :wizard "You can keep the flask."))
- :tune (actions/get-script entities
- (actions/talk entities :ego "I think he already has it memorized."))
- (actions/get-script entities
+ :wizard (common/make-wizard screen global-atlas
+ {:x 228 :y 60 :baseline 160 :scale-x 1.75 :scale-y 1.75 :origin-x 0 :origin-y 0
+ :script (actions/get-script entities (do-wizard-dialogue entities))
+ :scripts #(condp = %
+ :kiss (actions/get-script entities
+ (actions/do-dialogue entities
+ :wizard "Good job, boy! You saved a damsel in distress."
+ :wizard "You have proven yourself worthy in courage."))
+ :medal (actions/get-script entities
(actions/do-dialogue entities
- :wizard "No thank you.")))})
+ :wizard "So you beat Captain McHulk at arm wrestling? "
+ :wizard "You must have been working out!"))
+ :trophy (actions/get-script entities
+ (actions/do-dialogue entities
+ :wizard "My, my, you have proven your worth in wisdom!"
+ :wizard "One day, you'll be as wise as I am!"))
+ :recipe (actions/get-script entities
+ (actions/do-dialogue entities
+ :ego "I probably shouldn't show him that I have his stolen possessions."))
+ :frog-legs (actions/get-script entities
+ (actions/do-dialogue entities
+ :ego "I probably shouldn't show him that I have his stolen possessions."))
+ :mandrake (actions/get-script entities
+ (actions/do-dialogue entities
+ :ego "I probably shouldn't show him that I have his stolen possessions."))
+ :flask-1 (actions/get-script entities
+ (actions/do-dialogue entities
+ :wizard "You can keep the flask."))
+ :tune (actions/get-script entities
+ (actions/talk entities :ego "I think he already has it memorized."))
+ (actions/get-script entities
+ (actions/do-dialogue entities
+ :wizard "No thank you.")))})
:safe-lock (actions/start-animation screen (assoc (animation->texture screen safe-lock) :x 50 :y 92 :baseline 145
:stand safe-lock)
:stand)
@@ -213,6 +223,8 @@
:baseline 200
:anim candle
:anim-start 0
+ :label "Candle"
+ :cursor :look
:script (actions/get-script entities (actions/do-dialogue entities :ego "It's just a candle.")))
:candle-aura (assoc (animation->texture screen candle-aura) :x 172 :y 97 :baseline 239 :additive? true :origin-x 13 :opacity 0.5 :anim candle-aura :anim-start 0)
:candle-smoke (doto (assoc (particle-effect "particles/candle") :x 172 :y 112
@@ -221,16 +233,20 @@
:magic-frog-particle (doto (assoc (particle-effect "particles/magic-frog") :x 230 :y 0
:baseline 241)
(particle-effect! :set-position 237 0))
- :flask (assoc (utils/get-texture "inside-house/flask.png")
+ :flask (assoc (utils/atlas->texture atlas "flask")
:x 265 :y 80 :baseline 240
+ :label "Flask"
+ :cursor :hand
:script (actions/get-script entities
(actions/remove-entity entities :flask)
(actions/give entities :flask-1)
(when (get-in @entities [:room :entities :wizard])
(actions/do-dialogue entities :ego "Hey, you think I could have this flask?"
:wizard "Sure."))))
- :frog-legs (assoc (utils/get-texture "inside-house/frog-legs.png")
+ :frog-legs (assoc (utils/atlas->texture atlas "frog-legs")
:x 180 :y 77 :baseline 240
+ :label "Frog legs"
+ :cursor :hand
:script (actions/get-script entities
(if (get-in @entities [:room :entities :wizard])
(actions/do-dialogue entities :wizard "Hey, I need those frog legs for one of my spells!")
diff --git a/desktop/src-common/advent/screens/rooms/inside_jail.clj b/desktop/src-common/advent/screens/rooms/inside_jail.clj
index 72f30524..f1d3c239 100644
--- a/desktop/src-common/advent/screens/rooms/inside_jail.clj
+++ b/desktop/src-common/advent/screens/rooms/inside_jail.clj
@@ -14,6 +14,7 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn remove-lock [entities]
(-> entities
@@ -121,6 +122,7 @@
:warden "Be a good chap and let me rest.")
(actions/play-animation entities :warden :fall-asleep :stop? false)
(actions/begin-animation entities :warden :sleep)
+
(actions/update-state entities (fn [s] (assoc s :warden-sleeping? true))))}]}))
(defn get-key [ entities]
@@ -215,8 +217,8 @@
-(defn make [screen]
- (let [warden-sheet (texture! (utils/get-texture "inside-jail/warden.png") :split 43 58)
+(defn make [screen atlas global-atlas]
+ (let [warden-sheet (texture! (utils/atlas->texture atlas "warden") :split 43 58)
warden-talk (animation 0.2 (for [i [1 0 1 0 1 0 1 0 0 0 2 0]]
(aget warden-sheet 0 i)))
warden-stand (animation 0.1 (for [i (flatten [(repeat 30 0) 2 (repeat 20 0) 2])]
@@ -225,23 +227,26 @@
(aget warden-sheet 0 i)))
warden-sleep (animation 0.25 (for [i (flatten [ 3 4 3 4 3 4 3 4 3 4 5 5 2 2 2 2 2 2])]
(aget warden-sheet 0 i)))
- candle (utils/make-anim "inside-jail/candle.png" [20 25] 0.1 (range 4))
- candle-aura (utils/make-anim "inside-house/candle-aura.png" [27 27] 0.2 [0 1 2 3 2 1])
- crowbar (utils/make-anim "inside-jail/crowbar.png" [16 33] 0.15 (flatten [(repeat 120 0) [1 2 3 3 2 1]]))]
- (rooms/make :music :inside-antique
- :name "In jail"
+ candle (utils/make-anim atlas "candle" [20 25] 0.1 (range 4))
+ candle-aura (utils/make-anim atlas "candle-aura" [27 27] 0.2 [0 1 2 3 2 1])
+ crowbar (utils/make-anim atlas "crowbar" [16 33] 0.15 (flatten [(repeat 120 0) [1 2 3 3 2 1]]))]
+ (rooms/make :name "In jail"
:sounds {
:squeek (utils/load-sound "inside-jail/squeak.ogg")
:crowbar-sound (utils/load-sound "ego/crowbar.ogg")
}
:interactions {
:lock {:box [172 102 190 124]
+ :label "Lock"
+ :cursor :hand
:script (actions/get-script entities
(actions/walk-to entities :ego [174 80] :face :right)
(actions/play-animation entities :ego :reach)
(actions/talk entities :ego "There's no helping it. It's locked."))
:scripts {:key (actions/get-script entities (open-lock entities))}}
:window {:box [98 110 118 140]
+ :label "Window"
+ :cursor :look
:script (actions/get-script entities
(actions/walk-to entities :ego [102 88] :face :right)
(actions/do-dialogue entities
@@ -269,6 +274,7 @@
(get-in @entities [:room :entities :ego :drop-sound])
0.2)
(actions/update-state entities #(assoc % :dropped-ball? true))
+ (actions/remove-item entities :ball-n-chain)
(actions/do-dialogue entities :ego "Geronimo!!")
(actions/play-sound entities
"inside-jail/guard-crash.ogg"
@@ -285,7 +291,7 @@
(Thread/sleep 300)
(actions/play-animation entities :warden :fall-asleep :stop? false)
(actions/begin-animation entities :warden :sleep)
- (actions/remove-item entities :ball-n-chain)
+
(actions/talk entities :ego "Phew! That was close!"))
(actions/do-dialogue entities :ego "I don't know what to do with that.")))
:sword (actions/get-script entities (actions/talk entities :ego "I wouldn't want to accidentally break the Sword of Blergh."))
@@ -317,6 +323,8 @@
:ego "The door locks without a key."
:ego "If I get caught, I won't be able to get out."))}}
:hay {:box [130 86 177 102]
+ :label "Hay"
+ :cursor :hand
:script (actions/get-script entities
(search-hay entities))
:scripts {:default (actions/get-script entities
@@ -326,6 +334,8 @@
(actions/do-dialogue entities :ego "I'm trying to escape."
:ego "Not help the next bloke who gets trapped here."))}}
:chest {:box [194 62 228 99]
+ :label "Chest"
+ :cursor :hand
:script (actions/get-script entities (touch-chest entities))
:scripts {:key (actions/get-script entities
(if (get-in @entities [:state :opened-bars?])
@@ -337,13 +347,13 @@
(actions/talk entities :ego "Not while I'm in this cell.")))}}
:door {:box [257 62 301 152]
:cursor :down
- :script (actions/get-script entities (leave entities))}
+ :only-script (actions/get-script entities (leave entities))}
}
- :layers [(assoc (utils/get-texture "inside-jail/background.png") :x 0 :y 0 :baseline 0 :night-profile :none)
- (assoc (utils/get-texture "inside-jail/bars.png") :x 0 :y 0 :baseline 165 :night-profile :none)
- (assoc (utils/get-texture "inside-jail/glow.png") :x 0 :y 0 :baseline 240 :additive? true :opacity 0.35 :night-profile :none)
- (assoc (utils/get-texture "inside-jail/fg.png") :x 0 :y 5 :baseline 241 :parallax 1.5 :night-profile :none)]
+ :layers [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0 :night-profile :none)
+ (assoc (utils/atlas->texture atlas "bars") :x 0 :y 0 :baseline 165 :night-profile :none)
+ (assoc (utils/atlas->texture atlas "glow") :x 0 :y 0 :baseline 240 :additive? true :opacity 0.35 :night-profile :none)
+ (assoc (utils/atlas->texture atlas "fg") :x 0 :y 5 :baseline 241 :parallax 1.5 :night-profile :none)]
:hotspots [{:box [121 40 258 44]
:fn (fn [screen entities]
@@ -363,7 +373,7 @@
(common/go-to-jail entities)) entities)
entities)
entities)))}]
- :entities {:warden (assoc (utils/get-texture "inside-jail/warden.png" )
+ :entities {:warden (assoc (utils/atlas->texture atlas "warden" )
:x 40 :y 60 :baseline 166
:stand warden-stand
:talk warden-talk
@@ -382,6 +392,8 @@
18 [:blink 0.15]}
warden-sleep {0 [:inhale 0.1]
10 [:exhale 0.1]}}
+ :label "Warden"
+ :cursor :talk
:script (actions/get-script entities
(cond
(actions/has-item? entities :key) (actions/talk entities :ego "Shh! It's best not to wake him now.")
@@ -390,6 +402,7 @@
(actions/do-dialogue entities
:ego "Yoo-hoo! Mr. Warden?"
:ego "I guess he's really fast asleep!")
+ (actions/update-entities entities (fn [e] (assoc-in e [:room :entities :warden :cursor] :hand)))
(actions/update-state entities #(assoc % :warden-fast-asleep? true)))
:else (do (actions/walk-to entities :ego [103 82])
@@ -399,21 +412,23 @@
:ego "I can't kill him just for doing his job."))
:rope (actions/get-script entities (tie-up-warden entities "I'll tie him up."))
:ball-n-chain (actions/get-script entities (tie-up-warden entities "I'll lock him up."))})
- :chest-top (assoc (utils/get-texture "inside-jail/chest-top.png")
+ :chest-top (assoc (utils/atlas->texture atlas "chest-top")
:x 193 :y (- 240 165) :baseline 166
:origin-x 0 :origin-y 0
:night-profile :none
- :open (animation 0.8 [(utils/get-texture "inside-jail/chest-top-open.png")])
- :close (animation 0.8 [(utils/get-texture "inside-jail/chest-top.png")]))
- :ball-n-chain (assoc (utils/get-texture "inside-jail/ball-n-chain.png")
+ :open (animation 0.8 [(utils/atlas->texture atlas "chest-top-open")])
+ :close (animation 0.8 [(utils/atlas->texture atlas "chest-top")]))
+ :ball-n-chain (assoc (utils/atlas->texture atlas "ball-n-chain")
:x 80 :y 80 :baseline 160
:night-profile :none
+ :label "Ball-n-chain"
+ :cursor :hand
:script (actions/get-script entities
(actions/walk-to entities :ego [103 83] :face :left)
(actions/play-animation entities :ego :squat)
(actions/remove-entity entities :ball-n-chain)
(actions/give entities :ball-n-chain)))
- :moveable-bars (assoc (utils/get-texture "inside-jail/moveable-bars.png")
+ :moveable-bars (assoc (utils/atlas->texture atlas "moveable-bars")
:night-profile :none
:x 132 :y 77 :baseline 163)
:candle (assoc (animation->texture screen candle)
@@ -423,6 +438,8 @@
:night-profile :none)
:candle-aura (assoc (animation->texture screen candle-aura) :x 215 :y 130 :baseline 2
:additive? true :origin-x 13 :origin-y 13 :opacity 0.5 :anim candle-aura :anim-start 0 :night-profile :none
+ :label "Candle"
+ :cursor :look
:script (actions/get-script entities (actions/talk entities :ego "Just a candle."))
:scripts {:default (actions/get-script entities (actions/talk entities :ego "I might catch the place on fire."))})
:candle-smoke (doto (assoc (particle-effect "particles/candle") :x 215 :y 130
@@ -434,6 +451,8 @@
:x 300 :y 60 :baseline 175
:night-profile :none
+ :label "Crowbar"
+ :cursor :hand
:script (actions/get-script entities
(if (get-in @entities [:state :opened-bars?])
(do (actions/walk-to entities :ego [295 55] :face :right)
@@ -442,7 +461,7 @@
(actions/give entities :crowbar)
(actions/talk entities :ego "It's a crowbar."))
(actions/talk entities :ego "I can't reach it."))))
- :closed-window (assoc (utils/get-texture "inside-jail/window.png")
+ :closed-window (assoc (utils/atlas->texture atlas "window")
:night-profile :none
:x 99 :y 111 :baseline 128)
:guard { :object nil :width 100 :height 100 :x 70 :y 55 :talk-color (color 0.2 0.6 1.0 1.0)}}
@@ -459,8 +478,10 @@
(if (actions/has-obtained? entities :crowbar)
(update-in entities [:room :entities] #(dissoc % :crowbar))
entities)
- (if (get-in entities [:state :warden-sleeping?])
- (update-in entities [:room :entities :warden] #(actions/start-animation % :sleep))
+ (if (get-in entities [:state :warden-fast-asleep?])
+ (-> entities
+ (update-in [:room :entities :warden] #(actions/start-animation % :sleep))
+ (update-in [:room :entities :warden] assoc :cursor :hand))
entities)
(if (get-in entities [:state :opened-bars?])
(update-in (remove-lock entities)
diff --git a/desktop/src-common/advent/screens/rooms/inside_stash.clj b/desktop/src-common/advent/screens/rooms/inside_stash.clj
index 0059e879..1ce2d798 100644
--- a/desktop/src-common/advent/screens/rooms/inside_stash.clj
+++ b/desktop/src-common/advent/screens/rooms/inside_stash.clj
@@ -8,6 +8,7 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn bust-chest [entities]
(if (get-in @entities [:state :broke-lock?])
@@ -54,21 +55,24 @@
-(defn make [screen]
- (let [candle-flame (utils/make-anim "inside-stash/candle.png" [4 4] 0.1 (range 4))
- candle-aura (utils/make-anim "inside-house/candle-aura.png" [27 27] 0.2 [0 1 2 3 2 1] )
+(defn make [screen atlas global-atlas]
+ (let [[screen atlas] (utils/acquire-atlas screen "packed/inside-stash.atlas")
+ candle-flame (utils/make-anim atlas "candle" [4 4] 0.1 (range 4))
+ candle-aura (utils/make-anim atlas "candle-aura" [27 27] 0.2 [0 1 2 3 2 1] )
]
- (rooms/make :music {:day :secret-hideout :night :secret-hideout}
+ (rooms/make
:name "Inside stash"
:interactions
{:left-dir {:box [91 60 125 140]
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(actions/walk-straight-to entities :ego [118 96])
(actions/transition-background entities :outside-jail [200 97])
(actions/walk-straight-to entities :ego [167 100]))
:cursor :left}
:candle {:box [160 130 170 140]
+ :label "Candle"
+ :cursor :look
:script (actions/get-script
entities
(actions/talk entities :ego "Just a candle."))
@@ -85,14 +89,16 @@
:default (actions/get-script entities
(actions/talk entities :ego "Momma always told me not to play with fire."))}}
:chest {:box [151 107 180 124]
+ :label "Chest"
+ :cursor :hand
:script (actions/get-script entities (explore-chest entities))
:scripts {:sword (actions/get-script entities (actions/talk entities :ego "There's not enough room to swing my sword here."))
:crowbar (actions/get-script entities
(bust-chest entities))
:key (actions/get-script entities
(unlock-chest entities))}}}
- :layers [(assoc (utils/get-texture "inside-stash/background.png") :x 0 :y 0 :baseline 0 :night-profile :none)]
- :entities {:lid (assoc (utils/get-texture "inside-stash/lid.png")
+ :layers [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0 :night-profile :none)]
+ :entities {:lid (assoc (utils/atlas->texture atlas "lid")
:x 156 :y 116 :baseline 125 :night-profile :none)
:candle-flame (assoc (animation->texture screen candle-flame)
:x 165 :y 135 :baseline 1
diff --git a/desktop/src-common/advent/screens/rooms/outside_castle.clj b/desktop/src-common/advent/screens/rooms/outside_castle.clj
index 754c460d..88352bf8 100644
--- a/desktop/src-common/advent/screens/rooms/outside_castle.clj
+++ b/desktop/src-common/advent/screens/rooms/outside_castle.clj
@@ -12,6 +12,7 @@
[play-clj.math :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn flies-vol [entities]
(utils/proximity-volume entities [201 175] :scale 0.20))
@@ -262,10 +263,16 @@
:frankie "And some gold..."
:frankie "And what's this?")
(actions/play-animation entities :frankie :reach)
+ (actions/remove-item entities :slingshot)
+ (actions/remove-item entities :medal)
+ (actions/remove-item entities :trophy)
+
(actions/do-dialogue entities
:frankie "The Slinger's Shot?"
:ego "No, not the Slinger's Shot!"
:frankie "Looks like we hit the jackpot tonight, boys!")
+ (actions/remove-item entities :flask-1-strength)
+
(frankie-comment-on-item entities)
(actions/update-state entities #(assoc % :bubba-gone? true))
(actions/do-dialogue entities
@@ -278,10 +285,6 @@
:frankie "Before we decide to take all of your stuff."
:ego "But I need that slingshot!"
:frankie "Too bad. Move along.")
- (actions/remove-item entities :flask-1-strength)
- (actions/remove-item entities :medal)
- (actions/remove-item entities :trophy)
- (actions/remove-item entities :slingshot)
(actions/walk-to entities :ego [181 79])
(actions/do-dialogue entities
@@ -324,25 +327,24 @@
(actions/talk entities :ego "Eww! He slobbered on my hand.")
(actions/give entities :slobber))
-(defn make [screen]
- (let [peddler-sheet (texture! (utils/get-texture "outside-castle/peddler-talk.png" ) :split 18 36)
+(defn make [screen atlas global-atlas]
+ (let [peddler-sheet (texture! (utils/atlas->texture atlas "peddler-talk" ) :split 18 36)
peddler-talk (animation 0.18 (for [i (flatten [2 3 2 3 2 3 6 1 0 1 0 1 0 1 0 1 2 3 2 3 2 3 6 4 5 4 5 4 5 4 5])]
(aget peddler-sheet 0 i)))
peddler-stand (animation 0.2 (for [i (flatten [(repeat 8 0) 6 (repeat 15 0) 6 (repeat 5 0) 4 5 4 5 4 5 (repeat 10 0)] )]
(aget peddler-sheet 0 i)))
- balloon-sheet (texture! (utils/get-texture "outside-castle/balloons.png") :split 20 36)
+ balloon-sheet (texture! (utils/atlas->texture atlas "balloons") :split 20 36)
balloon-stand (animation 0.25 (for [i [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 0 1 2 1 0 1 2 1 0 1 2 1 0 1 2]]
(aget balloon-sheet 0 i)))
- steer-sheet (texture! (utils/get-texture "outside-castle/steer.png") :split 50 35)
+ steer-sheet (texture! (utils/atlas->texture atlas "steer") :split 50 35)
steer-stand (animation 0.2 (for [i [0 0 0 0 0 0 0 0 0 1 0 2 0 1 0 2 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0 0]]
(aget steer-sheet 0 i)))
- flies-stand (utils/make-anim "outside-castle/flies.png" [15 15] 0.075 (flatten (repeat 2 [0 1 2 1])))]
- (rooms/make :music {:day :town-2 :night :night :sunrise :night}
- :name "Outside castle"
+ flies-stand (utils/make-anim atlas "flies" [21 21] 0.075 (flatten (repeat 2 [0 1 2 1])))]
+ (rooms/make :name "Outside castle"
:interactions
{:right-dir {:box [280 40 320 140]
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(actions/walk-to entities :ego [310 80] :stop? false :skip-type :end)
(actions/walk-straight-to entities :ego [340 80])
@@ -350,17 +352,23 @@
(actions/walk-straight-to entities :ego [30 80]))
:cursor :right}
:door {:box [66 180 85 195]
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(go-through-gate entities))
:cursor :left}
:castle {:box [0 181 100 240]
+ :cursor :look
+ :label "Castle"
:script (actions/get-script entities
(actions/do-dialogue entities :ego "That's the town of Remington in the distance."))}
:wares {:box [69 75 97 110]
+ :cursor :look
+ :label "Wares"
:script (actions/get-script entities
(actions/talk entities :ego "That peddler has all kinds of strange trinkets."))}
:garden {:box [103 170 178 200]
+ :label "Garden"
+ :cursor :hand
:script (actions/get-script
entities
(if (actions/has-obtained? entities :carrot)
@@ -373,29 +381,31 @@
(actions/give entities :carrot))))}}
:flies-sound {:sound (utils/load-sound "outside-castle/flies2.ogg")
:id nil}
- :layers {:day [(assoc (utils/get-texture "outside-castle/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "outside-castle/blanket.png") :x 60 :y (- 240 173) :baseline 1)
- (assoc (utils/get-texture "outside-castle/brush-bl.png") :origin-x 25 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 25 :y 0 :baseline 240 :parallax 1.2)
- (assoc (utils/get-texture "outside-castle/brush-br.png") :origin-x 88 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 315 :y 0 :baseline 240 :parallax 1.2)
- (assoc (utils/get-texture "outside-castle/walk-behind.png") :x 0 :y 0 :baseline 69)]
- :night [(assoc (utils/get-texture "outside-castle/background.png") :x 0 :y 0 :baseline 0)
+ :layers {:day [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "blanket") :x 60 :y (- 240 173) :baseline 1)
+ (assoc (utils/atlas->texture atlas "brush-bl") :origin-x 25 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 25 :y 0 :baseline 240 :parallax 1.2)
+ (assoc (utils/atlas->texture atlas "brush-br") :origin-x 88 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 315 :y 0 :baseline 240 :parallax 1.2)
+ (assoc (utils/atlas->texture atlas "walk-behind") :x 0 :y 0 :baseline 69)]
+ :night [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "outside-castle/brush-bl.png") :origin-x 25 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 25 :y 0 :baseline 240 :parallax 1.2)
- (assoc (utils/get-texture "outside-castle/brush-br.png") :origin-x 88 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 315 :y 0 :baseline 240 :parallax 1.2)
- (assoc (utils/get-texture "outside-castle/walk-behind.png") :x 0 :y 0 :baseline 69)]
- :sunrise [(assoc (utils/get-texture "outside-castle/background.png") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "brush-bl") :origin-x 25 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 25 :y 0 :baseline 240 :parallax 1.2)
+ (assoc (utils/atlas->texture atlas "brush-br") :origin-x 88 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 315 :y 0 :baseline 240 :parallax 1.2)
+ (assoc (utils/atlas->texture atlas "walk-behind") :x 0 :y 0 :baseline 69)]
+ :sunrise [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "outside-castle/brush-bl.png") :origin-x 25 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 25 :y 0 :baseline 240 :parallax 1.2)
- (assoc (utils/get-texture "outside-castle/brush-br.png") :origin-x 88 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 315 :y 0 :baseline 240 :parallax 1.2)
- (assoc (utils/get-texture "outside-castle/walk-behind.png") :x 0 :y 0 :baseline 69)]}
+ (assoc (utils/atlas->texture atlas "brush-bl") :origin-x 25 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 25 :y 0 :baseline 240 :parallax 1.2)
+ (assoc (utils/atlas->texture atlas "brush-br") :origin-x 88 :origin-y 20 :scale-x 1.0 :scale-y 1.0 :x 315 :y 0 :baseline 240 :parallax 1.2)
+ (assoc (utils/atlas->texture atlas "walk-behind") :x 0 :y 0 :baseline 69)]}
:entities {:peddler (actions/start-animation screen
- (assoc (utils/get-texture "outside-castle/peddler.png") :x 110 :y 90 :baseline 150 :anim nil
+ (assoc (utils/atlas->texture atlas "peddler") :x 110 :y 90 :baseline 150 :anim nil
:anim-sound-frames {peddler-stand {8 [:blink 0.3 0.8]
24 [:blink 0.3 0.8]
30 [:scratch 0.15]}
peddler-talk {23 [:scratch 0.15]
6 [:blink 0.3 0.8]
22 [:blink 0.3 0.8]}}
+ :cursor :talk
+ :label "Peddler"
:scratch (utils/load-sound "outside-castle/scratch.ogg")
:talk peddler-talk :stand peddler-stand
:talk-color (color 1.0 0.9 0.4 1.0)
@@ -418,7 +428,9 @@
:peddler "No, I have no use for it."))))
:stand)
- :steer (actions/start-animation screen (assoc (animation->texture screen steer-stand) :x 203 :y 155 :baseline 80
+ :steer (actions/start-animation screen (assoc (animation->texture screen steer-stand) :x 203 :y 151 :baseline 80
+ :label "Angus, the buff bull"
+ :cursor :hand
:stand steer-stand
:night-profile :sprite
:moo (utils/load-sound "outside-castle/moo.ogg")
@@ -453,12 +465,14 @@
(assoc (animation->texture screen balloon-stand)
:x 75
:y 100
+ :cursor :look
+ :label "Balloons"
:baseline 140
:stand balloon-stand
:script (actions/get-script entities
(actions/talk entities :ego "Those look like the choicest of balloons.")))
:stand)
- :bird (utils/make-bird screen (as-> [[82 235] [134 215] [185 235] [165 238]
+ :bird (utils/make-bird screen global-atlas (as-> [[82 235] [134 215] [185 235] [165 238]
[220 225] [210 230] [250 235]] p
(concat p (reverse p))))
@@ -466,7 +480,9 @@
:outside-particles (common/make-outside-particles)
:flies (assoc (animation->texture screen flies-stand)
:x 201
- :y 175
+ :y 178
+ :label "Flies"
+ :cursor :look
:anim flies-stand
:anim-start 0
:baseline 240
@@ -487,7 +503,9 @@
:script (actions/get-script entities
(actions/talk entities :ego "Those flies seem to be attracted to Angus' stench."))
)}
- :note (rooms/make-entity :note (assoc (utils/get-texture "outside-castle/note.png")
+ :note (rooms/make-entity :note (assoc (utils/atlas->texture atlas "note")
+ :label "Bingo card"
+ :cursor :hand
:x 198 :y 66 :baseline 174
:script (actions/get-script entities
(actions/walk-to entities :ego [210 79] :face :left)
diff --git a/desktop/src-common/advent/screens/rooms/outside_house.clj b/desktop/src-common/advent/screens/rooms/outside_house.clj
index 456e5588..426cf033 100644
--- a/desktop/src-common/advent/screens/rooms/outside_house.clj
+++ b/desktop/src-common/advent/screens/rooms/outside_house.clj
@@ -16,6 +16,7 @@
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn dawn-fade [entities]
@@ -121,7 +122,7 @@
(actions/play-animation entities :ego :reach-stop :stop? true)
- (actions/remove-item entities :slingshot)
+ (actions/remove-item entities :slingshot :quiet? true )
(actions/give entities :magic-slingshot)
(actions/do-dialogue entities :ego "It worked!")
@@ -194,9 +195,7 @@
(particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :reset)
(particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :start)
(Thread/sleep 1500)
- (actions/transition-background entities :outside-house [257 90] :face :left)
- (dotimes [_ 160]
- (particle-effect! (get-in @entities [:rooms :inside-house :entities :magic-frog-particle]) :update 0.2)))
+ (actions/transition-background entities :outside-house [257 90] :face :left))
(defn do-prophecy [entities]
{:run #(do (actions/respond entities %
@@ -550,10 +549,10 @@
(/ (:delta-time screen)
(/ 1.0 60.0)))
speed (if (< delta-x 0) (- speed) speed)
- moved-x (if (< (Math/abs delta-x) speed)
+ moved-x (if (< (Math/abs (int delta-x)) speed)
target-x
(* speed (/ delta-x delta-x) ))]
- (if (< (Math/abs delta-x) speed)
+ (if (< (Math/abs (int delta-x)) speed)
(actions/start-animation screen
(dissoc e :target-x)
:stand)
@@ -604,32 +603,32 @@
(actions/talk entities :ego "That's a big cauldron!"))))
-(defn make [screen]
- (let [sheep-stand-sheet (texture! (utils/get-texture "outsidehouse/sheep-anim.png") :split 33 21)
- sheep-walk-sheet (texture! (utils/get-texture "outsidehouse/sheep-walk.png") :split 33 21)
- lamb-walk-sheet (texture! (utils/get-texture "outsidehouse/lamb-walk.png") :split 27 28)
+(defn make [screen atlas global-atlas]
+ (let [sheep-stand-sheet (texture! (utils/atlas->texture atlas "sheep-anim") :split 33 21)
+ sheep-walk-sheet (texture! (utils/atlas->texture atlas "sheep-walk") :split 33 21)
+ lamb-walk-sheet (texture! (utils/atlas->texture atlas "lamb-walk") :split 27 28)
sheep-stand (animation 0.15 (for [i (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 2 1 (repeat 25 11) (repeat 15 12)])]
(aget sheep-stand-sheet 0 i)))
- sheep-1 (utils/make-anim "outsidehouse/sheep-1.png" [33 21] 0.15 (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 2 1 (repeat 25 0) (repeat 15 9)]))
- sheep-2 (utils/make-anim "outsidehouse/sheep-2.png" [33 21] 0.15 (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 2 1 (repeat 25 0) (repeat 15 9)]))
- sheep-3 (utils/make-anim "outsidehouse/sheep-3.png" [33 21] 0.15 (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 2 1 (repeat 25 0) (repeat 15 9)]))
- door (utils/make-anim "outsidehouse/door.png" [24 58] 0.15 (flatten [(range 4) 3 3 3 3 3 3 3]))
+ sheep-1 (utils/make-anim atlas "sheep-1" [33 21] 0.15 (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 2 1 (repeat 25 0) (repeat 15 9)]))
+ sheep-2 (utils/make-anim atlas "sheep-2" [33 21] 0.15 (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 2 1 (repeat 25 0) (repeat 15 9)]))
+ sheep-3 (utils/make-anim atlas "sheep-3" [33 21] 0.15 (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 2 1 (repeat 25 0) (repeat 15 9)]))
+ door (utils/make-anim atlas "door" [24 58] 0.15 (flatten [(range 4) 3 3 3 3 3 3 3]))
+ door-closed (utils/make-anim atlas "door" [24 58] 0.15 [0])
sheep-walk (animation 0.05 (for [i (range 6)]
(aget sheep-walk-sheet 0 i)))
- butterfly-stand (utils/make-anim "butterfly.png" [7 7] 0.1 [0 1])
- cauldron (utils/make-anim "outsidehouse/cauldron.png" [50 38] 0.15 (range 4))
- charcoal (utils/make-anim-seq "outsidehouse/charcoal" [18 18] 0.25 (range 4))
+ butterfly-stand (utils/make-anim atlas "butterfly" [7 7] 0.1 [0 1])
+ cauldron (utils/make-anim atlas "cauldron" [50 38] 0.15 (range 4))
+ charcoal (utils/make-anim-seq atlas "charcoal" [24 18] 0.25 (range 4))
scaler (utils/scaler-fn-with-baseline 110 0.10 1.00)
lamb-stand (aget lamb-walk-sheet 0 0)
lamb-walk (animation 0.075 (for [i (range 4)]
(aget lamb-walk-sheet 0 i)))]
- (rooms/make :music {:day :town-2 :night :night}
- :name "Outside house"
+ (rooms/make :name "Outside house"
:update-fn jump-around
:cauldron-sound {:object nil :sound (utils/load-sound "outsidehouse/cauldron.ogg")}
:interactions
{:door {:box [250 100 281 160]
- :script
+ :only-script
(actions/get-script
entities
(actions/walk-to entities :ego [257 90] :face :right :skip-type :end)
@@ -646,7 +645,7 @@
:else
(do (actions/play-animation entities :door :open)
(actions/transition-background entities :inside-house [237 0] :between (fn [s e]
- (if (= 1 (rand-int 2))
+ (if (= 1 (rand-int 5))
(assoc-in e [:room :entities :experiment] (get-in e [:room :experiment]))
e)))
(when (get-in @entities [:room :entities :experiment])
@@ -660,43 +659,45 @@
:cursor :right}
:right-dir {:box [220 141 320 204]
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(actions/walk-to entities :ego [244 150] :skip-type :end)
(actions/transition-background entities :behind-house [122 140])
(actions/walk-to entities :ego [172 122]))
:cursor :right}
:up-dir {:box [105 180 203 240]
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(actions/walk-to entities :ego [137 204] :skip-type :end)
(actions/transition-background entities :cat-tree [223 -51])
(actions/walk-straight-to entities :ego [200 10]))
:cursor :up}
:left-dir {:box [0 40 40 140]
- :script (actions/get-script
+ :only-script (actions/get-script
entities
(walk-to-castle entities))
:cursor :left}}
- :layers {:day [(assoc (utils/get-texture "outsidehouse/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "outsidehouse/house.png") :x 0 :y 0 :baseline 122)
- (assoc (utils/get-texture "outsidehouse/fence.png") :x 0 :y 0 :baseline 93)
+ :layers {:day [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "house") :x 0 :y 0 :baseline 122)
+ (assoc (utils/atlas->texture atlas "fence") :x 0 :y 0 :baseline 93)
- (assoc (utils/get-texture "outsidehouse/background-trees.png") :x 0 :y 0 :baseline 44)
- (assoc (utils/get-texture "outsidehouse/fg1.png") :x 0 :y 0 :baseline 1000 :parallax 1.5)
- (assoc (utils/get-texture "outsidehouse/fg2.png") :x (- 320 55) :y 0 :baseline 1000 :parallax 1.5)]
- :night [(assoc (utils/get-texture "outsidehouse/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "outsidehouse/house.png") :x 0 :y 0 :baseline 122)
- (assoc (utils/get-texture "outsidehouse/fence.png") :x 0 :y 0 :baseline 93)
+ (assoc (utils/atlas->texture atlas "background-trees") :x 0 :y 0 :baseline 44)
+ (assoc (utils/atlas->texture atlas "fg1") :x 0 :y 0 :baseline 1000 :parallax 1.5)
+ (assoc (utils/atlas->texture atlas "fg2") :x (- 320 55) :y 0 :baseline 1000 :parallax 1.5)]
+ :night [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "house") :x 0 :y 0 :baseline 122)
+ (assoc (utils/atlas->texture atlas "fence") :x 0 :y 0 :baseline 93)
- (assoc (utils/get-texture "outsidehouse/background-trees.png") :x 0 :y 0 :baseline 44)
- (assoc (utils/get-texture "outsidehouse/fg1.png") :x 0 :y 0 :baseline 1000 :parallax 1.5)
- (assoc (utils/get-texture "outsidehouse/fg2.png") :x (- 320 55) :y 0 :baseline 1000 :parallax 1.5)]}
+ (assoc (utils/atlas->texture atlas "background-trees") :x 0 :y 0 :baseline 44)
+ (assoc (utils/atlas->texture atlas "fg1") :x 0 :y 0 :baseline 1000 :parallax 1.5)
+ (assoc (utils/atlas->texture atlas "fg2") :x (- 320 55) :y 0 :baseline 1000 :parallax 1.5)]}
:entities {:sheep (actions/start-animation screen
(assoc (animation->texture screen sheep-stand) :x 38 :y 160 :baseline 80
[:stand 1] sheep-1
[:stand 2] sheep-2
[:stand 3] sheep-3
+ :label "Sheep"
+ :cursor :hand
:origin-y 3
:origin-x 6
:scale-x (scaler [38 160])
@@ -751,7 +752,7 @@
(if (is-sheep-close? @entities)
(do (walk-to-sheep entities)
(actions/play-animation entities :ego :milk)
- (actions/remove-item entities :flask-1)
+ (actions/remove-item entities :flask-1 :quiet? true)
(actions/give entities :flask-1-with-milk)
(actions/talk entities :ego "Sheep's milk.")
)
@@ -785,30 +786,32 @@
:outside-particles (common/make-outside-particles)
- :magic (assoc (doto (particle-effect "particles/magic") )
+ :magic (assoc (particle-effect "particles/magic")
:x 153
:y 105
:baseline 238)
- :door (assoc (animation->texture screen door)
- :x 252 :y 88 :baseline 122
+ :door (assoc (animation->texture screen door-closed)
+ :x 252 :y 88 :baseline 123
:open door
:door-sound (utils/load-sound "door.ogg")
:anim-sound-frames {door {1 [:door-sound 0.1]}}
)
- :lamb (assoc (utils/get-texture "outsidehouse/lamb.png")
- :x 10 :y 163 :baseline 77
- :right {:stand (animation 0.1 [lamb-stand])
- :walk lamb-walk}
-
- :left {:stand (utils/flip (animation 0.1 [lamb-stand]))
- :walk (utils/flip lamb-walk)}
- :scale-x (scaler [10 163])
- :scale-y (scaler [10 163])
- :script (actions/get-script entities
- (actions/talk entities :ego "Aww, it's a newborn lamb!"))
- :scripts {:carrot (actions/get-script entities (actions/talk entities :ego "I think it's still nursing."))
- :grass (actions/get-script entities (actions/talk entities :ego "I think it's still nursing."))
- :sword (actions/get-script entities (actions/talk entities :ego "I prefer to let the butcher make lamb chops."))})
+ :lamb (assoc (utils/atlas->texture atlas "lamb")
+ :cursor :look
+ :label "Baby lamb"
+ :x 10 :y 163 :baseline 77
+ :right {:stand (animation 0.1 [lamb-stand])
+ :walk lamb-walk}
+
+ :left {:stand (utils/flip (animation 0.1 [lamb-stand]))
+ :walk (utils/flip lamb-walk)}
+ :scale-x (scaler [10 163])
+ :scale-y (scaler [10 163])
+ :script (actions/get-script entities
+ (actions/talk entities :ego "Aww, it's a newborn lamb!"))
+ :scripts {:carrot (actions/get-script entities (actions/talk entities :ego "I think it's still nursing."))
+ :grass (actions/get-script entities (actions/talk entities :ego "I think it's still nursing."))
+ :sword (actions/get-script entities (actions/talk entities :ego "I prefer to let the butcher make lamb chops."))})
:butterfly (assoc (animation->texture screen butterfly-stand)
:x 161
:y 218
@@ -820,10 +823,12 @@
(let [speed 0.009
pos-f (- (* (:total-time screen) speed) (int (* (:total-time screen) speed)))
v (vector-2 0 0)
- a (catmull-rom-spline! (:path entity) :value-at v pos-f)]
+ a (catmull-rom-spline! ^CatmullRomSpline (:path entity) :value-at v pos-f)]
(assoc entity :x (vector-2! v :x) :y (vector-2! v :y)))))}
:cauldron (rooms/make-entity :cauldron (assoc (animation->texture screen cauldron)
+ :cursor :look
:x 139 :y 73 :baseline 167
+ :label "Magical cauldron"
:anim cauldron
:anim-start 0
:night-profile :none
@@ -832,10 +837,12 @@
:scripts put-something-in-cauldron))
:charcoal (rooms/make-entity :charcoal
(assoc (animation->texture screen charcoal)
+ :cursor :hand
+ :label "Charcoal"
:anim charcoal
:anim-start 0
:night-profile :none
- :x 125 :y 73 :baseline 167
+ :x 119 :y 73 :baseline 167
:script (actions/get-script entities
(actions/walk-to entities :ego [120 73])
(actions/play-animation entities :ego :start-squat-2 :stop? false)
@@ -846,14 +853,16 @@
(actions/talk entities :ego "It's a small, sharp piece of charcoal.")
)
))
- :wizard (rooms/make-entity :wizard (common/make-wizard screen {:x 190 :y 78 :baseline 162 :scale-x 1.2 :scale-y 1.2
+ :wizard (rooms/make-entity :wizard (common/make-wizard screen global-atlas {:x 190 :y 78 :baseline 162 :scale-x 1.2 :scale-y 1.2
:script (actions/get-script entities (talk-to-gandarf-outside entities))
:scripts {:default (actions/get-script entities (actions/talk entities :wizard "No time for that!"))
:sword (actions/get-script entities (actions/do-dialogue entities
:wizard "The Sword of Blergh!"
:wizard "Good job, Tick."))}}))
- :note (rooms/make-entity :note (assoc (utils/get-texture "outsidehouse/note.png")
+ :note (rooms/make-entity :note (assoc (utils/atlas->texture atlas "note")
:x 277 :y 74 :baseline 160
+ :label "Paper airplane"
+ :cursor :hand
:night-profile :none
:script (actions/get-script entities
(actions/walk-to entities :ego [280 80] :face :right)
diff --git a/desktop/src-common/advent/screens/rooms/outside_jail.clj b/desktop/src-common/advent/screens/rooms/outside_jail.clj
index 7b6f3a22..e7bd5424 100644
--- a/desktop/src-common/advent/screens/rooms/outside_jail.clj
+++ b/desktop/src-common/advent/screens/rooms/outside_jail.clj
@@ -9,6 +9,7 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn add-spear-if-necessary [entities]
(if (and (not (actions/has-obtained? entities :spear))
@@ -93,19 +94,19 @@
(actions/walk-straight-to entities :ego [142 96])
(actions/talk entities :ego "This must be Frankie Rockfist's secret stash!")))
-(defn make [screen]
- (let [guard-sheet (texture! (utils/get-texture "inside-cafeteria/ladder-guard.png") :split 37 87)
+(defn make [screen atlas global-atlas]
+ (let [guard-sheet (texture! (utils/atlas->texture atlas "guard") :split 37 87)
guard-stand (animation 0.1 [(aget guard-sheet 0 0)])
guard-talk (animation 0.2 (for [i [0 0 0 0 1 0 0 1]] (aget guard-sheet 0 i)))
- guard-sleep (utils/make-anim "outside-jail/guard-sleep.png" [43 67] 0.1 (range 4))
- open-stash (utils/make-anim "outside-jail/open-stash.png" [58 41] 0.075 (reverse (range 5)))
- close-stash (utils/make-anim "outside-jail/open-stash.png" [58 41] 0.075 (range 5))
- candle-flame (utils/make-anim "outside-jail/candle.png" [20 25] 0.075 (range 4))
- candle-aura (utils/make-anim "outside-jail/candle-aura2.png" [135 135] 0.3 [0 1 2 1] )]
- (rooms/make :music {:day :town-1 :night :night}
+ guard-sleep (utils/make-anim atlas "guard-sleep" [43 67] 0.1 (range 4))
+ open-stash (utils/make-anim atlas "open-stash" [58 41] 0.075 (reverse (range 5)))
+ close-stash (utils/make-anim atlas "open-stash" [58 41] 0.075 (range 5))
+ candle-flame (utils/make-anim atlas "candle" [20 25] 0.075 (range 4))
+ candle-aura (utils/make-anim atlas "candle-aura2" [135 135] 0.3 [0 1 2 1] )]
+ (rooms/make
:name "Fountain"
:interactions {:down-dir {:box [30 0 227 40]
- :script (actions/get-script entities
+ :only-script (actions/get-script entities
(actions/walk-to entities :ego [159 5] :skip-type :end :stop? false)
(actions/walk-straight-to entities :ego [159 -20])
(actions/transition-background entities :inside-castle [92 150])
@@ -113,24 +114,34 @@
(actions/walk-to entities :ego [159 74] :skip-type :end))
:cursor :down}
:door {:box [22 42 46 124]
- :script (actions/get-script entities
+ :cursor :left
+ :only-script (actions/get-script entities
(if (= :night (get-in @entities [:state :time]))
(actions/talk entities :ego "I do NOT want to go back in there!")
(do (actions/walk-to entities :ego [50 46])
(actions/talk entities :warden "NO VISITORS!"))))}
:window {:box [62 175 80 212]
+ :label "Window"
+ :cursor :look
+
:script (actions/get-script entities
(if (= :night (get-in @entities [:state :time]))
(actions/do-dialogue entities :ego "Boy am I glad to be out of there!"
:ego "They didn't even give me my one telephone call!")
(actions/talk entities :ego "I wonder if anyone is imprisoned up there?")))}
:sign {:box [5 173 61 199]
+ :label "Sign"
+ :cursor :look
:script (actions/get-script entities
(actions/talk entities :ego "J.A.I.L. Jail. Can't you read?"))}
:my-house {:box [89 128 118 179]
+ :label "House"
+ :cursor :look
:script (actions/get-script entities
(actions/talk entities :ego "That's my house. I'd rather play outside."))}
:sherrif-house {:box [138 143 160 168]
+ :label "Sherriff's house"
+ :cursor :look
:script (actions/get-script entities
(actions/do-dialogue entities
:ego "That's the Sheriff's house."
@@ -139,6 +150,8 @@
:ego "Or windows."
:ego "What's the big deal?"))}
:mchulk-house {:box [223 137 282 172]
+ :label "Captain McHulk's house"
+ :cursor :look
:script (actions/get-script entities
(actions/do-dialogue entities
:ego "That's Captain McHulk's house!"
@@ -146,6 +159,8 @@
:ego "If only I could be as strong as he is one day."
))}
:stump {:box [205 68 251 100]
+ :label "Stump"
+ :cursor :hand
:script (actions/get-script entities
(actions/walk-to entities :ego [170 71] :face :right)
(actions/walk-straight-to entities :ego [188 71] :face :right)
@@ -178,6 +193,8 @@
:frog-legs (actions/get-script entities (actions/talk entities :ego "They're already chopped up!"))
:broken-clock (actions/get-script entities (actions/talk entities :ego "It's already split in half!"))}}
:lever {:box [3 72 20 90]
+ :label "Candle"
+ :cursor :hand
:script (actions/get-script entities
(interact-with-lever entities))
:scripts {:rope (actions/get-script entities
@@ -202,24 +219,27 @@
(actions/talk entities :ego "Why would I want to burn that?")
(actions/talk entities :ego "The candle's not lit right now.")))}}
:end-of-rope {:box [177 101 185 108]
+ :label "Rope"
+ :cursor :hand
:script (actions/get-script entities (try-to-go-in-stash entities))}
:fountain {:box [150 126 193 170]
+ :label "Fountain"
+ :cursor :look
:script (actions/get-script entities
(actions/walk-to entities :ego [151 119] :face :right)
(actions/do-dialogue entities :ego "Some would say this is life-giving nectar."
:ego "... Me?"
- :ego "I'd just as soon say it's nasty public fountain water.")
- (actions/play-animation entities :ego :get-sick))
+ :ego "I'd just as soon say it's nasty public fountain water."))
:scripts {:flask-2 (actions/get-script entities
(actions/walk-to entities :ego [151 119] :face :right)
(actions/play-animation entities :ego :reach)
- (actions/remove-item entities :flask-2)
+ (actions/remove-item entities :flask-2 :quiet? true)
(actions/give entities :flask-water)
(actions/talk entities :ego "Filled up with water, just as Gandarf wanted."))}}}
- :layers {:day [(assoc (utils/get-texture "outside-jail/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "outside-jail/fountain.png") :x 0 :y 0 :baseline 114)]
- :night [(assoc (utils/get-texture "outside-jail/background.png") :x 0 :y 0 :baseline 0)
- (assoc (utils/get-texture "outside-jail/fountain.png") :x 0 :y 0 :baseline 114)]}
+ :layers {:day [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "fountain") :x 0 :y 0 :baseline 114)]
+ :night [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)
+ (assoc (utils/atlas->texture atlas "fountain") :x 0 :y 0 :baseline 114)]}
:entities {:warden {:object nil
:x 36
:y 86
@@ -241,8 +261,8 @@
:x 172
:y 140
:baseline 114)
- :axe (assoc (utils/get-texture "outside-jail/axe.png") :x 213 :y 63 :baseline 176 :night-profile :sprite)
- :bent-bar-window (assoc (utils/get-texture "outside-jail/bent-bar-window.png")
+ :axe (assoc (utils/atlas->texture atlas "axe") :x 213 :y 63 :baseline 176 :night-profile :sprite)
+ :bent-bar-window (assoc (utils/atlas->texture atlas "bent-bar-window")
:x 69 :y (- 240 63) :baseline 2)
:outside-particles (common/make-outside-particles)}
:fountain-sound {:sound (utils/load-sound "outside-jail/fountain-2.ogg")
@@ -257,23 +277,29 @@
:stand guard-stand
:talk guard-talk
:sleep guard-sleep
+ :label "Knocked out guard"
+ :cursor :hand
:script (actions/get-script entities (search-guard entities))
:night-profile :sprite))
- :rope (rooms/make-entity :rope (assoc (utils/get-texture "outside-jail/rope.png")
+ :rope (rooms/make-entity :rope (assoc (utils/atlas->texture atlas "rope")
:x 14 :y 20 :baseline 1 :night-profile :sprite))
- :spear (rooms/make-entity :spear (assoc (utils/get-texture "outside-jail/spear.png")
+ :spear (rooms/make-entity :spear (assoc (utils/atlas->texture atlas "spear")
:night-profile :none
:x 60 :y 65 :baseline 180
+ :label "Spear"
+ :cursor :hand
:script (actions/get-script entities (grab-spear entities))))
- :alarm-clock (rooms/make-entity :alarm-clock (assoc (utils/get-texture "outside-jail/alarm-clock.png")
+ :alarm-clock (rooms/make-entity :alarm-clock (assoc (utils/atlas->texture atlas "alarm-clock")
:x 217 :y 83 :baseline 160
+ :label "Broken clock"
+ :cursor :hand
:script (actions/get-script entities
(actions/walk-to entities :ego [189 65] :face :right)
(actions/play-animation entities :ego :reach)
(actions/remove-entity entities :alarm-clock)
(actions/give entities :alarm-clock))))
- :stash (rooms/make-entity :stash (assoc (animation->texture screen open-stash)
+ :stash (rooms/make-entity :stash (assoc (animation->texture (assoc screen :total-time 0) open-stash)
:x 197 :y 94 :baseline 146
:open open-stash
:close close-stash))
@@ -285,15 +311,30 @@
:apply-state (fn [screen entities]
(utils/fast-forward-particle (get-in entities [:room :entities :outside-particles]))
+
(as-> entities entities
(utils/play-sound! screen entities (get-in entities [:room :fountain-sound :sound])
(utils/sourced-volume-fn :fountain 0.06 [172 120])
(utils/get-sound-pan 172)
:loop)
-
- (if (= :night (get-in entities [:state :time]))
- (make-night entities)
- (update-in entities [:room :entities] dissoc :candle-aura :candle-flame))
- (if (get-in entities [:state :dropped-ball?])
- (update-in entities [:room :entities :guard] #(actions/start-animation % :sleep))
- (update-in entities [:room :entities] dissoc :bent-bar-window )))))))
+
+ (if (get-in entities [:state :knows-about-stash?])
+ (update-in entities [:room :interactions] (fn [xs]
+ (for [i xs]
+ (if (= (:id i)
+ :lever)
+ (assoc i :cursor :hand)
+ i))))
+ (update-in entities [:room :interactions] (fn [xs]
+ (for [i xs]
+ (if (= (:id i)
+ :lever)
+ (assoc i :cursor :look)
+ i)))))
+
+ (if (= :night (get-in entities [:state :time]))
+ (make-night entities)
+ (update-in entities [:room :entities] dissoc :candle-aura :candle-flame))
+ (if (get-in entities [:state :dropped-ball?])
+ (update-in entities [:room :entities :guard] #(actions/start-animation % :sleep))
+ (update-in entities [:room :entities] dissoc :bent-bar-window )))))))
diff --git a/desktop/src-common/advent/screens/rooms/space.clj b/desktop/src-common/advent/screens/rooms/space.clj
index 10c13578..d5a1b941 100644
--- a/desktop/src-common/advent/screens/rooms/space.clj
+++ b/desktop/src-common/advent/screens/rooms/space.clj
@@ -15,6 +15,7 @@
[play-clj.utils :refer :all]
[play-clj.math :refer :all]
[play-clj.g2d :refer :all]))
+(println "loading " *ns*)
(defn taunt [screen entities]
(when (and (not (get-in entities [:fg-actions :script-running?]))
@@ -80,7 +81,7 @@
(skip-type [this screen entities]
:none)))
-(defn swing-at-blergh [entities]
+(defn swing-at-blergh [entities atlas]
(let [jump-path (bezier (map #(apply vector-2* %) [[35 45] [110 145] [195 180]]))
swing-path (bezier (map #(apply vector-2* %) [[195 180] [205 45]]))
jump-dist (utils/dist 35 45 205 45)
@@ -94,7 +95,7 @@
(utils/play-sound! screen entities :jump (constantly 0.9))
(-> entities
- (assoc-in [:room :entities :cloud] (assoc (utils/get-texture "space/cloud.png")
+ (assoc-in [:room :entities :cloud] (assoc (utils/atlas->texture atlas "cloud")
:x (- (get-in entities [:room :entities :ego :x]) 10)
:y (get-in entities [:room :entities :ego :y])
:origin-x 7
@@ -182,33 +183,32 @@
(defn grunt-vol [entities]
(* 0.3 (get-in entities [:room :entities :bloodclot :opacity])))
-(defn make [screen]
- (let [bloodclot-head-talk-anim (utils/make-anim-seq "space/bloodclot-head-talk" [82 75] 0.05 [0 0 1 1 2 2 1 1 0 0 1 1 2 2 1 1 0 0 3 4 4 4 3 0 0 1 1 2 2 1 1 0 0 0 0 5 5 5 6 6 6 7 7 7])
- bloodclot-head-stand-anim (utils/make-anim-seq "space/bloodclot-head-talk" [82 75] 0.05 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 3])
- bloodclot-head-shoot-anim (utils/make-anim-seq "space/bloodclot-head-talk" [82 75] 0.05 [8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 10 11 10 11 10 11 10 11 10 11 10 11])
- bloodclot-head-keep-shoot-anim (utils/make-anim-seq "space/bloodclot-head-talk" [82 75] 0.05 [12 13])
- blergh-stand-anim (utils/make-anim "space/bloodclot-stand.png" [106 165] 0.9 [0 1])
- bloodclot-explode (utils/make-anim-seq "space/bloodclot-explode" [106 165] 0.075 [0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 4 4 4 5 5 5 5 5 5 5 5 5 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 8 8 8 7 7 7 7 8 8 8 8 8 7 7 7 7 8 8 7 7 7 7 8 8 8 7 8 8 8 8 8 8 8 8 9 8 8 8 8 9 9 8 8 8 8 8 8 8 9 9 9 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 10 9 10 10 8 9 9 9 9 9 10 10 10 10 9 9 9 9 9 9 9 9 9 9 10 10 10 10 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 12 13 14 15 16 17 18 19 20 21 22])
- bullet (utils/make-anim "space/bullet.png" [24 24] 0.0075 [0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 3 3 3 4 4 5 5 6 5 4 7])
+(defn make [screen atlas global-atlas]
+ (let [bloodclot-head-talk-anim (utils/make-anim-seq atlas "bloodclot-head-talk" [82 75] 0.05 [0 0 1 1 2 2 1 1 0 0 1 1 2 2 1 1 0 0 3 4 4 4 3 0 0 1 1 2 2 1 1 0 0 0 0 5 5 5 6 6 6 7 7 7])
+ bloodclot-head-stand-anim (utils/make-anim-seq atlas "bloodclot-head-talk" [82 75] 0.05 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 3])
+ bloodclot-head-shoot-anim (utils/make-anim-seq atlas "bloodclot-head-talk" [82 75] 0.05 [8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 10 11 10 11 10 11 10 11 10 11 10 11])
+ bloodclot-head-keep-shoot-anim (utils/make-anim-seq atlas "bloodclot-head-talk" [82 75] 0.05 [12 13])
+ blergh-stand-anim (utils/make-anim atlas "bloodclot-stand" [106 165] 0.9 [0 1])
+ bloodclot-explode (utils/make-anim-seq atlas "bloodclot-explode" [106 165] 0.075 [0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 4 4 4 5 5 5 5 5 5 5 5 5 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 8 8 8 7 7 7 7 8 8 8 8 8 7 7 7 7 8 8 7 7 7 7 8 8 8 7 8 8 8 8 8 8 8 8 9 8 8 8 8 9 9 8 8 8 8 8 8 8 9 9 9 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 10 9 10 10 8 9 9 9 9 9 10 10 10 10 9 9 9 9 9 9 9 9 9 9 10 10 10 10 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 12 13 14 15 16 17 18 19 20 21 22])
+ bullet (utils/make-anim atlas "bullet" [24 24] 0.0075 [0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 3 3 3 4 4 5 5 6 5 4 7])
effect (particle-effect "particles/appear")
blowup-effect (particle-effect "particles/blowup")
lightning-effect (particle-effect "particles/lightning")
grow-explode (particle-effect "particles/grow-explode")]
- (rooms/make :music :fight
- :name "Duel"
+ (rooms/make :name "Duel"
:sounds {:shock (utils/load-sound "space/shock.ogg")
:shock-short (utils/load-sound "space/shock-short.ogg")
:jump (utils/load-sound "space/jump.ogg")
:swing-sword (utils/load-sound "space/swingsword.ogg")}
:interactions
{}
- :layers [(assoc (utils/get-texture "space/background.png") :x 0 :y 0 :baseline 0)]
+ :layers [(assoc (utils/atlas->texture atlas "background") :x 0 :y 0 :baseline 0)]
:timers {:taunt [10.0 8.0 taunt]
:shock [5.0 15.0 shock]}
:entities {:appear (assoc effect
:x 240 :y 50
:baseline 200)
- :later (assoc (utils/get-texture "space/later.png")
+ :later (assoc (utils/atlas->texture atlas "later")
:x 0 :y 0
:baseline 240
:opacity 0.0)
@@ -248,6 +248,8 @@
:explode bloodclot-explode
+ :label "Bloodclot"
+ :cursor :talk
:script (actions/get-script entities
(actions/do-dialogue entities
:bloodclot-head "No time to talk."
@@ -271,7 +273,7 @@
(if (actions/has-item? entities :magic-slingshot)
(if (get-in @entities [:state :broke-jewel?])
(do
- (swing-at-blergh entities)
+ (swing-at-blergh entities atlas)
(actions/do-dialogue entities
:bloodclot-head "Ha ha ha! Still a weakling, I see."
:bloodclot-head "But you'll not best me!")
@@ -284,7 +286,7 @@
(actions/update-entity entities :ego (fn [e]
(dissoc e :stand-override :talk-override)))
(actions/update-entity entities :ego #(assoc % :get-script (:original-get-script %)))
- (swing-at-blergh entities)
+ (swing-at-blergh entities atlas)
(actions/do-dialogue entities :bloodclot-head "Ha ha ha! Is that the best you can do?"
:bloodclot-head "Take this!")
@@ -336,7 +338,7 @@
:bullet (assoc (animation->texture screen bullet)
:x 37 :y 85 :baseline 241
:walk bullet)
- :broken-jewel (assoc (utils/get-texture "space/broken-jewel.png")
+ :broken-jewel (assoc (utils/atlas->texture atlas "broken-jewel")
:x 225 :y 170 :baseline 240)
:collision "space/collision.png"
:scale-fn (constantly 1.5)
diff --git a/desktop/src-common/advent/screens/safe.clj b/desktop/src-common/advent/screens/safe.clj
index 5d369be3..e2f42bfe 100644
--- a/desktop/src-common/advent/screens/safe.clj
+++ b/desktop/src-common/advent/screens/safe.clj
@@ -3,71 +3,73 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
- [clojure.pprint]
+
[advent.pathfind]
[advent.zone :as zone]
[advent.utils :as utils])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.utils.viewport FitViewport]
[com.badlogic.gdx.graphics.g2d TextureRegion]
- [com.badlogic.gdx.scenes.scene2d.utils Align]
+ [com.badlogic.gdx.utils Align]
[com.badlogic.gdx Application Audio Files Game Gdx Graphics Input
InputMultiplexer InputProcessor Net Preferences Screen]))
+(println "loading " *ns*)
-(def start-x 60)
+(def start-x 35)
(def start-y 83)
(defn close [entities]
- (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate)
- (screen! @(resolve 'advent.screens.scene/scene) :on-end-safe)
+ (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate {})
+ (screen! @(resolve 'advent.screens.scene/scene) :on-end-safe {})
(-> entities
(assoc :shown? false)
(assoc :start-showing? false)))
(defn button-box [x y]
- (zone/box (+ start-x x) (+ start-y y) (+ start-x x 16) (+ start-y y 20)))
+ (zone/box (+ start-x x) (+ start-y y) (+ start-x x 30) (+ start-y y 36)))
(defn get-button [[x y]]
(first (filter (fn [{:keys [in?] :as button}]
(when (in? x y)
button))
- [{:in? (button-box 9 13) :sound (utils/load-sound "inside-house/safe-1.ogg") :id 1 }
- {:in? (button-box 29 13) :sound (utils/load-sound "inside-house/safe-2.ogg") :id 2}
- {:in? (button-box 49 13) :sound (utils/load-sound "inside-house/safe-3.ogg") :id 3}
- {:in? (button-box 70 13) :sound (utils/load-sound "inside-house/safe-4.ogg") :id 4}
- {:in? (button-box 91 13) :sound (utils/load-sound "inside-house/safe-5.ogg") :id 5}])))
+ [{:in? (button-box 6 16) :sound (utils/load-sound "inside-house/safe-1.ogg") :id 1 }
+ {:in? (button-box 43 16) :sound (utils/load-sound "inside-house/safe-2.ogg") :id 2}
+ {:in? (button-box 76 16) :sound (utils/load-sound "inside-house/safe-3.ogg") :id 3}
+ {:in? (button-box 118 16) :sound (utils/load-sound "inside-house/safe-4.ogg") :id 4}
+ {:in? (button-box 155 16) :sound (utils/load-sound "inside-house/safe-5.ogg") :id 5}])))
(defscreen safe-screen
:on-show
- (fn [screen entities]
+ (fn [screen entities options]
(utils/setup-viewport screen 320 240)
- (let [inputed-key (utils/get-texture "inside-house/inputed-key.png")]
- {:fade (assoc (utils/get-texture "black.png")
+ (let [[screen atlas] (utils/acquire-atlas screen "packed/global.atlas")
+ inputed-key (utils/atlas->texture atlas "safe/inputed-key.png")]
+ {:fade (assoc (utils/atlas->texture atlas "black.png")
:scale-x 80
:scale-y 80
:opacity 0.7
:origin-x 0
:origin-y 0)
- :safe (assoc (utils/get-texture "inside-house/safe-screen.png") :x start-x :y start-y)
+ :safe (assoc (utils/atlas->texture atlas "safe/safe-screen") :x start-x :y start-y)
:entered-keys (doall (for [i (range 5)]
(assoc inputed-key
- :x (+ start-x 10 (* i 12))
- :y (+ start-y 56))))
+ :x (+ start-x 12 (* i 12))
+ :y (+ start-y 68))))
:shown? false}))
:on-render
- (fn [{:keys [^FitViewport viewport] :as screen} [entities]]
+ (fn [{:keys [^FitViewport viewport] :as screen} entities options]
(.apply viewport)
(when (:shown? entities)
(render! screen [(:fade entities) (:safe entities)])
(render! screen (take (count (:button-choices entities)) (:entered-keys entities))))
entities)
- :show-screen (fn [{:keys [success failure]} [entities]]
+ :show-screen (fn [_ entities {:keys [success failure]}]
(sound! (utils/load-sound "inside-house/open-safe.ogg") :play (utils/current-sound-volume 0.3))
(assoc entities
:shown? true
@@ -75,12 +77,12 @@
:success success
:failure failure))
- :on-mouse-moved (fn [screen [entities]]
+ :on-mouse-moved (fn [screen entities options]
entities)
- :on-touch-up (fn [screen [entities]]
+ :on-touch-up (fn [screen entities options]
(when (:shown? entities)
- (let [[x y] (utils/unproject screen)]
+ (let [[x y] (utils/unproject screen options)]
(if-let [button (get-button [x y])]
(do (sound! (:sound button) :play (utils/current-sound-volume 0.3))
(let [new-state (update-in entities [:button-choices] #(conj % (:id button)))]
@@ -88,25 +90,23 @@
(cond (= [4 2 1 5 3] (:button-choices new-state))
(do ((:success entities) (-> @(resolve 'advent.screens.scene/scene)
:entities
- deref
- first))
+ deref))
(close entities))
(= 5 (count (:button-choices new-state)))
(do ((:failure entities) (-> @(resolve 'advent.screens.scene/scene)
:entities
- deref
- first))
+ deref))
(close entities))
:else
new-state)))
(if (or (< x start-x)
- (> x (+ start-x 200))
+ (> x (+ start-x 250))
(< y start-y)
- (> y (+ start-y 75)))
+ (> y (+ start-y 100)))
(do
(sound! (utils/load-sound "inside-house/close-safe.ogg") :play (utils/current-sound-volume 0.3))
(close entities)))))))
- :on-resize (fn [{:keys [width height viewport]} entities]
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height)))
diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj
index e023646c..4362fac5 100644
--- a/desktop/src-common/advent/screens/scene.clj
+++ b/desktop/src-common/advent/screens/scene.clj
@@ -7,7 +7,7 @@
[play-clj.entities :as entities]
[play-clj.g2d :refer :all]
[clojure.zip :as zip]
- [clojure.pprint]
+
[clojure.java.io :as io]
[clojure.tools.logging :as log]
[advent.pathfind]
@@ -18,6 +18,7 @@
[advent.tween :as tween]
[advent.steam :as steam]
[advent.screens.rooms :as rooms]
+ [advent.screens.shader :refer [v-shader pix-shader]]
[advent.screens.fade :refer [fade-screen]]
[advent.screens.items :as items]
[advent.screens.rooms.dream :as rooms.dream]
@@ -37,139 +38,51 @@
[advent.screens.rooms.space :as rooms.space]
[advent.screens.rooms.held :as rooms.held]
[advent.screens.rooms.cat-tree :as rooms.cat-tree]
- [advent.screens.dialogue :refer [talking-screen toast-screen]]
+ [advent.screens.dialogue :refer [talking-screen toast-screen tooltip-screen]]
[advent.screens.inventory :refer [inventory-screen]]
- [clojure.core.async :refer [put! ! chan go thread take! alts!! dropping-buffer]])
+
+ [clojure.core.async :refer [put! poll! ! chan go thread take! alts!! dropping-buffer]])
(:import [com.badlogic.gdx.graphics Pixmap$Format Pixmap Pixmap$Filter Texture Texture$TextureFilter GL20 GL30]
[com.badlogic.gdx.graphics.g2d TextureRegion Animation Batch]
[com.badlogic.gdx.math Vector3 Matrix4]
[com.badlogic.gdx.utils.viewport FitViewport]
+
+ [com.badlogic.gdx.utils Align]
[com.badlogic.gdx.scenes.scene2d Actor Stage]
[com.badlogic.gdx.graphics.glutils ShaderProgram]
[java.lang Object]
[com.badlogic.gdx Gdx]
[com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera
- PerspectiveCamera Pixmap Pixmap$Format PixmapIO Texture
- VertexAttributes$Usage]
+ PerspectiveCamera Pixmap Pixmap$Format PixmapIO Texture ]
[com.badlogic.gdx.scenes.scene2d Actor Stage]))
+#_(set! *unchecked-math* :warn-on-boxed)
+
+(println "loading scene")
+
(declare hud)
-(def v-shader "attribute vec4 a_position;
-attribute vec4 a_color;
-attribute vec2 a_texCoord0;
-
-uniform mat4 u_projTrans;
-
-varying vec4 v_color;
-varying vec2 v_texCoords;
-
-void main() {
- v_color = a_color;
- v_texCoords = a_texCoord0;
- gl_Position = u_projTrans * a_position;
-}")
+(declare get-selected-inventory-item)
-
-(def pix-shader "
-#ifdef GL_ES
-#define LOWP lowp
- precision mediump float;
-#else
- #define LOWP
-#endif
-
-varying LOWP vec4 v_color;
-varying vec2 v_texCoords;
-uniform float multiply_amount;
-uniform float hue_amount;
-
-uniform sampler2D u_texture;
-
-float Epsilon = 1e-10;
-
-vec3 RGBtoHCV (vec3 RGB)
-{
- // Based on work by Sam Hocevar and Emil Persson
- vec4 P = (RGB.g < RGB.b) ? vec4 (RGB.bg, -1.0, 2.0/3.0) : vec4 (RGB.gb, 0.0, -1.0/3.0);
- vec4 Q = (RGB.r < P.x) ? vec4 (P.xyw, RGB.r) : vec4 (RGB.r, P.yzx);
- float C = Q.x - min (Q.w, Q.y);
- float H = abs ((Q.w - Q.y) / (6.0 * C + Epsilon) + Q.z);
- return vec3 (H, C, Q.x);
-}
-
-vec3 HUEtoRGB(float H)
-{
- float R = abs(H * 6.0 - 3.0) - 1.0;
- float G = 2.0 - abs(H * 6.0 - 2.0);
- float B = 2.0 - abs(H * 6.0 - 4.0);
- return clamp(vec3(R,G,B), 0.0, 1.0);
-}
-
-vec3 HSLtoRGB(vec3 HSL)
-{
- vec3 RGB = HUEtoRGB(HSL.x);
- float C = (1.0 - abs(2.0 * HSL.z - 1.0)) * HSL.y;
- return (RGB - 0.5) * C + HSL.z;
-}
-
-
-vec3 RGBtoHSL(vec3 RGB)
- {
- vec3 HCV = RGBtoHCV(RGB);
- float L = HCV.z - HCV.y * 0.5;
- float S = HCV.y / (1.0 - abs(L * 2.0 - 1.0) + Epsilon);
- return vec3(HCV.x, S, L);
- }
-
-vec3 BlendHue(vec3 base, vec3 blend)
-{
- if (blend.r == blend.g && blend.g == blend.b) {
- return base;
- }
- else {
- vec3 baseHSL = RGBtoHSL(base);
- return HSLtoRGB(vec3(RGBtoHSL(blend).r, baseHSL.g, baseHSL.b));
- }
-}
-
-#define BlendOpacity(base, blend, F, O) (F(base, blend) * O + blend * (1.0 - O))
-
-
-
-void main ()
-{
-
- vec2 sz = vec2 (2048.0, 2048.0);
- vec3 step = vec3 (1.0 / 4.0, 1.0 / 4.0, 0.0);
- vec2 tex_pixel = sz * v_texCoords - step.xy / 2.0;
-
- vec2 corner = floor (tex_pixel) + 1.0;
- vec2 frac = min ((corner - tex_pixel) * vec2 (4.0, 4.0), vec2 (1.0, 1.0));
-
- vec4 c1 = texture2D (u_texture, (floor (tex_pixel + step.zz) + 0.5) / sz);
- vec4 c2 = texture2D (u_texture, (floor (tex_pixel + step.xz) + 0.5) / sz);
- vec4 c3 = texture2D (u_texture, (floor (tex_pixel + step.zy) + 0.5) / sz);
- vec4 c4 = texture2D (u_texture, (floor (tex_pixel + step.xy) + 0.5) / sz);
-
- c1 *= frac.x * frac.y;
- c2 *= (1.0 - frac.x) * frac.y;
- c3 *= frac.x * (1.0 - frac.y);
- c4 *= (1.0 - frac.x) * (1.0 - frac.y);
-
- vec4 scaledColor = (c1 + c2 + c3 + c4);
-
- vec3 multiplied = mix(scaledColor.rgb, v_color.rgb * scaledColor.rgb, multiply_amount * 0.67 );
- vec3 hued = mix(multiplied, BlendHue(multiplied.rgb, v_color.rgb), hue_amount * 0.67);
- vec3 final = hued;
-
- gl_FragColor = vec4(final[0], final[1], final[2], scaledColor.a * v_color.a);
-
-}
-")
;
+(defn ensure-on-screen [l]
+ (let [margin-width (* 0.05 320)
+ minimum-x margin-width
+ maximum-x (- 320 margin-width)
+ label-width (label! l :get-width)
+ label-right (+ (:x l) (/ label-width 2))
+ l (cond (> label-right maximum-x) (assoc l :x (- maximum-x label-width))
+ (< (:x l) minimum-x) (assoc l :x minimum-x)
+ :else l)]
+ l))
+
+
+
+(defn get-script-selector [entities]
+ (or (get-selected-inventory-item) :main))
+
(def default-interaction
{:get-script (fn [cursor [x y]] (if (= :main cursor)
(actions/get-script entities
@@ -180,17 +93,6 @@ void main ()
-(defn click-inventory [screen entities]
- (when (not (get-in entities [:fg-actions :script-running?]))
- (if (= (get-in entities [:cursor :current] ) :main)
- (do
- (screen! inventory-screen :show-screen :items (map (entities :all-items) (get-in entities [:state :inventory])))
- (-> entities
- (assoc-in [:state :active?] false)
- (assoc-in [:cursor :override] nil)))
- (assoc-in entities [:cursor :current] :main))))
-
-
(defn skip-action [screen entities]
(let [current-action (get-in entities [:fg-actions :current])]
@@ -199,7 +101,7 @@ void main ()
(do (put! (actions/get-channel current-action) terminated-entities)
(-> terminated-entities
(assoc-in [:fg-actions :current] nil)
- (assoc-in [:fg-actions :started?] false))))
+ (assoc-in [:fg-actions :started?] false))))
(= :end (actions/skip-type current-action screen entities))
(let [terminated-entities (actions/terminate current-action screen entities)]
@@ -209,12 +111,26 @@ void main ()
:else
entities)))
+(defn click-inventory [screen entities]
+ (if (get-in entities [:fg-actions :script-running?])
+ (skip-action screen entities)
+ (assoc-in entities [:state :active?] false)))
+
+(defn open-inventory [screen entities]
+ (screen! inventory-screen :show-screen { :items (map (entities :all-items) (get-in entities [:state :inventory]))})
+ (assoc-in entities [:state :active?] false))
+
+
+
(defn get-interaction [entities x y]
(first (filter #((:mouse-in? %) entities x y)
(get-in entities [:room :interactions]))) )
(defn get-interacting-entity [entities x y]
- (let [interactable-entities (if (= (doto (get-in entities [:cursor :current]) (#(log/info "clicked with " %)) ) :main)
+ (let [interactable-entities (if (or (= (doto (get-selected-inventory-item)
+ (#(log/info "clicked with " %)) )
+ :main)
+ (not (get-selected-inventory-item)))
(vals (dissoc (get-in entities [:room :entities]) :ego))
(vals (get-in entities [:room :entities])))
interacting-entity (first (sort-by (comp - :baseline)
@@ -224,40 +140,61 @@ void main ()
interactable-entities)))]
interacting-entity))
-(defn left-click [screen entities]
- (let [[x y] (utils/unproject screen)
+(defn left-click [screen entities options]
+ (println "x y" (:input-x options) (:input-y options))
+ (let [[x y] (utils/unproject screen options)
_ (log/info (str "clicked " x y))
interaction (get-interaction entities x y)
interacting-entity (get-interacting-entity entities x y)
current-action (get-in entities [:fg-actions :current])
-
;; TODO - hacky way of resetting queue
-
- entities (if (and current-action
- (= (get-in entities [:cursor :down-target])
- (or (:id interacting-entity) (:id interaction) nil)))
+
+ entities (if current-action
(skip-action screen entities)
entities)]
-
-
- (when (and (not (get-in entities [:fg-actions :script-running?]))
- (= (get-in entities [:cursor :down-target])
- (or (:id interacting-entity) (:id interaction) nil)))
- ((or (when (and interacting-entity (not (:cursor interaction)))
- (do (screen! hud :on-start-script)
- ((:get-script interacting-entity) (get-in entities [:cursor :current]) [x y])))
- (when interaction
- (do (screen! hud :on-start-script)
- ((:get-script interaction) (or (when (:cursor interaction) :main)
- (get-in entities [:cursor :current]))
- [x y])))
-
- ((:get-script default-interaction) (get-in entities [:cursor :current]) [x y])) entities))
- (assoc-in entities [:cursor :down-target] nil)))
+ (log/info "clicked interaction" interaction "entity" (:id interacting-entity))
+
+ (when (and (not (get-in entities [:fg-actions :script-running?])))
+ ((or (when (and (not (:override-cursor interaction))
+ interacting-entity)
+ (do (screen! hud :on-start-script {})
+ ((:get-script interacting-entity) (get-script-selector entities) [x y])))
+ (when interaction
+ (do (screen! hud :on-start-script {})
+ ((:get-script interaction) (get-script-selector entities)
+ [x y])))
+
+ ((:get-script default-interaction) (get-script-selector entities) [x y])) entities))
+ (cond-> entities
+ true (assoc-in [:cursor :down-target] nil)
+ utils/mobile? (assoc-in [:cursor :last-pos] [0 0]))))
+
+(defn handle-touch-up [{:keys [^FitViewport viewport] :as screen} entities {:keys [input-x input-y] :as options}]
+ (let [entities (assoc-in entities [:cursor :depressed?] false)]
+ (cond
+ (not (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport)
+ (.getScreenWidth viewport) (.getScreenHeight viewport)
+ input-x input-y))
+ entities
+
+ (= (button-code :right)
+ (:button options))
+ (do (screen! hud :on-return-item {})
+ entities)
+
+ (and (get-in entities [:state :active?])
+ (or (not (get-in entities [:state :hud-active?]))
+ (get-in entities [:fg-actions :script-running?]))
+ (= 0.0 (get-in entities [:fade :opacity]))
+ (not (get-in entities [:cam :pinching])))
+ (left-click screen entities options)
+
+ :else
+ entities)))
(defn get-ego-script [cursor [x y]]
-
+
(condp = (:value cursor)
:charcoal
(common/one-liner "Just a dark piece of charcoal.")
@@ -266,7 +203,7 @@ void main ()
(actions/get-script entities (actions/talk entities :ego "Blegh! Gross!"))
:flask-1-strength
- (actions/get-script entities
+ (actions/get-script entities
(cond (= :held
(get-in @entities [:state :last-room]))
(common/do-win entities)
@@ -284,7 +221,7 @@ void main ()
(Thread/sleep 1000)
(actions/talk entities :warden "Hey, get back in jail!")
(common/go-to-jail entities))
-
+
:else
(do
(actions/talk entities :ego "I'd better save this strength potion for just the right moment!"))))
@@ -346,7 +283,7 @@ void main ()
(do
(actions/talk entities :ego "Ugh! I have Gandarf's MagiSafe 2000 tune stuck in my head.")
(actions/play-safe entities))))
-
+
:alarm-clock
(common/one-liner "It's a magic device that tells the time.")
@@ -362,7 +299,7 @@ void main ()
(actions/do-dialogue entities :ego "Yuck!"))
:stick
- (common/one-liner "It's a huge stick.")
+ (common/one-liner "It's a huge stick.")
:wool
(common/one-liner "Better not wash it in hot water.")
@@ -370,140 +307,140 @@ void main ()
:spell-component
(common/one-liner "It needs to go into the cauldron.")
- :feather
+ :feather
(common/one-liner "An owl feather. Smells like puke.")
- :ball-n-chain
+ :ball-n-chain
(common/one-liner "Why am I lugging this around? It's so heavy.")
- :flask-water
+ :flask-water
(common/one-liner "Gandarf knows what to do next with this.")
- :broom
+ :broom
(common/one-liner "A janitor's broom.")
- :glass-eye
+ :glass-eye
(common/one-liner "It's a glass eye.")
- :flask-1-slobber
+ :flask-1-slobber
(common/one-liner "It's got some bull slobber in it.")
- :crowbar
+ :crowbar
(common/one-liner "It can probably bend steel!")
- :monocle
+ :monocle
(common/one-liner "It's a monocle.")
- :used-earplugs
+ :used-earplugs
(common/one-liner "They've got earwax all over them. No thanks.")
- :broken-clock
+ :broken-clock
(common/one-liner "Split right down the middle.")
- :trophy
+ :trophy
(common/one-liner "I've proven myself in wisdom!")
- :carrot
+ :carrot
(common/one-liner "I'm not that hungry.")
- :ladder
+ :ladder
(common/one-liner "It's the Duke's ladder.")
- :motivational-tapes
+ :motivational-tapes
(common/one-liner "If only I had a VCR. I'd get my life back together.")
- :sack-lunch
+ :sack-lunch
(common/one-liner "Ugh, gross! The blue cheese smells really strong.")
- :grass
+ :grass
(common/one-liner "This is top quality, high protein stuff!")
- :cat-toy
+ :cat-toy
(common/one-liner "It's a little cat toy!")
- :ash
+ :ash
(common/one-liner "A spell's ashes.")
- :shovel
+ :shovel
(common/one-liner "A grave-digger's shovel.")
- :mandrake
+ :mandrake
(common/one-liner "It's some kind of root.")
- :flask-water-flies
+ :flask-water-flies
(common/one-liner "Looks like I need to add the ashes of magic.")
- :flask-1
+ :flask-1
(common/one-liner "An empty flask.")
- :flask-flies-ash
+ :flask-flies-ash
(common/one-liner "Looks like I need to stir it with the gift of flight.")
- :magic-slingshot
+ :magic-slingshot
(common/one-liner "The Slinger's Shot, fully restored.")
- :frog-legs
+ :frog-legs
(common/one-liner "I wonder where the head is...")
- :sword
+ :sword
(common/one-liner "Yowza! The Sword of Blergh's sharp as a razor.")
- :medal
+ :medal
(common/one-liner "I've proven myself worthy in strength!")
- :spear
+ :spear
(common/one-liner "A knight's spear.")
- :slobber
+ :slobber
(common/one-liner "I wonder why I am carrying this drool around.")
- :kiss
+ :kiss
(common/one-liner "Yuck! A kiss for my bravery.")
- :flask-1-with-milk
+ :flask-1-with-milk
(common/one-liner "I've got some sheep's milk in my flask.")
- :flask-1-with-mushrooms
+ :flask-1-with-mushrooms
(common/one-liner "I've got some mushrooms in my flask. It still needs some cream.")
- :balloon
+ :balloon
(common/one-liner "My choicest balloon would be blue. But he didn't give me a choice.")
- :money
+ :money
(common/one-liner "It's got the Duke of Remington's face on it.")
- :flask-2
+ :flask-2
(common/one-liner "I need to fill it with fountain water.")
- :key
+ :key
(common/one-liner "It's the key to the jail.")
- :flask-water-ash
+ :flask-water-ash
(common/one-liner "Looks like I need the sound of buzzing.")
- :slingshot
+ :slingshot
(common/one-liner "The Slinger's Shot.")
- :teddy
+ :teddy
(common/one-liner "It's the choicest teddy.")
- :flies
+ :flies
(common/one-liner "I don't want any of them to buzz off.")
- :rope
+ :rope
(common/one-liner "A nice, sturdy, rope.")
nil))
-(defn get-ego [screen start-pos start-scale]
- (let [player-sheet (texture! (utils/get-texture "player.png") :split 18 36)
- talk-sheet (texture! (utils/get-texture "ego/talk.png") :split 18 36)
- stand-sheet (texture! (utils/get-texture "ego/stand.png") :split 18 36)
- squat-sheet (texture! (utils/get-texture "ego/squat.png") :split 18 36)
- reach-sheet (texture! (utils/get-texture "ego/reach.png") :split 18 36)
- grow-sheet (texture! (utils/get-texture "ego/grow.png") :split 18 36)
- cat-toy-sheet (texture! (utils/get-texture "ego/cat-toy.png") :split 41 50)
- fire-sheet (texture! (utils/get-texture "ego/fire.png") :split 18 36)
+(defn get-ego [screen global-atlas start-pos start-scale]
+ (let [player-sheet (texture! (utils/atlas->texture global-atlas "ego/player") :split 18 36)
+ talk-sheet (texture! (utils/atlas->texture global-atlas "ego/talk") :split 18 36)
+ stand-sheet (texture! (utils/atlas->texture global-atlas "ego/stand") :split 18 36)
+ squat-sheet (texture! (utils/atlas->texture global-atlas "ego/squat") :split 18 36)
+ reach-sheet (texture! (utils/atlas->texture global-atlas "ego/reach") :split 18 36)
+ grow-sheet (texture! (utils/atlas->texture global-atlas "ego/grow") :split 18 36)
+ cat-toy-sheet (texture! (utils/atlas->texture global-atlas "ego/cat-toy") :split 41 50)
+ fire-sheet (texture! (utils/atlas->texture global-atlas "ego/fire") :split 18 36)
walk-right (animation 0.075 (for [i (range 8)]
(texture (aget player-sheet 0 i))))
@@ -545,56 +482,56 @@ void main ()
fire-2-anim (animation 0.1 (for [i [0 1 2 2 2 3 2 3 2 2 2 2 2 2 2 4 4 4 5 6 7 4 4 4 2 2 2 2 2 2 2 2 1 0]]
(texture (aget fire-sheet 0 i))))
fire-3-anim (animation 0.1 (for [i [0 1 2 2 2 3 2 3 2 2 2 2 2 2 4 4 4 4 4 4 5 6 7 4 4 4 4 4 8 9 10 11 4 4 4 2 2 2 2 2 2 2 2 0]]
- (texture (aget fire-sheet 0 i))))
+ (texture (aget fire-sheet 0 i))))
grow (animation 0.1 (for [i [0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 3 0 0 0 0 3 0 0 0 3 3 0 0 0 2 2 0 0 2 0 0 2 0 2 0 2 0 2 0 2 0 2 3 2 3 2 3 2 3 2 4 3 4 3 4 3 4]]
(texture (aget grow-sheet 0 i))))
- squat-talk (utils/make-anim "ego/squat-talk.png" [18 36] 0.2 [0 1 0 2 1 0 3])
- frog (utils/make-anim "ego/frog.png" [16 36] 0.1 [0])
- frog-nod (utils/make-anim "ego/frog.png" [16 36] 0.2 [0 1 0 1 0 1 0 1])
- hold-up-to-window (utils/make-anim "ego/hold-up-to-window.png" [18 36] 0.1 [0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0 0 0 0 0 0])
- jump (utils/make-anim "ego/swing.png" [36 75] 0.2 (flatten [[1 2]]))
- jump-straight (utils/make-anim "ego/jump-straight.png" [18 48] 0.075 [0 1 1 1 1 1 1 2 3])
- climb (utils/make-anim "ego/climb.png" [22 46] 0.3 [0 1 3 2 4 3 2 4 3 5 6 5 6 5 6 5 6 5 6 7 8 7 8 9 10 9 10 10 10 10 10 8 8 6 6 1 0])
- poke (utils/make-anim "ego/poke.png" [20 50] 0.2 [0 1 2 3 2 3 2 3 2 3 1 0])
- jumping-straight (utils/make-anim "ego/jump-straight.png" [18 48] 0.075 (repeat 30 4))
- swing (utils/make-anim "ego/swing.png" [36 75] 0.145 (flatten [[3 4 5 6 7 ]]))
- grow-talk (utils/make-anim "ego/grow-talk.png" [18 36] 0.2 (range 2))
- get-sick (utils/make-anim "ego/get-sick.png" [18 36] 0.1 (flatten [(range 6) (repeat 10 5) (reverse (range 6) ) 0 0 0 0 0 0]))
- spear (utils/make-anim "ego/spear.png" [18 100] 0.2 [0 1 2 3 2 3 2 3 2 3 2 1 0])
- crowbar (utils/make-anim "ego/crowbar.png" [36 36] 0.1 [0 0 0 1 1 2 2 2 2 2 3 2 3 2 3 2 3 2 3 3 3 1 1 0 0 0])
- shoot (utils/make-anim "ego/shoot.png" [24 36] 0.075 [0 0 0 1 1 2 2 2 2 2 2 2 2 3 4 5 4])
- pant (utils/make-anim "ego/pant.png" [31 36] 0.5 [0 1])
- shock (utils/make-anim "ego/shock.png" [40 48] 0.075 (flatten (repeat 2 [(repeat 5 [0 1 2]) (repeat 5 [3 4 5]) (repeat 5 [6 7 8])])))
- burnt (utils/make-anim "ego/burnt.png" [40 46] 0.12 [1 2 3 2 1 2 3 2 1 0 2 0 4 5 6 7 8 9 10 11 10 9 10 11])
- passed-out (utils/make-anim "ego/burnt.png" [40 46] 0.12 [9 10 11 10])
- scared (utils/make-anim "ego/scared.png" [18 36] 0.05 [0 1])
- scared-talk (utils/make-anim "ego/scared.png" [18 36] 0.05 [0 1 0 1 0 1 0 1 2 3 2 3 2 3 2 3])
- scared-walk (utils/make-anim "ego/scared-walk.png" [16 36] 0.05 (range 6))
- sigh (utils/make-anim "ego/sigh.png" [18 36] 0.08 [0 0 0 0 1 1 1 2 3 4 5 6 7 8 8 8 8 8 8 8 8 8 0 0 0 0 ])
- glad (utils/make-anim "ego/glad.png" [20 46] 0.04 (flatten [0 1 2 3 4 (repeat 8 [5 5 5]) (repeat 20 0)]))
- milk (utils/make-anim "ego/squat.png" [18 36] 0.05 [0 1 2 2 3 3 3 3 3 3 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 3 3 3 3 3 3 3 3 3 3 3 2 1 0])
- idea (utils/make-anim "ego/idea.png" [18 70] 0.3 [2 0 0 0 0 0 0 2])
- throw (utils/make-anim "ego/throw.png" [18 36] 0.04 (flatten [[(repeat 5 0) (repeat 10 1)] (repeat 3 [2 2 2 3 3 3 4 4 4 5 5 5]) (repeat 5 [2 2 3 3 4 4 5 5]) (repeat 10 [2 3 4 5]) [2 3 3] (repeat 33 6)]))
- frustrated-talk (utils/make-anim "ego/frustrated-talk.png" [16 36] 0.2 (flatten (range 6)))
- swing-shovel (utils/make-anim "ego/swing-shovel.png" [70 70] 0.1 (range 9))
- love (utils/make-anim-seq "ego/love" [50 70] 0.1 (flatten [0 0 1 1 2 2 3 3 4 4 5 5 6 6 (repeat 10 7) (repeat 5 8) (repeat 5 7) (repeat 5 8) (repeat 5 7) (repeat 10 [23 24 25 24]) (repeat 30 9) 10 11 12 13 14 15 16 17 18 19 20 21 21 21 22 22 22 21 21 21 21 21 21 21 21 22 22 22 22 22 21 21 21 21 22 22 22 22 22 22 21 21 21 21 21 6 6 5 5 4 4 3 3 2 2 1 1 0]))
- whistle (utils/make-anim-seq "ego/whistle" [18 36] 0.2 (flatten [0 1 1 (repeat 200 [2 3])]))
- axe (utils/make-anim "ego/axe.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 7)]))
- axe-wood (utils/make-anim "ego/axe-wood.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 11)]))
- suspended (utils/make-anim "ego/suspended.png" [20 36] 0.10 [0])
- suspended-talk (utils/make-anim "ego/suspended.png" [20 36] 0.20 (range 7))
- crawl (utils/make-anim "ego/crawl.png" [39 25] 0.2 (range 4))
- crawl-stand (utils/make-anim "ego/crawl.png" [39 25] 0.2 [0])
- crawl-hide (utils/make-anim "ego/crawl.png" [39 25] 0.1 (flatten [(repeat 10 3) (range 4 7) (repeat 50 6) (reverse (range 4 7) ) (repeat 20 3)]))
- standup (utils/make-anim "ego/standup.png" [45 55] 0.2 (range 5))
- hand-hold (utils/make-anim "ego/hand-hold.png" [18 36] 0.2 [0 1])
+ squat-talk (utils/make-anim global-atlas "ego/squat-talk" [18 36] 0.2 [0 1 0 2 1 0 3])
+ frog (utils/make-anim global-atlas "ego/frog" [16 36] 0.1 [0])
+ frog-nod (utils/make-anim global-atlas "ego/frog" [16 36] 0.2 [0 1 0 1 0 1 0 1])
+ hold-up-to-window (utils/make-anim global-atlas "ego/hold-up-to-window" [18 36] 0.1 [0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0 0 0 0 0 0])
+ jump (utils/make-anim global-atlas "ego/swing" [36 75] 0.2 (flatten [[1 2]]))
+ jump-straight (utils/make-anim global-atlas "ego/jump-straight" [18 48] 0.075 [0 1 1 1 1 1 1 2 3])
+ climb (utils/make-anim global-atlas "ego/climb" [22 46] 0.3 [0 1 3 2 4 3 2 4 3 5 6 5 6 5 6 5 6 5 6 7 8 7 8 9 10 9 10 10 10 10 10 8 8 6 6 1 0])
+ poke (utils/make-anim global-atlas "ego/poke" [20 50] 0.2 [0 1 2 3 2 3 2 3 2 3 1 0])
+ jumping-straight (utils/make-anim global-atlas "ego/jump-straight" [18 48] 0.075 (repeat 30 4))
+ swing (utils/make-anim global-atlas "ego/swing" [36 75] 0.145 (flatten [[3 4 5 6 7 ]]))
+ grow-talk (utils/make-anim global-atlas "ego/grow-talk" [18 36] 0.2 (range 2))
+ get-sick (utils/make-anim global-atlas "ego/get-sick" [18 36] 0.1 (flatten [(range 6) (repeat 10 5) (reverse (range 6) ) 0 0 0 0 0 0]))
+ spear (utils/make-anim global-atlas "ego/spear" [18 100] 0.2 [0 1 2 3 2 3 2 3 2 3 2 1 0])
+ crowbar (utils/make-anim global-atlas "ego/crowbar" [36 36] 0.1 [0 0 0 1 1 2 2 2 2 2 3 2 3 2 3 2 3 2 3 3 3 1 1 0 0 0])
+ shoot (utils/make-anim global-atlas "ego/shoot" [24 36] 0.075 [0 0 0 1 1 2 2 2 2 2 2 2 2 3 4 5 4])
+ pant (utils/make-anim global-atlas "ego/pant" [31 36] 0.5 [0 1])
+ shock (utils/make-anim global-atlas "ego/shock" [40 48] 0.075 (flatten (repeat 2 [(repeat 5 [0 1 2]) (repeat 5 [3 4 5]) (repeat 5 [6 7 8])])))
+ burnt (utils/make-anim global-atlas "ego/burnt" [40 46] 0.12 [1 2 3 2 1 2 3 2 1 0 2 0 4 5 6 7 8 9 10 11 10 9 10 11])
+ passed-out (utils/make-anim global-atlas "ego/burnt" [40 46] 0.12 [9 10 11 10])
+ scared (utils/make-anim global-atlas "ego/scared" [18 36] 0.05 [0 1])
+ scared-talk (utils/make-anim global-atlas "ego/scared" [18 36] 0.05 [0 1 0 1 0 1 0 1 2 3 2 3 2 3 2 3])
+ scared-walk (utils/make-anim global-atlas "ego/scared-walk" [16 36] 0.05 (range 6))
+ sigh (utils/make-anim global-atlas "ego/sigh" [18 36] 0.08 [0 0 0 0 1 1 1 2 3 4 5 6 7 8 8 8 8 8 8 8 8 8 0 0 0 0 ])
+ glad (utils/make-anim global-atlas "ego/glad" [20 46] 0.04 (flatten [0 1 2 3 4 (repeat 8 [5 5 5]) (repeat 20 0)]))
+ milk (utils/make-anim global-atlas "ego/squat" [18 36] 0.05 [0 1 2 2 3 3 3 3 3 3 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 3 3 3 3 3 3 3 3 3 3 3 2 1 0])
+ idea (utils/make-anim global-atlas "ego/idea" [18 70] 0.3 [2 0 0 0 0 0 0 2])
+ throw (utils/make-anim global-atlas "ego/throw" [18 36] 0.04 (flatten [[(repeat 5 0) (repeat 10 1)] (repeat 3 [2 2 2 3 3 3 4 4 4 5 5 5]) (repeat 5 [2 2 3 3 4 4 5 5]) (repeat 10 [2 3 4 5]) [2 3 3] (repeat 33 6)]))
+ frustrated-talk (utils/make-anim global-atlas "ego/frustrated-talk" [16 36] 0.2 (flatten (range 6)))
+ swing-shovel (utils/make-anim global-atlas "ego/swing-shovel" [70 70] 0.1 (range 9))
+ love (utils/make-anim-seq global-atlas "ego/love" [50 70] 0.1 (flatten [0 0 1 1 2 2 3 3 4 4 5 5 6 6 (repeat 10 7) (repeat 5 8) (repeat 5 7) (repeat 5 8) (repeat 5 7) (repeat 10 [23 24 25 24]) (repeat 30 9) 10 11 12 13 14 15 16 17 18 19 20 21 21 21 22 22 22 21 21 21 21 21 21 21 21 22 22 22 22 22 21 21 21 21 22 22 22 22 22 22 21 21 21 21 21 6 6 5 5 4 4 3 3 2 2 1 1 0]))
+ whistle (utils/make-anim-seq global-atlas "ego/whistle" [18 36] 0.2 (flatten [0 1 1 (repeat 200 [2 3])]))
+ axe (utils/make-anim global-atlas "ego/axe" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 7)]))
+ axe-wood (utils/make-anim global-atlas "ego/axe-wood" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 11)]))
+ suspended (utils/make-anim global-atlas "ego/suspended" [20 36] 0.10 [0])
+ suspended-talk (utils/make-anim global-atlas "ego/suspended" [20 36] 0.20 (range 7))
+ crawl (utils/make-anim global-atlas "ego/crawl" [39 25] 0.2 (range 4))
+ crawl-stand (utils/make-anim global-atlas "ego/crawl" [39 25] 0.2 [0])
+ crawl-hide (utils/make-anim global-atlas "ego/crawl" [39 25] 0.1 (flatten [(repeat 10 3) (range 4 7) (repeat 50 6) (reverse (range 4 7) ) (repeat 20 3)]))
+ standup (utils/make-anim global-atlas "ego/standup" [45 55] 0.2 (range 5))
+ hand-hold (utils/make-anim global-atlas "ego/hand-hold" [18 36] 0.2 [0 1])
choose-step-sound (fn [entities]
(if (#{:inside-house :inside-stash :inside-cafeteria :inside-antique :inside-jail}
(get-in entities [:state :last-room]))
(rand-nth [:inside-step-sound-1 :inside-step-sound-2 :inside-step-sound-3 :inside-step-sound-4])
(rand-nth [:step-sound-1 :step-sound-2 :step-sound-3 :step-sound-4])))
-
+
ego {:right {:walk walk-right
:stand stand-anim
@@ -646,7 +583,7 @@ void main ()
:axe-wood axe-wood
:suspended suspended
:suspended-talk suspended-talk
- :crawl crawl
+ :crawl crawl
:crawl-stand crawl-stand
:crawl-hide crawl-hide
:standup standup
@@ -698,7 +635,7 @@ void main ()
:axe-wood (utils/flip axe-wood)
:suspended (utils/flip suspended)
:suspended-talk (utils/flip suspended-talk)
- :crawl (utils/flip crawl)
+ :crawl (utils/flip crawl)
:crawl-stand (utils/flip crawl-stand)
:crawl-hide (utils/flip crawl-hide)
:standup (utils/flip standup)
@@ -708,12 +645,12 @@ void main ()
:climb (utils/flip climb)
:poke (utils/flip poke)
:whistle (utils/flip whistle)
- }
- :baseline (- 240 (last start-pos))
+ }
+ :baseline (- 240 (double (last start-pos)))
:facing :right
:night-profile :sprite
:origin-x 9
- :origin-y 0
+ :origin-y 0
:scaled true
:drop-sound (utils/load-sound "ego/drop.ogg")
:milk-sound (utils/load-sound "outsidehouse/milk.ogg")
@@ -739,18 +676,18 @@ void main ()
:idea-sound (utils/load-sound "ego/idea.ogg")
:scale-x start-scale
:scale-y start-scale
- :talk-color (color 0.6 1.0 1.0 1.0)
+ :talk-color (color 0.6 1.0 1.0 1.0)
:stand-override nil
:mouse-in? (fn [entities x y]
- (let [{entity-x :x entity-y :y ^TextureRegion region :object scale :scale-x} (get-in entities [:room :entities :ego])
- half-width (/ (* (.getRegionWidth region) (or scale 1.0)) 2)
- height (* (.getRegionHeight region) (or scale 1.0))]
-
+ (let [{^double entity-x :x ^double entity-y :y ^TextureRegion region :object scale :scale-x} (get-in entities [:room :entities :ego])
+ half-width (double (/ (* (.getRegionWidth region) (double (or scale 1.0))) 2))
+ height (double (* (.getRegionHeight region) (double (or scale 1.0))))]
+
((zone/box (- entity-x half-width) entity-y (+ entity-x half-width) (+ entity-y height)) x y)))
- :get-script get-ego-script
+ :get-script get-ego-script
:x (first start-pos) :y (last start-pos)
:id "ego"}
-
+
ego (assoc ego :anim-sound-frames {(get-in ego [:left :walk]) {2 [choose-step-sound 0.5]
6 [choose-step-sound 0.5]}
(get-in ego [:right :walk]) {2 [choose-step-sound 0.5]
@@ -760,29 +697,28 @@ void main ()
(get-in ego [:right :talk] ) {2 [:blink 0.15]}
(get-in ego [:left :grow] ) {1 [:grow-sound 0.75]}
(get-in ego [:right :grow] ) {1 [:grow-sound 0.75]}
- (get-in ego [:left :crowbar] ) {3 [:crowbar-sound 0.5]}
(get-in ego [:right :crowbar] ) {3 [:crowbar-sound 0.5]}
(get-in ego [:right :shoot] ) {14 [:shoot-sound 0.75]}
(get-in ego [:left :shoot] ) {14 [:shoot-sound 0.75]}
-
+
(get-in ego [:left :get-sick] ) {1 [:get-sick-sound 0.55]}
(get-in ego [:right :get-sick] ) {1 [:get-sick-sound 0.55]}
(get-in ego [:right :scared-walk] ) {0 [:scared-step-sound 0.15 1.5]
4 [:scared-step-sound 0.15 1.9]}
(get-in ego [:left :stand]) {11 [:blink 0.15]
- 44 [:blink 0.15]
- 77 [:blink 0.15]
- 110 [:blink 0.15]
- 143 [:blink 0.15]
+ 44 [:blink 0.15]
+ 77 [:blink 0.15]
+ 110 [:blink 0.15]
+ 143 [:blink 0.15]
176 [:blink 0.15]
200 [:scratch-sound 0.15]
}
(get-in ego [:right :stand]) {11 [:blink 0.15]
- 44 [:blink 0.15]
- 77 [:blink 0.15]
- 110 [:blink 0.15]
- 143 [:blink 0.15]
+ 44 [:blink 0.15]
+ 77 [:blink 0.15]
+ 110 [:blink 0.15]
+ 143 [:blink 0.15]
176 [:blink 0.15]
200 [:scratch-sound 0.15]
}
@@ -822,9 +758,9 @@ void main ()
(get-in ego [:right :axe-wood]) {:origin-x 17}
(get-in ego [:left :love]) {:origin-x 41}
(get-in ego [:left :suspended]) {:origin-x 0 :origin-y 0}
- (get-in ego [:right :suspended]) {:origin-x 0 :origin-y 0}
+ (get-in ego [:right :suspended]) {:origin-x 0 :origin-y 0}
(get-in ego [:left :suspended-talk]) {:origin-x 0 :origin-y 0}
- (get-in ego [:right :suspended-talk]) {:origin-x 0 :origin-y 0}
+ (get-in ego [:right :suspended-talk]) {:origin-x 0 :origin-y 0}
:default {:origin-x 9}})]
(actions/start-animation screen
(merge (animation->texture screen (:stand (:right ego))) ego)
@@ -834,18 +770,18 @@ void main ()
(let [{{:keys [script-running? script-chan]} key} entities]
(if script-running?
entities
- (let [[next-script] (alts!! [script-chan] :default nil)]
+ (let [next-script (poll! script-chan)]
(if next-script
(do
(next-script entities)
(log/info "starting script")
-
+
(assoc-in entities [key :script-running?] true))
entities)))))
(defn update-from-script [screen entities key]
(let [{{:keys [current started? channel script-chan script-running?]} key} entities]
-
+
(if current
(let [entities (if started? entities (actions/begin current screen entities))
entities (actions/continue current screen entities)]
@@ -856,8 +792,8 @@ void main ()
(update-in terminated [key] assoc :current nil :started? false)
key))
(assoc-in entities [key :started?] true)))
- (let [[current _] (alts!! [channel] :default nil)]
-
+ (let [current (poll! channel)]
+
(-> entities
(assoc-in [key :started?] false)
(assoc-in [key :last-skip-type] (if current
@@ -873,40 +809,69 @@ void main ()
entities)
entities))
-(defn update-cursor [screen {{:keys [current override last active was-active]} :cursor :as entities}]
-
- (if (= 0.0 (get-in entities [:fade :opacity]))
- (let [new-current (or override current)]
- (when-not (and (= new-current
- last)
- (= active was-active))
- (let [image-path (if active "cursor_light.png" "cursor.png")]
- (input! :set-cursor-image (utils/cursor image-path (or (:cursor new-current) new-current)) 0 0)))
- (update-in entities [:cursor ] assoc :last new-current
- :was-active active))
- entities))
+(defn update-cursor [{:keys [total-time] :as screen} {{:keys [override last depressed? time-changed] :or {time-changed 0}} :cursor :as entities}]
+(let [new-current (or override (get-selected-inventory-item) :main)
+ time-changed (double time-changed)
+ total-time (double total-time)]
+ (cond
+ (not= 0.0 (get-in entities [:fade :opacity]))
+ entities
-(defn get-animation-point [^Animation animation total-time]
- (loop [time total-time]
- (if (> (- time (animation! animation :get-animation-duration)) 0)
- (recur (- time (animation! animation :get-animation-duration)))
- time)))
+ (< (unchecked-subtract total-time time-changed) 0.15)
+ entities
-(defn animate [entity screen]
- (merge entity (animation->texture (update-in screen [:total-time] #(- % (:anim-start entity)))
- (:anim entity))
- {:current-frame-index (animation! ^Animation (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity))))
- :previous-frame-index (animation! ^Animation (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity) (or (:delta-time screen) 0))))
- :origin-x (or (get-in entity [:anim-origins (:anim entity) 0])
- (:base-origin-x entity)
- (:origin-x entity))
- :origin-y (or (get-in entity [:anim-origins (:anim entity) 1])
- (:base-origin-y entity)
- (:origin-y entity))}
- (or (get-in entity [:anim-merges (:anim entity)])
- (get-in entity [:anim-merges :default]))))
+ (= [new-current depressed?] last)
+ entities
+
+ :else
+ (do
+ (graphics! :set-cursor (utils/cursor "cursor.png"
+ (utils/translate-depressed (or (:cursor new-current) new-current)
+ depressed?)))
+ (update-in entities [:cursor ] assoc
+ :last [new-current depressed?]
+ :time-changed total-time
+ :offset (utils/+cursor-hotspots+ (or (:cursor new-current) new-current) [0 0]))))))
+
+
+(defn get-looped-animation-point ^double [^Animation animation ^double total-time]
+ (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 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)
+ animated-time (unchecked-subtract total-time anim-start)
+ last-animated-time (unchecked-subtract animated-time delta-time)
+ current-frame-index (animation! ^Animation anim :get-key-frame-index
+ (if anim-loop?
+ (get-looped-animation-point anim animated-time)
+ animated-time))
+
+ previous-frame-index (animation! ^Animation anim :get-key-frame-index
+ (if anim-loop?
+ (get-looped-animation-point anim last-animated-time)
+ last-animated-time))]
+
+ (if (and (= current-frame-index (:current-frame-index entity) (:previous-frame-index entity))
+ (not (:force-rerender entity)))
+ entity
+ (merge (-> entity
+ (assoc :object (.getKeyFrame ^Animation anim (- total-time anim-start) anim-loop?))
+ (assoc :force-rerender nil)
+ (assoc :current-frame-index current-frame-index)
+ (assoc :previous-frame-index previous-frame-index)
+ (assoc :origin-x (or (-> entity :anim-origins (get anim) (nth 0))
+ (:base-origin-x entity)
+ (:origin-x entity)))
+ (assoc :origin-y (or (-> entity :anim-origins (get anim) (nth 1))
+ (:base-origin-y entity)
+ (:origin-y entity))))
+ (or (-> entity :anim-merges (get anim))
+ (-> entity :anim-merges :default))))))
(defn get-layers [entities]
@@ -922,7 +887,7 @@ void main ()
:active? true
:last-room :dream
:time :intro
- :obtained-items #{}
+ :obtained-items #{}
:inventory []
:plaques-read #{}
:clues #{}
@@ -932,22 +897,36 @@ void main ()
(defn fade-in-first-time-if-necessary [screen entities]
(if (not (get-in entities [:started? :value]))
(do (music! (utils/get-current-music entities) :set-volume (utils/current-music-volume (get-in entities [:volume :value])))
- (utils/play-music (get-in entities [:musics (actions/get-music (get-in entities [:room :music]) (get-in entities [:state :time]))]))
- (assoc entities
- :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0 :ease tween/ease-in-cubic
- :finish #(if (not (get-in % [:state :seen-intro?]))
- (do ((actions/get-script % (rooms.dream/do-intro %)) entities)
- %)
- %))
- :fade-in-music (tween/tween :fade-in-music screen [:volume :value] 0.0 1.0 1.0 :ease tween/ease-in-cubic)}
- :started? {:value true
- :object nil}))
+ (utils/play-music (get-in entities [:musics (actions/get-music (get-in entities [:room-musics (doto (get-in entities [:state :last-room]) println)]) (get-in entities [:state :time]))]))
+ (-> entities
+ (assoc
+ :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0 :ease tween/ease-in-cubic
+ :finish #(if (not (get-in % [:state :seen-intro?]))
+ (do ((actions/get-script % (rooms.dream/do-intro %)) entities)
+ %)
+ %))
+ :fade-in-music (tween/tween :fade-in-music screen [:volume :value] 0.0 1.0 1.0 :ease tween/ease-in-cubic)}
+ :started? {:value true
+ :object nil})
+ (assoc-in [:fade :opacity] 1.0)))
entities))
-(defn play-sound-if-necessary [screen entities target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e}]
+(defn get-necessary-sound [anim-sound-frames previous-frame-index current-frame-index]
+ (loop [x (inc previous-frame-index)]
+ (cond
+ (anim-sound-frames x)
+ (anim-sound-frames x)
+
+ (< x current-frame-index )
+ (recur (inc x))
+
+ :else
+ nil)))
+
+(defn play-sound-if-necessary [screen entities target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e :or {anim-sound-frames {}}}]
(if (and (not= previous-frame-index current-frame-index)
- ((set (keys anim-sound-frames)) anim))
- (if-let [[snd vol-scale pitch] (get-in anim-sound-frames [anim current-frame-index])]
+ (anim-sound-frames anim))
+ (if-let [[snd vol-scale pitch] (get-necessary-sound (anim-sound-frames anim) previous-frame-index current-frame-index)]
(let [snd (if (fn? snd)
(snd entities)
snd)
@@ -956,7 +935,7 @@ void main ()
(utils/sourced-volume-fn target vol-scale [x y]))]
(utils/play-sound! screen entities
(or (snd e) snd)
- vol-scale
+ vol-scale
(utils/get-sound-pan x)
:once
pitch))
@@ -964,12 +943,13 @@ void main ()
entities))
(defn play-key-sounds [screen entities]
- (if (= (get-in entities [:fade :opacity]) 0.0)
- (loop [entities entities
- [[target e] & rest] (seq (get-in entities [:room :entities]))]
- (if e
- (recur (play-sound-if-necessary screen entities target e) rest)
- entities))
+ (if (= (get-in entities [:fade :opacity]) 0.0)
+ (reduce-kv (fn [es target e]
+ (if e
+ (play-sound-if-necessary screen es target e)
+ es))
+ entities
+ (-> entities :room :entities))
entities))
(defn update-current-sound-vols! [entities]
@@ -985,7 +965,7 @@ void main ()
(update-in entities [:current-sounds :value]
(fn [sounds]
(filter #(or (= :loop (:type %))
- (> (:ends-at %) (:total-time screen)))
+ (> ^double (:ends-at %) ^double (:total-time screen)))
sounds))))
(defn update-from-room [screen entities]
@@ -993,66 +973,87 @@ void main ()
(update-fn screen entities)
entities))
-(defn render-parallax [{:keys [^OrthographicCamera camera ^Stage renderer ^ShaderProgram shader] :as screen} {:keys [parallax ^float multiply-amount ^float hue-amount] :as e }]
-
+(defn render-parallax [{:keys [^OrthographicCamera camera ^Stage renderer ^ShaderProgram shader] :as screen} {:keys [parallax ^float multiply-amount ^float hue-amount] :as e :or {parallax 1.0}}]
+
(let [tmp (Vector3.)
tmp2 (Vector3.)
+ original-combined (.cpy (.combined camera))
parallax-view (Matrix4.)
- parallax-combined (Matrix4.)]
+ parallax-combined (Matrix4.)
+ p (float parallax)]
(.update camera)
(.set tmp (.position camera))
- (set! (.x tmp) (* (.x tmp) parallax))
- (set! (.y tmp) (* (.y tmp) parallax))
+ (set! (.x tmp) (float (* (.x tmp) p)))
+ (set! (.y tmp) (float (* (.y tmp) p)))
(.setToLookAt parallax-view tmp (-> tmp2
(.set tmp)
(.add (.direction camera)))
(.up camera))
(.set parallax-combined (.projection camera))
(Matrix4/mul (.val parallax-combined) (.val parallax-view))
-
-
+
+
+ ;; todo turn this into a thing that overrides projection matrices
+ ;; and renders using regular render
(let [^Batch batch (.getBatch renderer)]
- (.begin batch)
+
(.setProjectionMatrix batch parallax-combined)
(.setShader batch shader)
(when shader
(.setUniformf shader "multiply_amount" (float (or multiply-amount 1.0)))
- (.setUniformf shader "hue_amount" (float (or hue-amount 1.0))))
+ (.setUniformf shader "hue_amount" (float (or hue-amount 0.0))))
(.setColor batch (color (:r e 1.0) (:g e 1.0) (:b e 1.0) (:opacity e 1.0)))
-
- (entities/draw! (assoc e :x (+ (/ (:x e) (.zoom camera))
- (- (* 320 parallax 0.5)
+
+
+ (entities/draw! (assoc e :x (+ (/ ^double (:x e) (.zoom camera))
+ (- (* 320 p 0.5)
(/ 160 (.zoom camera)) ))
- :y (+ (/ (:y e) (.zoom camera))
- (- (* 240 parallax 0.5)
+ :y (+ (/ ^double (:y e) (.zoom camera))
+ (- (* 240 p 0.5)
(/ 120 (.zoom camera))))) screen batch)
(.setColor batch (color 1 1 1 1))
- (.end batch))))
+ (.set (.combined camera) original-combined))))
-(defn get-rendered [entities e]
+(def nighttime-times #{:night :dawn})
+(defn get-rendered [entities {:keys [time ^double y ^double offset-y night-profile] :or {night-profile :default} :as e}]
(as-> e e
- (merge e
- (when (#{:night :sunrise} (get-in entities [:state :time]))
- (get-in entities [:time-profiles (:night-profile e :default)]))
- )
- (if (:offset-y e)
- (assoc e :y (+ (:y e) (:offset-y e)))
+ (if (or (-> entities :tweens :dawn-r)
+ (and (not= time (-> entities :state :time))
+ (nighttime-times (-> entities :state :time))))
+ (-> e
+ (merge (-> entities :time-profiles night-profile))
+ (assoc :time (-> entities :state :time)))
+ e)
+ #_(if offset-y
+ (assoc e :y (+ y offset-y))
e)))
+(defn mouse-moved [screen entities {:keys [input-x input-y] :as options}]
+ (when-not (get-in entities [:cam :pinching])
+ (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y]) options)))
+(defn grab-layers [entities]
+ (update-in entities [:room]
+ (fn [{:keys [layers current-layers] :as room}]
+ (cond (and current-layers
+ (not (get-in entities [:tweens :dawn-r])))
+ room
+ (map? layers)
+ (assoc room :current-layers (map (partial get-rendered entities) ((get-in entities [:state :time]) layers)))
-(defn mouse-moved [{:keys [input-x input-y viewport] :as screen} [entities]]
- (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y])))
+ :else
+ (assoc room :current-layers (map (partial get-rendered entities) layers))
+ ))))
-(defn add-georgia-to-all-rooms [screen rooms]
- (let [georgia-talk (utils/make-anim "ego/georgia.png" [30 30] 0.15 [0 1 0 1 0 0 1 0 1 2])
- georgia-stand (utils/make-anim "ego/georgia.png" [30 30] 0.3 [0 0 0 0 0 0 0 2 0 0 0 0 2])
- georgia-love (utils/make-anim "ego/in-love.png" [30 30] 0.1 [0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 4 5 6 7 8 9 10 11 12 13 14 14 14 15 15 15 14 14 14 14 14 14 14 14 15 15 15 15 15 14 14 14 14 15 15 15 15 15 15 14 14 14 14 14])
+(defn add-georgia [room screen global-atlas]
+ (let [georgia-talk (utils/make-anim global-atlas "ego/georgia" [30 30] 0.15 [0 1 0 1 0 0 1 0 1 2])
+ georgia-stand (utils/make-anim global-atlas "ego/georgia" [30 30] 0.3 [0 0 0 0 0 0 0 2 0 0 0 0 2])
+ georgia-love (utils/make-anim global-atlas "ego/in-love" [30 30] 0.1 [0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 16 17 18 17 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 4 5 6 7 8 9 10 11 12 13 14 14 14 15 15 15 14 14 14 14 14 14 14 14 15 15 15 15 15 14 14 14 14 15 15 15 15 15 15 14 14 14 14 14])
georgia-face (rooms/make-entity :georgia-face
(assoc (animation->texture screen georgia-stand)
@@ -1066,250 +1067,363 @@ void main ()
:x 100 :y 100 :baseline 242 :origin-x 15 :origin-y 15
:opacity 0.0))
georgia-cloud (assoc (particle-effect "particles/cloud-georgia") :x 100 :y 100 :baseline 241 :opacity 0.0)]
- (reduce (fn [rooms room-key]
- (update-in rooms [room-key :entities]
- assoc
- :georgia-face georgia-face
- :georgia-cloud georgia-cloud))
- rooms
- (keys rooms))))
+ (-> room
+ (assoc-in [:entities :georgia-face ] georgia-face)
+ (assoc-in [:entities :georgia-cloud] georgia-cloud))))
+(defn remove-cam-tweens [entities]
+ (update-in entities [:tweens] dissoc :cam-x :cam-y :cam-zoom))
+
+(defn render [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} {{:keys [last-pos ] [cursor-offset-x cursor-offset-y] :offset} :cursor :keys [tweens] :as entities} options]
+ #_(steam/update)
+ (.apply viewport)
+
+ (if (-> entities :closing? :value)
+
+ (let [entities (utils/apply-tweens screen entities tweens)
+ entities (update-current-sound-vols! entities)
+ entities (remove-ended-sounds screen entities)
+ get-rendered (partial get-rendered entities)
+ entities (loop [entities entities
+ [[k e] & rest] (seq (-> entities :room :entities))]
+ (if k
+ (recur (update-in entities [:room :entities k] get-rendered) rest)
+ entities))
+ entities (grab-layers entities)
+ layers (-> entities :room :current-layers)
+ all-entities (-> layers (into (vals (-> entities :room :entities))) (conj (:white-fade entities)))]
+ (screen! fade-screen :update-fade {:opacity (-> entities :fade :opacity)})
+ (utils/eager-loop (-> entities :musics-v :v) m
+ (when m
+ (music! m :set-volume (utils/current-music-volume (-> entities :volume :value)))))
+
+ (clear!)
+ (utils/eager-loop (vec (sort-by :baseline all-entities)) e
+ (if (:parallax e)
+ (render-parallax screen e)
+ (render-one screen e)))
+ entities)
+ (let [entities (fade-in-first-time-if-necessary screen entities)
+ entities (utils/apply-tweens screen entities tweens)
+ entities (update-cursor screen entities)
+ entities (start-script-if-necessary screen entities :fg-actions)
+ entities (update-from-script screen entities :fg-actions)
+ entities (start-script-if-necessary screen entities :bg-actions)
+ entities (update-from-script screen entities :bg-actions)
+ entities (update-from-room screen entities)
+ entities (update-from-hotspots screen entities)
+ [last-pos-x last-pos-y] (utils/unproject screen nil last-pos)
+ last-pos-x (double last-pos-x)
+ last-pos-y (double last-pos-y)
+ entities (if (and (@utils/settings :camera-man? true)
+ (not (-> entities :cam :paused?))
+ (nil? (-> entities :tweens :cam-x))
+ (= 1 (rand-int 20)))
+ (if (= (rand-int 2) 1)
+ (actions/pan-to screen entities
+ (-> entities :room :entities :ego :x)
+ (-> entities :room :entities :ego :y)
+ (constantly (-> entities :room :entities :ego :scale-x))
+ tween/ease-in-out-quadratic
+ 5.0)
+ (actions/pan-to screen entities
+ (+ ^double (get-in entities [:cam :x] 0)
+ (- 10 ^double (rand-int 20)))
+ (+ ^double (get-in entities [:cam :y] 0)
+ (- 10 ^double (rand-int 20)))
+ (constantly (-> entities :room :entities :ego :scale-x))
+ tween/ease-in-out-quadratic
+ 5.0))
+ entities)
+
+
+ entities (grab-layers entities)
+ update-room (fn [{:keys [anim update-fn] :as e}]
+ (let [e (if (:anim e)
+ (animate e screen)
+ e)
+
+ e (if update-fn
+ (update-fn screen (-> entities :room :entities) e)
+ e)
+ e (get-rendered entities e)]
+ e))
+ entities (loop [room (transient (-> entities :room :entities))
+ [[k e] & rest] (doall (seq (-> entities :room :entities)))]
+ (if k
+ (recur (assoc! room k (update-room e))
+ rest)
+ (assoc-in entities [:room :entities] (persistent! room))))
+ layers (-> entities :room :current-layers)
+ all-entities (-> layers (into (vals (-> entities :room :entities))) (conj (:white-fade entities)))]
+
+ (screen! tooltip-screen :on-hover-start {:hover-text (-> entities :label :text)
+ :scene-viewport (:viewport screen)
+ :cursor (:cursor entities)
+ :x (unchecked-subtract last-pos-x
+ cursor-offset-x)
+ :y (unchecked-add (unchecked-subtract last-pos-y 16 )
+ cursor-offset-y)})
+
+ (clear!)
+ (screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)})
+ (screen! fade-screen :update-fade { :opacity (-> entities :fade :opacity)})
+ (when true #_(not (-> entities :cam :paused?))
+ (set! (. camera zoom) (:zoom (:cam entities)))
+ (set! (.. camera position x) (:x (:cam entities) 160.0))
+ (set! (.. camera position y) (:y (:cam entities) 120.0)))
+ (let [entities (if utils/mobile?
+ (utils/update-override screen entities options)
+ (utils/update-override screen entities options))
+ entities (play-key-sounds screen entities)
+ entities (update-current-sound-vols! entities)
+ entities (remove-ended-sounds screen entities)]
+ (utils/eager-loop (-> entities :musics-v :v) m
+ (when m
+ (music! m :set-volume (utils/current-music-volume (-> entities :volume :value)))))
+ (utils/eager-loop (vec (doall (sort-by :baseline all-entities))) e
+ (if (:parallax e)
+ (render-parallax screen e)
+ (render-one screen e)))
+
+ entities))))
(defscreen scene
:on-timer
- (fn [screen [entities]]
- (when-let [timer-fn (get-in entities [:room :timers (:id screen) 2])]
+ (fn [screen entities options]
+ (when-let [timer-fn (get-in entities [:room :timers (:id options) 2])]
(timer-fn screen entities)))
:on-show
- (fn [screen entities]
+ (fn [screen entities options]
(log/info "Initializing scene.")
-
- (let [screen (assoc screen :total-time 0)]
- (let [[^OrthographicCamera cam] (utils/setup-viewport screen 320 240)]
- (set! (. cam zoom) 0.95)
- (let [shader (ShaderProgram. ^String v-shader ^String pix-shader)
- _ (log/info "shader log:" (.getLog shader))
- state (get-state @utils/selected-save)
- start-pos [(:x state) (:y state)]
- has-start-pos? (:x state)
+ (let [[screen global-atlas] (utils/acquire-atlas screen "packed/global.atlas")
+ {cam :camera :as screen} (utils/setup-viewport screen 320 240)
+ screen (assoc screen :total-time 0)]
+ (set! (. cam zoom) utils/min-zoom)
+ (let [shader (ShaderProgram. ^String (v-shader) ^String (pix-shader))
+ _ (log/info "shader log:" (.getLog shader))
+ state (get-state @utils/selected-save)
+ start-pos [(:x state) (:y state)]
+ has-start-pos? (:x state)
- _ (update! screen :shader shader)
- rooms {:inside-house (rooms.inside-house/make screen)
- :inside-stash (rooms.inside-stash/make screen)
- :outside-house (rooms.outside-house/make screen)
- :behind-house (rooms.behind-house/make screen)
- :cat-tree (rooms.cat-tree/make screen)
- :inside-castle (rooms.inside-castle/make screen)
- :space (rooms.space/make screen)
- :held (rooms.held/make screen)
- :inside-cafeteria (rooms.inside-cafeteria/make screen)
- :inside-antique (rooms.inside-antique/make screen)
- :inside-jail (rooms.inside-jail/make screen)
- :dream (rooms.dream/make screen)
- :ending (rooms.ending/make screen)
- :castle-gate (rooms.castle-gate/make screen)
- :outside-jail (rooms.outside-jail/make screen)
- :outside-castle (rooms.outside-castle/make screen)}
- rooms (add-georgia-to-all-rooms screen rooms)
- entities {:rooms rooms
- :step-particles (assoc (particle-effect "particles/step") :x 100 :y 100 :baseline 241)
- :cam {:zoom 0.95
- :paused? false
- :object nil}
-
- :current-sounds {:object nil
- :value []}
- :musics {:object nil
- :inside-antique (utils/make-music "music/inside-antique.ogg")
- :town-1 (utils/make-music "music/town-music-1.ogg")
- :town-2 (utils/make-music "music/town-music-2.ogg")
- :love (utils/make-music "music/love.ogg")
- :inside-fangald (utils/make-music "music/inside-fangald.ogg")
- :fight (utils/make-music "music/megaboss.mp3")
- :pull-sword (utils/make-music "music/pull-sword.ogg")
- :night (utils/make-music "music/night.ogg")
- :dream (utils/make-music "dream/music.ogg")
- :secret-hideout (utils/make-music "music/secret-hideout.ogg")
- :wind (utils/make-music "music/wind.ogg")}
- :state state
- :time-profiles {:object nil
- :default utils/default-night-merge
- :sprite utils/default-night-merge-sprite
- :none {}}
+ _ (update! screen :shader shader)
+ log-assets (fn [r] r)
+ wrap (fn [maker atlas-file]
+ (fn [screen]
+ (let [[screen atlas] (utils/acquire-atlas screen atlas-file :room)
+ [screen global-atlas ] (utils/acquire-atlas screen "packed/global.atlas" :room)]
- :closing? {:object nil
- :value false}
- :sounds {:blink (utils/load-sound "ego/blink2.ogg")
- :pickup (utils/load-sound "pickup.ogg")
- :disappear (utils/load-sound "inside-house/disappear.ogg")
- :grow-sound (utils/load-sound "ego/potion.ogg")
+ (-> (maker screen atlas global-atlas)
+ (add-georgia screen global-atlas)))))
+ rooms {:inside-house (wrap rooms.inside-house/make "packed/inside-house.atlas")
+ :inside-stash (wrap rooms.inside-stash/make "packed/inside-stash.atlas")
+ :outside-house (wrap rooms.outside-house/make "packed/outsidehouse.atlas")
+ :behind-house (wrap rooms.behind-house/make "packed/behindhouse.atlas")
+ :cat-tree (wrap rooms.cat-tree/make "packed/cat-tree.atlas")
+ :inside-castle (wrap rooms.inside-castle/make "packed/inside-castle.atlas")
+ :space (wrap rooms.space/make "packed/space.atlas")
+ :held (wrap rooms.held/make "packed/held.atlas")
+ :inside-cafeteria (wrap rooms.inside-cafeteria/make "packed/inside-cafeteria.atlas")
+ :inside-antique (wrap rooms.inside-antique/make "packed/inside-antique.atlas")
+ :inside-jail (wrap rooms.inside-jail/make "packed/inside-jail.atlas")
+ :dream (wrap rooms.dream/make "packed/dream.atlas")
+ :ending (wrap rooms.ending/make "packed/ending-castle.atlas")
+ :castle-gate (wrap rooms.castle-gate/make "packed/castle-gate.atlas")
+ :outside-jail (wrap rooms.outside-jail/make "packed/outside-jail.atlas")
+ :outside-castle (wrap rooms.outside-castle/make "packed/outside-castle.atlas") }
+
+ entities {:rooms rooms
+ :room-musics {:inside-house :inside-fangald
+ :inside-stash {:day :secret-hideout :night :secret-hideout}
+ :outside-house {:day :town-2 :night :night :sunrise :night}
+ :behind-house {:day :town-2 :night :night :sunrise :night}
+ :cat-tree {:day :town-2 :night :night :sunrise :night}
+ :inside-castle {:day :town-1 :night :night :sunrise :night}
+ :space :fight
+ :held :fight
+ :inside-cafeteria {:day :town-1 :night :night :sunrise :night}
+ :inside-antique :inside-antique
+ :inside-jail :inside-antique
+ :dream {:intro :wind :day :dream}
+ :ending :dream
+ :castle-gate {:day :town-2 :night :night}
+ :outside-jail {:day :town-1 :night :night :sunrise :night}
+ :outside-castle {:day :town-2 :night :night} }
+ :step-particles (assoc (particle-effect "particles/step") :x 100 :y 100 :baseline 241)
+ :cam {:zoom utils/min-zoom
+ :ideal-x 160
+ :ideal-y 120
+ :x 160
+ :y 120
+ :paused? false
+ :object nil}
+
+ :current-sounds {:object nil
+ :value []}
+ :action-icon {}
+ :musics {:object nil
+ :inside-antique (utils/make-music "music/inside-antique.ogg")
+ :town-1 (utils/make-music "music/town-music-1.ogg")
+ :town-2 (utils/make-music "music/town-music-2.ogg")
+ :love (utils/make-music "music/love.ogg")
+ :inside-fangald (utils/make-music "music/inside-fangald.ogg")
+ :fight (utils/make-music "music/megaboss.mp3")
+ :pull-sword (utils/make-music "music/pull-sword.ogg")
+ :night (utils/make-music "music/night.ogg")
+ :dream (utils/make-music "dream/music.ogg")
+ :secret-hideout (utils/make-music "music/secret-hideout.ogg")
+ :wind (utils/make-music "music/wind.ogg")}
+ :state state
+ :time-profiles {:object nil
+ :default utils/default-night-merge
+ :sprite utils/default-night-merge-sprite
+ :none {}}
+
+ :closing? {:object nil
+ :value false}
+ :sounds {:blink (utils/load-sound "ego/blink2.ogg")
+ :pickup (utils/load-sound "pickup.ogg")
+ :disappear (utils/load-sound "inside-house/disappear.ogg")
+ :grow-sound (utils/load-sound "ego/potion.ogg")
+ :object nil}
+ :fade {:object nil
+ :opacity 0.0}
+ :white-fade (assoc (utils/atlas->texture global-atlas "white")
+ :scale-x 30
+ :scale-y 30
+ :baseline 9500
+ :opacity 0.0
+ :origin-x 0
+ :origin-y 0
+ :x -20
+ :y -20)
+ :fg-actions {:object nil
+ :channel (chan)
+ :current nil
+ :script-running? false
+ :started? false
+ :script-chan (chan (dropping-buffer 1))}
+ :bg-actions {:object nil
+ :channel (chan)
+ :current nil
+ :script-running? false
+ :started? false
+ :script-chan (chan (dropping-buffer 1))}
+ :volume {:object nil
+ :value 0.0}
+ :music-override {:object nil
+ :value nil}
+ :cursor {:id "cursor"
+ :last nil
+ :override :hourglass
+ :last-pos [0 0]
+ :offset [0 0 ]
+ :down-target nil}
+
+ :all-items (assoc items/items :object nil)
+ :started? {:value false
:object nil}
- :fade {:object nil
- :opacity 0.0}
- :white-fade (assoc (utils/get-texture "white.png")
- :scale-x 30
- :scale-y 30
- :baseline 9500
- :opacity 0.0
- :origin-x 0
- :origin-y 0
- :x -20
- :y -20)
- :fg-actions {:object nil
- :channel (chan)
- :current nil
- :script-running? false
- :started? false
- :script-chan (chan (dropping-buffer 1))}
- :bg-actions {:object nil
- :channel (chan)
- :current nil
- :script-running? false
- :started? false
- :script-chan (chan (dropping-buffer 1))}
- :volume {:object nil
- :value 0.0}
- :music-override {:object nil
- :value nil}
- :cursor {:id "cursor"
- :current :main
- :last nil
- :override :hourglass
- :last-pos [0 0]
- :down-target nil}
-
- :all-items (assoc items/items :object nil)
- :started? {:value false
- :object nil}
- :room (as-> (get rooms (:last-room state)) room
- (assoc-in room [:entities :ego] (get-ego screen (if has-start-pos?
- start-pos
- (:start-pos room))
- ((:scale-fn room)
- (if has-start-pos?
- start-pos
- (:start-pos room))))))}]
+ :room (as-> ((get rooms (:last-room state)) screen) room
+ (assoc-in room [:entities :ego] (get-ego screen global-atlas (if has-start-pos?
+ start-pos
+ (:start-pos room))
+ ((:scale-fn room)
+ (if has-start-pos?
+ start-pos
+ (:start-pos room))))))}
+ entities (assoc entities :musics-v {:v (vec (vals (get-in entities [:musics])))
+ :object nil})]
+ (log/info "assets so far", (.getDiagnostics *asset-manager*) )
+
- (doseq [[k [start time fn]] (get-in entities [:room :timers])]
- (add-timer! screen k start time))
-
- (log/info "[done] Initializing scene.")
+ (doseq [[k [start time fn]] (-> entities :room :timers)]
+ (add-timer! screen k start time))
- (if-let [apply-state (get-in entities [:room :apply-state])]
- (apply-state screen entities)
- entities)))))
+ (log/info "[done] Initializing scene.")
- :on-resume (fn [screen [{{:keys [current override last active was-active]} :cursor :as entities}]]
- (let [current (or override current)
- image-path (if active "cursor_light.png" "cursor.png")]
- (input! :set-cursor-image (utils/cursor image-path (or (:cursor current) current)) 0 0))
+ (if-let [apply-state (get-in entities [:room :apply-state])]
+ (apply-state screen entities)
+ entities))))
+
+ :on-resume (fn [screen {{:keys [current override last active was-active]} :cursor :as entities} options]
+ (let [current (or override (get-selected-inventory-item) :main)
+ image-path "cursor.png"]
+ (graphics! :set-cursor (utils/cursor image-path (or (:cursor current) current))))
(doseq [[k [start time fn]] (get-in entities [:room :timers])]
(add-timer! screen k start time)))
:on-key-up
- (fn [screen entities]
- (when (= (key-code :escape) (:key screen))
- (utils/toggle-fullscreen!))
- nil)
-
- :on-render
- (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} [entities]]
- (steam/update)
- (.apply viewport)
- (if (get-in entities [:closing? :value])
-
- (let [entities (utils/apply-tweens screen entities (:tweens entities))
- entities (update-current-sound-vols! entities)
- entities (remove-ended-sounds screen entities)
- layers (get-layers entities)
- all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))]
- (screen! fade-screen :update-fade :opacity (get-in entities [:fade :opacity]))
- (doseq [m (vals (get-in entities [:musics]))]
- (when m
- (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value])))))
+ (fn [screen entities options]
+ (cond
+ (= (key-code :escape) (:key options))
+ (utils/toggle-fullscreen!)
+
+ (and utils/mobile?
+ (= (key-code :m) (:key options)))
+ (-> entities
+ (remove-cam-tweens)
+ (assoc-in [:tweens :cam-zoom]
+ (tween/tween :cam-zoom screen
+ [:cam :zoom]
+ (get-in entities [:cam :zoom] 1.0)
+ utils/max-zoom
+ 1.5
+ :ease tween/ease-linear)))
+
+ :else
+ nil))
+
+
+ :pinch-stop
+ (fn [screen entities options]
+ (println "stopped pinching")
+ (when (get-in entities [:state :active?])
+ (-> entities
+ (remove-cam-tweens))))
+
+ :on-pinch
+ (fn [screen entities {:keys [initial-pointer-1 initial-pointer-2 pointer-1 pointer-2]}]
+ (when (get-in entities [:state :active?])
+ (let [start-zoom (get-in entities [:cam :start-zoom])
+ zoom (get-in entities [:cam :zoom])
+ initial-distance (.dst initial-pointer-1 initial-pointer-2)
+ distance (.dst pointer-1 pointer-2)
+ [pointer-1-x pointer-1-y] (utils/unproject screen nil [(.x initial-pointer-1) (.y initial-pointer-1)])
+ [pointer-2-x pointer-2-y] (utils/unproject screen nil [(.x initial-pointer-2) (.y initial-pointer-2)])]
- (clear!)
- (doseq [e (sort-by :baseline all-entities)]
- (if (:parallax e)
- (render-parallax screen (get-rendered entities e))
- (render! screen [(get-rendered entities e)]))))
- (let [entities (fade-in-first-time-if-necessary screen entities)
- entities (utils/apply-tweens screen entities (:tweens entities))
- entities (update-cursor screen entities)
- entities (start-script-if-necessary screen entities :fg-actions)
- entities (update-from-script screen entities :fg-actions)
- entities (start-script-if-necessary screen entities :bg-actions)
- entities (update-from-script screen entities :bg-actions)
- entities (update-from-room screen entities)
- entities (update-from-hotspots screen entities)
- entities (assoc-in entities [:room :entities :ego :last-frame] (get-in entities [:room :entities :ego :object]))
+ (as-> entities entities
+ (remove-cam-tweens entities)
- entities (update-in entities [:room :entities] (fn [entities]
- (into entities
- (for [[id entity] entities]
- (if (:anim entity)
- [id (animate entity screen)]
- [id entity])))))
- entities (update-in entities [:room :entities] (fn [entities]
- (into entities
- (for [[id entity] entities]
- (if (:update-fn entity)
- [id ((:update-fn entity) screen entities entity)]
- [id entity])))))
-
- entities (if (and (@utils/settings :camera-man? true)
- (not (get-in entities [:cam :paused?]))
- (nil? (get-in entities [:tweens :cam-x]))
- (= 1 (rand-int 20)))
- (if (= (rand-int 2) 1)
- (actions/pan-to screen entities
- (get-in entities [:room :entities :ego :x])
- (get-in entities [:room :entities :ego :y])
- (constantly (get-in entities [:room :entities :ego :scale-x]))
- tween/ease-in-out-quadratic
- 5.0)
- (actions/pan-to screen entities
- (+ (get-in entities [:cam :x] 0)
- (- 10 (rand-int 20)))
- (+ (get-in entities [:cam :y] 0)
- (- 10 (rand-int 20)))
- (constantly (get-in entities [:room :entities :ego :scale-x]))
- tween/ease-in-out-quadratic
- 5.0))
- entities)
+ (if (not start-zoom)
+ (-> entities
+ (assoc-in [:cam :start-zoom] zoom)
+ (assoc-in [:cam :ideal-x] (* 0.5 (+ pointer-1-x pointer-2-x)))
+ (assoc-in [:cam :ideal-y] (* 0.5 (+ pointer-1-y pointer-2-y))))
+ entities)
+ (assoc-in entities [:cursor :last-pos] [0 0])
-
- layers (get-layers entities)
-
- all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))]
- (clear!)
- (screen! talking-screen :on-update-camera :scene-viewport (:viewport screen) :scene-camera (:camera screen))
- (screen! fade-screen :update-fade :opacity (get-in entities [:fade :opacity]))
- (when true #_(not (get-in entities [:cam :paused?]))
- (set! (. camera zoom) (:zoom (:cam entities)))
- (set! (.. camera position x) (:x (:cam entities) 160.0))
- (set! (.. camera position y) (:y (:cam entities) 120.0)))
- (let [entities (utils/update-override screen entities)
- entities (play-key-sounds screen entities)
- entities (update-current-sound-vols! entities)
- entities (remove-ended-sounds screen entities)]
- (doseq [m (vals (get-in entities [:musics]))]
- (when m
- (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value])))))
- (doseq [e (sort-by :baseline all-entities)]
- (if (:parallax e)
- (render-parallax screen (get-rendered entities e))
- (render! screen [(get-rendered entities e)])))
-
- entities))))
+ (assoc-in entities [:cam :pinching] true)
- :on-resize (fn [{:keys [^FitViewport viewport width height]} [entities]]
- (.update viewport width height))
+ (assoc-in entities [:cam :x] (utils/bound-to-camera (get-in entities [:cam :ideal-x]) 320 (get-in entities [:cam :zoom])) )
+ (assoc-in entities [:cam :y] (utils/bound-to-camera (get-in entities [:cam :ideal-y]) 240 (get-in entities [:cam :zoom])) )
+ (assoc-in entities [:cam :zoom] (max utils/max-zoom (min utils/min-zoom (* (or start-zoom zoom) (/ initial-distance distance)))))))))
+
- :on-hide (fn [screen [entities]]
+ #_#_:on-scrolled
+ (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} entities options]
+
+ (update-in entities [:cam :zoom] #(* % (+ 1 (/ (double (:amount options)) 10.0 )))))
+
+ :on-render render
+
+
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
+ (.update viewport width height true))
+
+ :on-hide (fn [screen entities options]
(doseq [snd (->> (get-in entities [:musics])
vals
(filter identity))]
@@ -1317,74 +1431,100 @@ void main ()
:on-mouse-moved
mouse-moved
-
+
:on-touch-dragged
mouse-moved
-
+
:on-touch-down
- (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]]
+ (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [input-x input-y] :as options}]
+
(when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport)
(.getScreenWidth viewport) (.getScreenHeight viewport)
input-x input-y)
+ ; TODO: override cursor when started in black
(when (and (= (button-code :left)
- (:button screen))
+ (:button options))
(get-in entities [:state :active?])
(not (get-in entities [:state :hud-active?]))
(= 0.0 (get-in entities [:fade :opacity])))
- (let [[x y] (utils/unproject screen)
+ (let [[x y] (utils/unproject screen options)
+ entities (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y]) options)
interaction (get-interaction entities x y)
interacting-entity (get-interacting-entity entities x y)]
- (assoc-in entities [:cursor :down-target] (or (:id interacting-entity ) (:id interaction) nil))))))
+ (-> entities
+ (assoc-in [:cursor :depressed?] true)
+ (update-in [:cursor :counter] #(inc (or % 0)))
+ (update-in [:cursor :max-counter] #(inc (or % 0)))
+ (assoc-in [:cursor :down-target] (or (:id interacting-entity ) (:id interaction) nil)))))))
- :on-touch-up (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]]
-
- (when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport)
- (.getScreenWidth viewport) (.getScreenHeight viewport)
- input-x input-y)
- (if (= (button-code :right)
- (:button screen))
- (assoc-in entities [:cursor :current] :main)
- (when (and (get-in entities [:state :active?])
- (not (get-in entities [:state :hud-active?]))
- (= 0.0 (get-in entities [:fade :opacity])))
- (left-click screen entities)))))
+ :on-touch-up (fn [screen entities options]
+ (let [currently-pressed (dec (get-in entities [:cursor :counter] 1))
+ max-pressed (get-in entities [:cursor :max-counter] 1)]
+ (println "touched up" currently-pressed max-pressed (get-in entities [:state :hud-active?]) (get-in entities [:state :active?]) (get-in entities [:cam :pinching]))
+ (cond
+ (and (<= currently-pressed 0)
+ (<= max-pressed 1)
+ (not (get-in entities [:cam :pinching])))
+ (handle-touch-up screen
+ (-> entities
+ (assoc-in [:cursor :counter] 0)
+ (assoc-in [:cursor :max-counter] 0))
+ options)
- :on-deactivate (fn [screen [entities]]
+ (<= currently-pressed 0)
+ (-> entities
+ (assoc-in [:cursor :counter] 0)
+ (assoc-in [:cursor :max-counter] 0)
+ (update-in [:cam] dissoc :start-zoom :pinching))
+
+ (get-in entities [:state :active?])
+ (update-in entities [:cursor :counter] #(max 0 (dec (or % 1))))
+
+ :else
+ entities
+ )))
+
+ :on-tap (fn [screen entities options]
+ (println "tapping")
+ (when utils/mobile?
+ (handle-touch-up screen entities options)))
+
+ :on-deactivate (fn [screen entities options]
(assoc-in entities [:state :active?] false))
- :on-reactivate (fn [screen [entities]]
-
+ :on-reactivate (fn [screen entities {:keys [came-from-inventory?]}]
(-> entities
(assoc-in [:state :active?] true)
- (assoc-in [:cursor :override] nil)))
+ (assoc-in [:cursor :came-from-inventory?] came-from-inventory?)))
- :on-end-safe (fn [screen [entities]]
+ :on-end-safe (fn [screen entities options]
((actions/get-script entities
(actions/play-animation entities :ego :end-squat)) entities)
(-> entities
(assoc-in [:state :active?] true)
(assoc-in [:cursor :override] nil)))
- :on-chose-item (fn [{:keys [item]} [entities]]
- (assoc-in entities [:cursor :current] item))
+ :on-open-inventory (fn [screen entities options]
+ (open-inventory screen entities))
- :on-show-inventory (fn [screen [entities]]
+ :on-click-inventory (fn [screen entities options]
(click-inventory screen entities))
- :on-save (fn [screen [entities]]
- (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)
- (screen! toast-screen :on-toast :message (str "Saved \"" save-name "\"")))))
- :on-menu (fn [{:keys [viewport] :as screen} [entities]]
+ :on-save (fn [screen entities options]
+ (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)]
+ (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]
(when-not (or (get-in entities [:tweens :fade-out])
(get-in entities [:tweens :fade-in]))
-
- (input! :set-cursor-image (utils/cursor "cursor.png" :hourglass) 0 0)
+
+ (graphics! :set-cursor (utils/cursor "cursor.png" :hourglass))
(-> entities
(assoc-in [:closing? :value] true)
(assoc-in [:tweens :fade-out-music]
@@ -1392,25 +1532,27 @@ void main ()
(assoc-in [:tweens :fade-out]
(tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0
:finish #(do
+ (-> screen
+ (utils/release-resources :room)
+ (utils/release-resources :default))
(utils/stop-all-sounds! %)
- (.clear @(resolve 'advent.core/am))
(set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen))
%))))))
- :on-start-script (fn [{:keys [script]} [entities]]
+ :on-start-script (fn [screen entities {:keys [script]}]
(script entities)
entities)
- :hud-active? (fn [{:keys [hud-active?]} [entities]]
+ :hud-active? (fn [screen entities {:keys [hud-active?]}]
(assoc-in entities [:state :hud-active?] hud-active?))) ()
(defn grow-hud [screen entities target up?]
-
+
(let [grow-or-shrink (if up? :grow :shrink)
- scale-from (if up? 1.0 1.1)
- scale-to (if up? 1.1 1.0)
- opacity-from (if up? 0.8 1.0)
- opacity-to (if up? 1.0 0.8)]
+ scale-from (* utils/ui-scale (if up? 1.0 1.1))
+ scale-to (* utils/ui-scale (if up? 1.1 1.0))
+ opacity-from (* utils/ui-scale (if up? 0.8 1.0))
+ opacity-to (* utils/ui-scale (if up? 1.0 0.8))]
(if (and (not (get-in entities [:tweens [target grow-or-shrink :x]]))
(not= scale-to (get-in entities [target :scale-y] 1.0)))
(-> entities
@@ -1422,56 +1564,397 @@ void main ()
(tween/tween [target grow-or-shrink :opacity] screen [target :opacity] opacity-from opacity-to 0.15 :ease tween/ease-in-out-quadratic)))
entities)))
+(defn get-selected-inventory-item []
+ (let [{{:keys [state state-data]} :inv-fsm} (-> hud :entities deref)]
+ (if (= state :selected)
+ state-data
+ nil)))
+
(defscreen demo
:on-show
- (fn [screen entities]
- (let [screen (assoc screen :total-time 0)]
+ (fn [screen entities options]
+ (let [screen (assoc screen :total-time 0)]
(utils/setup-viewport screen 640 480)
{:label (assoc (label "Demo version - DO NOT COPY" (color :white) ) :y 460 :x 5 :baseline 0 :opacity 0.5)}))
-
+
:on-render
- (fn [{:keys [^FitViewport viewport] :as screen} [entities]]
+ (fn [{:keys [^FitViewport viewport] :as screen} entities options]
(.apply viewport)
- (render! screen [(:label entities)])
+ (render-one screen (:label entities))
entities)
:on-resize
- (fn [{:keys [^FitViewport viewport width height]} entities]
- (.update viewport width height true))
+ (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
+ (.update viewport width height true)))
-)
(defn hud-interactable? []
- (let [[scene-entities] (-> scene :entities deref)]
+ (let [scene-entities (-> scene :entities deref)]
(and (not (get-in scene-entities [:fg-actions :script-running?]))
(get-in scene-entities [:state :active?])
(= 0.0 (get-in scene-entities [:fade :opacity])))))
+(defmulti transition-hud (fn [screen entities new-state state-data]
+
+ [(get-in entities [:inv-fsm :state]) new-state]))
+
+(defmethod transition-hud :default [screen entities new-state state-data] entities)
+
+(defprotocol ITransition
+ (start-transition [this screen entities])
+ (transition-done? [this screen entities]))
+
+(defn accept-state [entities state state-data transitions]
+ (-> entities
+ (assoc-in [:inv-fsm :state] state)
+ (assoc-in [:inv-fsm :state-data] state-data)
+ (assoc-in [:inv-fsm :transition-steps] transitions)))
+
+(defn appear-transition [item hide-or-show in-or-out]
+ (let [notify (atom false)]
+ (reify ITransition
+ (start-transition [this screen entities]
+
+ (let [upright? (= 0.0 (get-in entities [:inventory :angle] 0.0))]
+ (if upright?
+ (let [fade-tween (if (= :hide hide-or-show)
+ (tween/tween :appear-item screen [:selected-item :opacity] 1.0 0.0 0.5 :ease tween/ease-linear :finish (fn [e] (reset! notify true) e))
+ (tween/tween :appear-item screen [:selected-item :opacity] 0.0 1.0 0.5 :ease tween/ease-linear :finish (fn [e] (reset! notify true) e)))
+
+ move-tween (condp = in-or-out
+ :far-out
+ (tween/tween :appear-item-y screen [:selected-item :y] (* utils/ui-scale 35) (* utils/ui-scale 40) 0.5 :ease tween/ease-linear)
+ :out
+ (tween/tween :appear-item-y screen [:selected-item :y] (* utils/ui-scale 30) (* utils/ui-scale 35) 0.5 :ease tween/ease-linear)
+
+ :in
+ (tween/tween :appear-item-y screen [:selected-item :y] (* utils/ui-scale 35) (* utils/ui-scale 30) 0.5 :ease tween/ease-linear)
+
+ :none
+ (tween/tween :appear-item-y screen [:selected-item :y] (* utils/ui-scale 35) (* utils/ui-scale 35) 0.5 :ease tween/ease-linear))]
+ (-> entities
+ (assoc :selected-item
+ (assoc (texture (aget (get-in entities [:all-items]) 0 (.indexOf utils/+all-cursors+ (:cursor item))))
+ :origin-x 8
+ :origin-y 0
+ :scale-x utils/ui-scale
+ :scale-y utils/ui-scale
+ :x (* utils/ui-scale 12)
+ :y (* utils/ui-scale (condp = in-or-out
+ :in
+ 35
+ :out
+ 30
+ :none
+ 35
+ :far-out
+ 35))
+ :baseline 9000
+ :opacity (if (= :hide hide-or-show) 1.0 0.0)
+ :item item))
+ (assoc-in [:tweens :appear-item] fade-tween)
+
+ (assoc-in [:tweens :appear-item-y] move-tween)))
+ (do
+ (screen! tooltip-screen :on-select-item {:in-or-out in-or-out
+ :selected-item item
+ :hide-or-show hide-or-show
+ :upright? upright?
+ :notify notify})
+ entities))))
+ (transition-done? [this screen entities]
+ @notify))))
+
+(defmethod transition-hud [:none :open]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(reify ITransition
+ (start-transition [this screen entities]
+ (let [rotate-tween (tween/tween :rotate-pack screen [:inventory :angle] 0.0 -90.0 0.35 :ease tween/ease-linear)
+ y-tween (tween/tween :y-pack screen [:inventory :y] (* utils/ui-scale 27) (* utils/ui-scale 5) 0.35 :ease tween/ease-in-cubic)
+ x-tween (tween/tween :x-pack screen [:inventory :x] (* utils/ui-scale 21) (* utils/ui-scale 15) 0.35 :ease tween/ease-in-cubic)]
+ (-> entities
+ (assoc-in [:tweens :rotate-pack] rotate-tween)
+ (assoc-in [:tweens :y-pack] y-tween)
+ (assoc-in [:tweens :x-pack] x-tween)
+ (update-in [:inventory] #(actions/start-animation screen % :open)))))
+ (transition-done? [this screen entities]
+ (animation! (get-in entities [:inventory :anim])
+ :is-animation-finished
+ (- ^double (:total-time screen) ^double (get-in entities [:inventory :anim-start])))))
+
+ (reify ITransition
+ (start-transition [this screen entities]
+ (update-in entities [:inventory] #(actions/start-animation screen % :opened)))
+ (transition-done? [this screen entities]
+ true))
+
+ (reify ITransition
+ (start-transition [this screen entities]
+ (screen! scene :on-open-inventory {})
+ entities)
+ (transition-done? [this screen entities]
+ true))]))
+
+(defmethod transition-hud [:open :none]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(reify ITransition
+ (start-transition [this screen entities]
+ (let [rotate-tween (tween/tween :rotate-pack screen [:inventory :angle] -90.0 0.0 0.35 :ease tween/ease-linear)
+ y-tween (tween/tween :y-pack screen [:inventory :y] (* utils/ui-scale 5) (* utils/ui-scale 27) 0.35 :ease tween/ease-in-cubic)
+ x-tween (tween/tween :x-pack screen [:inventory :x] (* utils/ui-scale 15) (* utils/ui-scale 21) 0.35 :ease tween/ease-in-cubic)]
+ (-> entities
+ (assoc-in [:tweens :rotate-pack] rotate-tween)
+ (assoc-in [:tweens :y-pack] y-tween)
+ (assoc-in [:tweens :x-pack] x-tween)
+ (update-in [:inventory] #(actions/start-animation screen % :closing)))))
+ (transition-done? [this screen entities]
+ (animation! (get-in entities [:inventory :anim])
+ :is-animation-finished
+ (- ^double (:total-time screen) ^double (get-in entities [:inventory :anim-start])))))
+
+ (reify ITransition
+ (start-transition [this screen entities]
+ (update-in entities [:inventory] #(actions/start-animation screen % :default)))
+ (transition-done? [this screen entities]
+ true))]))
+
+(defmethod transition-hud [:open :selected]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(appear-transition state-data :show :out)]))
+
+(defmethod transition-hud [:selected :none]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(appear-transition (or state-data (get-in entities [:inv-fsm :state-data])) :hide :in)
+ (reify ITransition
+ (start-transition [this screen entities]
+ (let [rotate-tween (tween/tween :rotate-pack screen [:inventory :angle] -90.0 0.0 0.35 :ease tween/ease-linear)
+ y-tween (tween/tween :y-pack screen [:inventory :y] (* utils/ui-scale 5) (* utils/ui-scale 27) 0.35 :ease tween/ease-in-cubic)
+ x-tween (tween/tween :x-pack screen [:inventory :x] (* utils/ui-scale 15) (* utils/ui-scale 21) 0.35 :ease tween/ease-in-cubic)]
+ (-> entities
+ (assoc-in [:tweens :rotate-pack] rotate-tween)
+ (assoc-in [:tweens :y-pack] y-tween)
+ (assoc-in [:tweens :x-pack] x-tween)
+ (update-in [:inventory] #(actions/start-animation screen % :closing)))))
+ (transition-done? [this screen entities]
+ (animation! (get-in entities [:inventory :anim])
+ :is-animation-finished
+ (- ^double (:total-time screen) ^double (get-in entities [:inventory :anim-start])))))
+
+
+
+ (reify ITransition
+ (start-transition [this screen entities]
+ (-> entities
+ (update-in [:inventory] (fn [i] (actions/start-animation screen i :default)))
+ (dissoc :selected-item)))
+ (transition-done? [this screen entities]
+ true))]))
+
+(defmethod transition-hud [:selected :remove]
+ [screen entities state state-data]
+(let [current-item (get-in entities [:inv-fsm :state-data])
+ transitions (if (= state-data current-item )
+ [(appear-transition state-data :hide :far-out)
+ (reify ITransition
+ (start-transition [this screen entities]
+ (-> entities
+ (dissoc :selected-item)))
+ (transition-done? [this screen entities]
+ true))]
+ [(appear-transition current-item :hide :in)
+ (appear-transition state-data :show :out)
+ (appear-transition state-data :hide :far-out)
+ (reify ITransition
+ (start-transition [this screen entities]
+ (-> entities
+ (dissoc :selected-item)))
+ (transition-done? [this screen entities]
+ true))])]
+ (accept-state entities state state-data
+ transitions)))
+
+(defmethod transition-hud [:remove :selected]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(appear-transition state-data :show :out)]))
+
+(defmethod transition-hud [:none :remove]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(reify ITransition
+ (start-transition [this screen entities]
+ (update-in entities [:inventory] (fn [i] (actions/start-animation screen i :open))))
+ (transition-done? [this screen entities]
+ (animation! (get-in entities [:inventory :anim])
+ :is-animation-finished
+ (- ^double (:total-time screen) ^double (get-in entities [:inventory :anim-start])))))
+
+ (appear-transition state-data :show :out)
+ (reify ITransition
+ (start-transition [this screen entities]
+ (update-in entities [:inventory] (fn [i] (actions/start-animation screen i :closing))))
+ (transition-done? [this screen entities] true))
+ (appear-transition state-data :hide :far-out)
+ (reify ITransition
+ (start-transition [this screen entities]
+ (dissoc entities :selected-item))
+ (transition-done? [this screen entities]
+ true))]))
+
+(defmethod transition-hud [:remove :none]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(reify ITransition
+ (start-transition [this screen entities]
+ (update-in entities [:inventory] (fn [i] (actions/start-animation screen i :closing))))
+ (transition-done? [this screen entities]
+ (animation! (get-in entities [:inventory :anim])
+ :is-animation-finished
+ (- ^double (:total-time screen) ^double (get-in entities [:inventory :anim-start])))))
+
+ (reify ITransition
+ (start-transition [this screen entities]
+ (-> entities
+ (update-in [:inventory] (fn [i] (actions/start-animation screen i :default)))
+ (dissoc :selected-item)))
+ (transition-done? [this screen entities]
+ true))]))
+
+(defmethod transition-hud [:none :acquire]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(reify ITransition
+ (start-transition [this screen entities]
+ (update-in entities [:inventory] (fn [i] (actions/start-animation screen i :open))))
+ (transition-done? [this screen entities]
+ (animation! (get-in entities [:inventory :anim])
+ :is-animation-finished
+ (- ^double (:total-time screen) ^double (get-in entities [:inventory :anim-start])))))
+
+ (appear-transition state-data :show :none)
+ (reify ITransition
+ (start-transition [this screen entities]
+ (update-in entities [:inventory] (fn [i] (actions/start-animation screen i :closing))))
+ (transition-done? [this screen entities] true))
+ (appear-transition state-data :hide :in)
+ (reify ITransition
+ (start-transition [this screen entities]
+ (dissoc entities :selected-item))
+ (transition-done? [this screen entities]
+ true))]))
+
+(defmethod transition-hud [:acquire :none]
+ [screen entities state state-data]
+ (accept-state entities state state-data [(reify ITransition
+ (start-transition [this screen entities]
+ (-> entities
+ (update-in [:inventory] (fn [i] (actions/start-animation screen i :default)))
+ (dissoc :selected-item)))
+ (transition-done? [this screen entities]
+ true))]))
+
+(defmethod transition-hud [:selected :acquire]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(appear-transition (get-in entities [:inv-fsm :state-data]) :hide :none)
+ (appear-transition state-data :show :none)
+ (appear-transition state-data :hide :in)]))
+
+(defmethod transition-hud [:acquire :selected]
+ [screen entities state state-data]
+ (accept-state entities state state-data
+ [(appear-transition state-data :show :out)]))
+
+(defn fsm-busy? [entities]
+ (seq (get-in entities [:inv-fsm :transition-steps])))
+
+(defn process-fsm [screen { {:keys [transition-steps current-transition] [[next-state next-state-data] & pending-states] :pending-states [next-transition & remaining-transitions] :transition-steps} :inv-fsm :as entities}]
+ (cond
+ (and current-transition (transition-done? current-transition screen entities))
+ (-> entities
+ (update-in [:inv-fsm ] dissoc :current-transition))
+
+ current-transition
+ nil ;; waiting
+
+ (fsm-busy? entities)
+ (-> (start-transition next-transition screen entities)
+ (assoc-in [:inv-fsm :current-transition] next-transition)
+ (assoc-in [:inv-fsm :transition-steps] remaining-transitions))
+
+ next-state
+ (-> (transition-hud screen entities next-state next-state-data)
+ (assoc-in [:inv-fsm :pending-states] (vec pending-states)))
+
+ :else
+ nil))
+
+
+(defn update-hud-active [screen entities options]
+ (let [[x y] (utils/unproject screen options)
+ hovered-inventory? (utils/intersects? (:inventory entities) [x y])
+ hovered-close? (utils/intersects? (:close entities) [x y])
+ hovered-save? (utils/intersects? (:save entities) [x y])]
+
+ (screen! scene :hud-active? { :hud-active? (or hovered-close? hovered-inventory? hovered-save?)})))
+
(defscreen hud
:on-show
- (fn [screen entities]
- (let [screen (assoc screen :total-time 0)]
- (utils/setup-viewport screen 320 240)
-
- {:already-saved? false
- :close (assoc (utils/get-texture "close.png")
- :x 304 :y 224
+ (fn [screen entities options]
+
+ (let [[screen global-atlas] (utils/acquire-atlas screen "packed/global.atlas")
+ screen (assoc screen :total-time 0)
+ screen (utils/setup-viewport screen 320 240)]
+
+
+ {:inv-fsm {:state :none
+ :state-data {}
+ :target nil
+ :target-data nil
+ :transition-steps []
+ :pending-states []}
+ :already-saved? false
+
+ :close (assoc (utils/atlas->texture global-atlas "close")
+ :x 320 :y 240
+ :origin-x 16 :origin-y 16
:width 16 :height 16
+ :scale-x utils/ui-scale :scale-y utils/ui-scale
:baseline 9000
- :opacity 0.8)
- :save (assoc (utils/get-texture "save.png")
- :x 280 :y 224
- :width 16 :height 16
+ :opacity 0.8)
+ :save (assoc (utils/atlas->texture global-atlas "save")
+ :x (- 320 (* utils/ui-scale 16) 4) :y 240
+ :origin-x 16 :origin-y 16
+ :width 16 :height 16
:baseline 9000
:opacity 0.8)
- :inventory (assoc (utils/get-texture "inventory.png") :x 278 :y 0 :baseline 9000
- :mouse-in? (zone/box 278 0 320 42)
+ :inventory (assoc (utils/atlas->texture global-atlas "inventory") :x (* 21 utils/ui-scale ) :y (* 27 utils/ui-scale ) :baseline 9000
+ :intersect-width 42 :intersect-height 48
+ :width 42 :height 56
+ :origin-x 21 :origin-y 27
+ :scale-x utils/ui-scale :scale-y utils/ui-scale
+ :open (utils/flip (doto (utils/make-anim-seq global-atlas "open-inventory" [42 56] 0.055 (flatten [(range 6) 6 7 8 7 ]))
+ (animation! :set-play-mode (play-mode :normal))))
+ :anim (utils/flip (utils/make-anim global-atlas "inventory" [42 56] 0.1 [0]))
+ :anim-loop? false
+ :default (utils/flip (utils/make-anim global-atlas "inventory" [42 56] 0.1 [0]))
+ :opened (utils/flip (utils/make-anim-seq global-atlas "open-inventory" [42 56] 0.1 [7]))
+ :closing (utils/flip (doto (utils/make-anim-seq global-atlas "open-inventory" [42 56] 0.055 [7 7 7 7 7 7 7 9 10 11 12 0])
+ (animation! :set-play-mode (play-mode :normal))))
+ :anim-start 0
:opacity 0.8)
- #_#_:fps (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)}))
-
+ :all-items (texture! (texture (pixmap "cursor.png")) :split 18 16)
+ :fps (->> (assoc (label "" (color :white) ) :y 10 :x 280 :baseline 0 :opacity 0.1)
+ (utils/add-actor-to-stage screen))}))
+
: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 (update-in entities [:inventory] animate screen )
hud-interactable? (hud-interactable?)
entities (if hud-interactable?
(as-> entities entities
@@ -1479,39 +1962,109 @@ void main ()
(as-> entities entities
(update-in entities [:inventory] assoc :r 0.75 :g 0.75 :b 0.75)
(grow-hud screen entities :inventory false)))
+ entities (if (= :selected (get-in entities [:inv-fsm :state]))
+ (if hud-interactable?
+ (as-> entities entities
+ (update-in entities [:selected-item] assoc :r 1.0 :g 1.0 :b 1.0 ))
+ (as-> entities entities
+ (update-in entities [:selected-item] assoc :r 0.75 :g 0.75 :b 0.75)
+ (grow-hud screen entities :selected-item false)))
+ entities)
entities (if (and hud-interactable? (not (:already-saved? entities)))
(as-> entities entities
(update-in entities [:save] assoc :r 1.0 :g 1.0 :b 1.0 ))
(as-> entities entities
(update-in entities [:save] assoc :r 0.75 :g 0.75 :b 0.75)
- (grow-hud screen entities :save false)))]
- #_(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))
- (if hud-interactable?
- (:inventory entities)
- (assoc (:inventory entities) :opacity 0.5))
- (:close entities)])
+ (grow-hud screen entities :save false)))
+
+ entities (or (process-fsm screen entities) entities)]
+ #_(label! (:fps entities) :set-text (str (game :fps)))
+
+
+
+ (render-one screen (if (and hud-interactable? (not (:already-saved? entities)))
+ (:save entities)
+ (assoc (:save entities) :opacity 0.5)))
+ (render-one screen (if hud-interactable?
+ (:inventory entities)
+ (assoc (:inventory entities) :opacity 0.5)))
+ (render-one screen (:selected-item entities))
+ (render-one screen (:close entities))
entities))
:on-resize
- (fn [{:keys [^FitViewport viewport width height]} entities]
+ (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height true))
+ :on-give-item
+ (fn [screen entities {:keys [item]}]
+ (-> entities
+ (update-in [:inv-fsm :pending-states] conj [:acquire item])
+ (update-in [:inv-fsm] (fn [{:keys [state state-data] :as fsm}]
+ (if (and (= state :selected) (= item state-data))
+ (update-in fsm [:pending-states] conj [:none state-data])
+ (update-in fsm [:pending-states] conj [:none state-data]))))))
+
+ :on-remove-item
+ (fn [screen entities {:keys [item]}]
+ (-> entities
+ (update-in [:inv-fsm :pending-states] conj [:remove item])
+ (update-in [:inv-fsm] (fn [{:keys [state state-data] :as fsm}]
+ (cond
+ (and (= state :selected) (= item state-data))
+ (update-in fsm [:pending-states] conj [:none state-data])
+ (= state :selected)
+ (update-in fsm [:pending-states] conj [state state-data])
+ :else
+ (update-in fsm [:pending-states] conj [:none state-data]))))))
+
+ :on-return-item
+ (fn [screen entities options]
+ (if (hud-interactable?)
+ (-> entities
+ (update-in [:inv-fsm :pending-states] conj [:none (get-in entities [:inv-fsm :state-data])]))))
+
+
:on-start-script
- (fn [_ [entities]]
- (assoc-in entities [:already-saved?] false))
+ (fn [_ entities _]
+ (-> entities
+ (update-in [:inv-fsm :pending-states] conj [:none nil])
+ (assoc-in [:already-saved?] false)))
+
+
+
+
+ :on-reactivate
+ (fn [screen entities {:keys [script-started? item]}]
+ (let [selected-item? (and (:value item)
+ (:cursor item))]
+ (if (and (not script-started?) selected-item?)
+ (transition-hud screen entities :selected item)
+ (transition-hud screen entities :none nil))))
+
+ :on-touch-down
+ (fn [screen entities options]
+ (update-hud-active screen entities options))
+
+ :on-touch-dragged
+ (fn [screen entities options]
+ (update-hud-active screen entities options))
+
:on-mouse-moved
- (fn [screen [entities]]
- (let [[x y] (utils/unproject screen)
- hovered-inventory? ((:mouse-in? (:inventory entities)) x y)
+
+ (fn [screen entities options]
+ (update-hud-active screen entities options)
+ (let [[x y] (utils/unproject screen options)
+ hovered-inventory? (utils/intersects? (:inventory entities) [x y])
hovered-close? (utils/intersects? (:close entities) [x y])
hovered-save? (utils/intersects? (:save entities) [x y])]
- (screen! scene :hud-active? :hud-active? (or hovered-close? hovered-inventory? hovered-save?))
(cond (and hovered-inventory? (hud-interactable?))
- (grow-hud screen entities :inventory true)
+ (as-> entities entities
+ (grow-hud screen entities :inventory true)
+ (if (:selected-item entities)
+ (grow-hud screen entities :selected-item true)
+ entities))
hovered-close?
(grow-hud screen entities :close true)
@@ -1522,26 +2075,42 @@ void main ()
:else
(let [entities (update-in entities [:tweens] dissoc :inventory-grow-x :inventory-grow-y)
entities (grow-hud screen entities :inventory false)
+ entities (if (:selected-item entities)
+ (grow-hud screen entities :selected-item false)
+ entities)
entities (grow-hud screen entities :close false)
- entities (grow-hud screen entities :save false)]
- entities
- ))))
+ entities (grow-hud screen entities :save false)]
+ entities))))
-
- :on-touch-up
- (fn [screen [entities]]
- (if (= (button-code :left) (:button screen))
- (let [[x y] (utils/unproject screen)]
- (cond ((:mouse-in? (:inventory entities)) x y)
- (screen! scene :on-show-inventory)
- (utils/intersects? (:close entities) [x y])
- (screen! scene :on-menu)
+ :on-tap
+ (fn [screen entities options]
+ (if (= (button-code :left) (:button options))
+ (let [[x y] (utils/unproject screen options)]
+ (cond
+ (not (hud-interactable?))
+ nil
- (and (not (:already-saved? entities)) (utils/intersects? (:save entities) [x y]) (hud-interactable?))
- (do
- (screen! scene :on-save)
- (assoc entities :already-saved? true))
- :else
- nil)))))
+ (utils/intersects? (:inventory entities) [x y])
+
+ (if (= :selected (get-in entities [:inv-fsm :state]))
+ (update-in entities [:inv-fsm :pending-states] conj [:none (get-in entities [:inv-fsm :state-data])])
+
+ (do
+ (screen! scene :on-deactivate {})
+ (update-in entities [:inv-fsm :pending-states] conj [:open nil])))
+
+ (utils/intersects? (:close entities) [x y])
+ (screen! scene :on-menu {})
+
+ (and (not (:already-saved? entities)) (utils/intersects? (:save entities) [x y]) (hud-interactable?))
+ (do
+ (screen! scene :on-save {})
+ (assoc entities :already-saved? true))
+
+ :else
+ nil))))
+ :on-hide
+ (fn [screen entities options]
+ (utils/release-resources screen)))
diff --git a/desktop/src-common/advent/screens/shader.clj b/desktop/src-common/advent/screens/shader.clj
new file mode 100644
index 00000000..bbb04b03
--- /dev/null
+++ b/desktop/src-common/advent/screens/shader.clj
@@ -0,0 +1,131 @@
+(ns advent.screens.shader
+ (:require [advent.utils :as utils]))
+(println "loading " *ns*)
+
+
+(def v-shader (constantly "attribute vec4 a_position;
+attribute vec4 a_color;
+attribute vec2 a_texCoord0;
+
+uniform mat4 u_projTrans;
+
+varying vec4 v_color;
+varying vec2 v_texCoords;
+
+void main() {
+ v_color = a_color;
+ v_texCoords = a_texCoord0;
+ gl_Position = u_projTrans * a_position;
+}"))
+
+
+(def mobile-pix-shader
+ "
+ #ifdef GL_ES
+ #define LOWP lowp
+ #define HIGHP highp
+ precision mediump float;
+ #else
+ #define LOWP
+ #define HIGHP
+ #endif
+
+ varying vec4 v_color;
+ varying HIGHP vec2 v_texCoords;
+ uniform HIGHP float multiply_amount;
+ uniform HIGHP float hue_amount;
+
+ uniform sampler2D u_texture;
+
+ vec4 toGrayscale(in vec4 color)
+ {
+ float average = (color.r + color.g + color.b) / 3.0;
+ return vec4(average, average, average, color.a);
+ }
+
+ vec4 colorize(in vec4 grayscale, in vec4 color)
+ {
+ return (grayscale * color);
+ }
+
+
+ void main ()
+ {
+ vec4 scaledColor = texture2D(u_texture, v_texCoords);
+
+ vec4 grayscale = toGrayscale(scaledColor);
+ vec4 colorizedOutput = mix(scaledColor, colorize(grayscale, v_color.rgba), hue_amount);
+
+ vec4 multiplied = mix(colorizedOutput.rgba, v_color.rgba * scaledColor.rgba, multiply_amount);
+
+ gl_FragColor = vec4(multiplied.rgb, scaledColor.a * v_color.a);
+
+ }
+ "
+ )
+
+(def desktop-pix-shader
+ "
+#ifdef GL_ES
+ #define LOWP lowp
+ #define HIGHP highp
+ precision mediump float;
+#else
+ #define LOWP
+ #define HIGHP
+#endif
+
+varying vec4 v_color;
+varying HIGHP vec2 v_texCoords;
+uniform HIGHP float multiply_amount;
+uniform HIGHP float hue_amount;
+
+uniform sampler2D u_texture;
+
+vec4 toGrayscale(in vec4 color)
+{
+ float average = (color.r + color.g + color.b) / 3.0;
+ return vec4(average, average, average, color.a);
+}
+
+vec4 colorize(in vec4 grayscale, in vec4 color)
+{
+ return (grayscale * color);
+}
+
+
+void main ()
+{
+ HIGHP vec2 sz = vec2 (2048.0, 2048.0);
+ HIGHP vec3 step = vec3 (1.0 / 4.0, 1.0 / 4.0, 0.0);
+ HIGHP vec2 tex_pixel = sz * v_texCoords - step.xy / 2.0;
+
+ HIGHP vec2 corner = floor (tex_pixel) + 1.0;
+ HIGHP vec2 frac = min ((corner - tex_pixel) * vec2 (4.0, 4.0), vec2 (1.0, 1.0));
+
+ HIGHP vec4 c1 = texture2D (u_texture, (floor (tex_pixel + step.zz) + 0.5) / sz);
+ HIGHP vec4 c2 = texture2D (u_texture, (floor (tex_pixel + step.xz) + 0.5) / sz);
+ HIGHP vec4 c3 = texture2D (u_texture, (floor (tex_pixel + step.zy) + 0.5) / sz);
+ HIGHP vec4 c4 = texture2D (u_texture, (floor (tex_pixel + step.xy) + 0.5) / sz);
+
+ c1 *= frac.x * frac.y;
+ c2 *= (1.0 - frac.x) * frac.y;
+ c3 *= frac.x * (1.0 - frac.y);
+ c4 *= (1.0 - frac.x) * (1.0 - frac.y);
+ vec4 scaledColor = (c1 + c2 + c3 + c4);
+
+ vec4 grayscale = toGrayscale(scaledColor);
+ vec4 colorizedOutput = mix(scaledColor, colorize(grayscale, v_color.rgba), hue_amount);
+
+ vec4 multiplied = mix(colorizedOutput.rgba, v_color.rgba * scaledColor.rgba, multiply_amount);
+
+ gl_FragColor = vec4(multiplied.rgb, scaledColor.a * v_color.a);
+
+}
+")
+
+
+(defn pix-shader []
+ (if utils/mobile?
+ mobile-pix-shader
+ desktop-pix-shader))
diff --git a/desktop/src-common/advent/screens/splash.clj b/desktop/src-common/advent/screens/splash.clj
index 5fab1ceb..e5d682f9 100644
--- a/desktop/src-common/advent/screens/splash.clj
+++ b/desktop/src-common/advent/screens/splash.clj
@@ -19,9 +19,11 @@
[com.badlogic.gdx.scenes.scene2d.ui Slider$SliderStyle Widget ButtonGroup TextButton$TextButtonStyle CheckBox$CheckBoxStyle CheckBox Button]
[com.badlogic.gdx.scenes.scene2d Group Actor]
[play_clj.entities ActorEntity]
- [com.badlogic.gdx.scenes.scene2d.utils Align NinePatchDrawable TextureRegionDrawable]
+ [com.badlogic.gdx.utils Align]
+ [com.badlogic.gdx.scenes.scene2d.utils NinePatchDrawable TextureRegionDrawable]
[com.badlogic.gdx Application Audio Files Game Gdx Graphics Input
InputMultiplexer InputProcessor Net Preferences Screen]))
+(println "loading " *ns*)
(defn fade-in [screen e thing then]
(assoc-in e [:tweens :fade-in]
@@ -31,17 +33,12 @@
(defn fade-out [screen e thing then]
(assoc-in e [:tweens :fade-out]
- (tween/tween :fade-out screen [thing :opacity] 1.0 0.0 0.5
- :finish then
+ (tween/tween :fade-out screen [thing :opacity] 1.0 0.0 0.5
+ :finish then
:ease tween/ease-out-quadratic)))
-(defn get-texture [path]
- (let [atlas-name (str/replace path #".png" "")
- atlas (texture-atlas "packed-pop-logo/pack.atlas")]
- (texture (texture-atlas! atlas :find-region atlas-name))))
-
-(defn make-anim-seq [file [w h] speed frames]
- (animation speed (map #(get-texture (str file "_" (inc %) ".png")) frames)))
+(defn make-anim-seq [atlas file [w h] speed frames]
+ (animation speed (map #(utils/atlas->texture atlas file %) frames)))
(defn animate [entity screen]
(if (:anim entity)
@@ -64,67 +61,90 @@
entities))))
(def steps
- [{:can-skip false
- :do (fn [screen entities]
- (fade-in screen entities :dbhlogo identity))
- :duration 1.0}
- {:can-skip true
- :do (fn [screen entities]
- entities)
- :duration 2.0}
- {:can-skip false
- :do (fn [screen entities]
- (fade-out screen entities :dbhlogo identity))
- :duration 2.0}
- {:can-skip true
- :do (fn [screen entities]
- (utils/play-music (:pop-music entities))
- (-> entities
- (assoc-in [:pop-logo :anim-start] (:total-time screen))
- (assoc-in [:pop-logo :anim] (get-in entities [:pop-logo :main-anim]))))
- :duration 10.0}
- {:can-skip false
- :do (fn [screen entities]
- (utils/stop-music (:pop-music entities))
- (set-screen! @(resolve 'advent.core/advent) title/title-screen)
- entities)
- :duration 0.0}])
+ (-> []
+ (into [{:can-skip false
+ :do (fn [screen entities]
+ (fade-in screen entities :dbhlogo identity))
+ :duration 1.0}
+ {:can-skip true
+ :do (fn [screen entities]
+ entities)
+ :duration 2.0}
+ {:can-skip false
+ :do (fn [screen entities]
+ (fade-out screen entities :dbhlogo identity))
+ :duration 1.0}])
+
+ (into (if utils/mobile?
+ [{:can-skip false
+ :do (fn [screen entities]
+ (fade-in screen entities :pop-logo identity))
+ :duration 1.0}
+ {:can-skip true
+ :do (fn [screen entities]
+ entities)
+ :duration 2.0}
+ {:can-skip false
+ :do (fn [screen entities]
+ (fade-out screen entities :pop-logo identity))
+ :duration 1.0}]
+
+ [{:can-skip true
+ :do (fn [screen entities]
+ (utils/play-music (:pop-music entities))
+ (-> entities
+ (assoc-in [:pop-logo :anim-start] (:total-time screen))
+ (assoc-in [:pop-logo :anim] (get-in entities [:pop-logo :main-anim]))))
+ :duration 10.0}]))
+
+ (conj {:can-skip false
+ :do (fn [screen entities]
+ (when-not utils/mobile?
+ (utils/stop-music (:pop-music entities)))
+
+
+ (set-screen! @(resolve 'advent.core/advent) title/title-screen)
+ entities)
+ :duration 0.0})))
(defscreen splash-screen
:on-show
- (fn [screen entities]
- (utils/setup-viewport screen 1280 960)
- (log/info "Starting splash screen.")
-
- (input! :set-cursor-image (utils/cursor "cursor.png" :hourglass) 0 0)
-
- (let [screen (assoc screen :total-time 0)
- pop-anim (make-anim-seq "POPPixelLogo_02" [320 240] 0.05 (range 200))
- entities {:background (assoc (utils/get-texture "black.png")
- :scale-x 80
- :scale-y 80
- :opacity 1.0
- :origin-x 0
- :origin-y 0
- :z 0)
- :pop-logo (assoc (animation->texture screen pop-anim)
- :main-anim pop-anim
- :x 0 :y 0
- :origin-x 0 :origin-y 0
- :scale-x 4 :scale-y 4
- :z 1)
- :dbhlogo (assoc (utils/get-texture "dbh.png") :x 0 :y 0 :origin-x 0 :origin-y 0 :z 1 :opacity 0.0)
- :steps steps
- :pop-music (utils/make-music "music/POPPixelLogo2Audiomix_mixdown.ogg")
- :current-step nil}]
- (music! (:pop-music entities) :set-volume (utils/current-music-volume 1.0))
- entities))
-
+ (fn [screen entities options]
+ (let [[screen splash-atlas] (utils/acquire-atlas screen "packed/splash.atlas")
+ [screen global-atlas] (utils/acquire-atlas screen "packed/global.atlas")]
+ (utils/setup-viewport screen 1280 960)
+ (log/info "Starting splash screen.")
+ (graphics! :set-cursor (utils/cursor "cursor.png" :hourglass))
+ (let [screen (assoc screen :total-time 0)
+ pop-anim (make-anim-seq splash-atlas "POPPixelLogo_02" [320 240] 0.05 (repeat 200 0))
+ entities {:background (assoc (utils/atlas->texture global-atlas "black.png")
+ :scale-x 80
+ :scale-y 80
+ :opacity 1.0
+ :origin-x 0
+ :origin-y 0
+ :z 0)
+ :pop-logo (assoc (animation->texture screen pop-anim)
+ :anim pop-anim
+ :x 0 :y 0
+ :origin-x 0 :origin-y 0
+ :scale-x 4 :scale-y 4
+ :z 1
+ :opacity (if utils/mobile? 0.0 1.0))
+ :dbhlogo (assoc (utils/atlas->texture splash-atlas "dbh.png") :x 0 :y 0 :origin-x 0 :origin-y 0 :scale-x 4 :scale-y 4 :z 1 :opacity 0.0)
+ :steps steps
+ :pop-music (utils/make-music "music/POPPixelLogo2Audiomix_mixdown.ogg")
+ :current-step nil}]
+ (music! (:pop-music entities) :set-volume (utils/current-music-volume 1.0))
+ entities)))
+
+ :on-hide (fn [screen entities options]
+ (utils/release-resources screen))
:on-render
- (fn [{:keys [^FitViewport viewport] :as screen} [entities]]
- (steam/update)
+ (fn [{:keys [^FitViewport viewport] :as screen} entities options]
+ #_(steam/update)
(.apply viewport)
(clear!)
(let [entities (utils/apply-tweens screen entities (:tweens entities))
@@ -139,17 +159,17 @@
:show-screen (fn [entities]
entities)
- :on-touch-up (fn [screen [entities]]
+ :on-touch-up (fn [screen entities options]
(if (get-in entities [:current-step :can-skip])
(assoc entities :current-step nil :queued-skip? false)
(assoc entities :queued-skip? true)))
:on-key-up
- (fn [screen entities]
+ (fn [screen entities options]
(when (= (key-code :escape) (:key screen))
(utils/toggle-fullscreen!))
nil)
- :on-resize (fn [{:keys [viewport width height]} [entities]]
+ :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]} ]
(.update viewport width height false)
nil))
diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj
index 389b2476..f423e556 100644
--- a/desktop/src-common/advent/screens/title.clj
+++ b/desktop/src-common/advent/screens/title.clj
@@ -18,15 +18,17 @@
[advent.screens.safe :as safe]
[advent.screens.fade :as fade]
[advent.version]
+ [advent.max-progress-bar :refer [max-progress-bar]]
)
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter Color]
- [com.badlogic.gdx.graphics.g2d TextureRegion]
+ [com.badlogic.gdx.graphics.g2d TextureRegion NinePatch]
[play_clj.entities NinePatchEntity]
[com.badlogic.gdx.utils.viewport FitViewport]
- [com.badlogic.gdx.scenes.scene2d.ui Slider$SliderStyle Widget ButtonGroup TextButton$TextButtonStyle CheckBox$CheckBoxStyle CheckBox Button]
- [com.badlogic.gdx.scenes.scene2d Group Actor]
+ [com.badlogic.gdx.scenes.scene2d.ui Slider$SliderStyle Widget ButtonGroup TextButton$TextButtonStyle CheckBox$CheckBoxStyle CheckBox Button ImageButton ScrollPane]
+ [com.badlogic.gdx.scenes.scene2d Group Actor Stage]
[play_clj.entities ActorEntity]
- [com.badlogic.gdx.scenes.scene2d.utils Align NinePatchDrawable TextureRegionDrawable BaseDrawable]
+ [com.badlogic.gdx.utils Align]
+ [com.badlogic.gdx.scenes.scene2d.utils NinePatchDrawable TextureRegionDrawable BaseDrawable]
[com.badlogic.gdx Application Audio Files Game Gdx Graphics Input
InputMultiplexer InputProcessor Net Preferences Screen]))
@@ -38,6 +40,7 @@
(def button-color (Color/valueOf "9b399eff"))
(def label-color (color 0.81 0.5 0.0 1.0))
+(def disabled-label-color (color 0.3 0.3 0.3 1.0))
(defn style-label [e font mouse-pos]
(when (:interactable e)
@@ -53,12 +56,12 @@
(defn style-slider [s mouse-pos]
(if (utils/intersects? s mouse-pos)
- (slider! s :set-style (:hover s))
- (slider! s :set-style (:default s)))
+ (slider! s :set-style ^Slider$SliderStyle (:hover s))
+ (slider! s :set-style ^Slider$SliderStyle (:default s)))
s)
(defn center [e]
- (assoc e :x (- (/ 1280 2) (/ (or (:width e) (.getWidth (:object e))) 2))))
+ (assoc e :x (- (/ 1280 2) (/ (or (:width e) (.getWidth ^Actor (:object e))) 2))))
(defn get-dir [old-x new-x]
@@ -70,7 +73,7 @@
(defn quit [screen entities]
(do (log/info "Quitting.")
- (input! :set-cursor-image (utils/cursor "cursor.png" :hourglass) 0 0)
+ (graphics! :set-cursor (utils/cursor "cursor.png" :hourglass))
(-> entities
(assoc-in [:tweens :fade-out]
(tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0
@@ -116,14 +119,14 @@
(defn start-playing [screen entities save]
(do (log/info "Starting/Continuing quest.")
- (input! :set-cursor-image (utils/cursor "cursor.png" :hourglass) 0 0)
+ (graphics! :set-cursor (utils/cursor "cursor.png" :hourglass))
(-> entities
(assoc-in [:tweens :fade-out]
(tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0
:finish (fn [entities]
(utils/stop-music (:music entities))
(reset! utils/selected-save save)
- (set-screen! @(resolve 'advent.core/advent) scene/scene #_scene/demo scene/hud dialogue/talking-screen dialogue/choice-screen dialogue/toast-screen inventory/inventory-screen safe/safe-screen fade/fade-screen
+ (set-screen! @(resolve 'advent.core/advent) scene/scene #_scene/demo scene/hud dialogue/tooltip-screen dialogue/talking-screen dialogue/choice-screen dialogue/toast-screen inventory/inventory-screen safe/safe-screen fade/fade-screen
)
entities)
:ease tween/ease-in-cubic))
@@ -131,9 +134,10 @@
(tween/tween :fade-out-music screen [:volume] 1.0 0.0 1.0)))))
(defn button-style []
- (let [style (skin! (skin "ui/ui.json") :get TextButton$TextButtonStyle)
+ (let [^TextButton$TextButtonStyle style (skin! (skin "ui/ui.json") :get TextButton$TextButtonStyle)
tx (-> style .font .getRegion .getTexture)]
- (-> style .font (.setScale 0.5 0.5))
+ (-> style .font .getData (.setScale utils/button-font-scale))
+
(call! ^Texture tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
style))
@@ -146,7 +150,7 @@
(let [button (merge (text-button msg (button-style))
(apply hash-map rest))]
- (doto button save-object ))))
+ (doto button save-object))))
(defn set-checkbox-state [cb state]
@@ -159,10 +163,7 @@
(defn make-checkbox
([msg checked & rest]
(let [s (skin! (skin "ui/ui.json") :get CheckBox$CheckBoxStyle)]
- (-> s
- .font
- (.setScale 0.25 0.25))
-
+ (-> s .font .getData (.setScale utils/title-label-scale))
(doto (merge (check-box msg s)
(apply hash-map rest))
(set-checkbox-state checked)
@@ -172,30 +173,46 @@
([msg]
(make-label msg nil))
([msg col]
+ (make-label msg col utils/title-label-scale))
+ ([msg col scale]
(let [font (utils/get-font "ego/font.fnt")
p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg"))
_ (nine-patch! p :set-padding 0 0 0 0)
- bg (drawable :nine-patch (:object p))
+ bg (drawable :nine-patch ^NinePatch (:object p))
style (style :label font (or col (color 1.0 0.3 0.3 1.0)))
- _ (bitmap-font! font :set-markup-enabled true)
#_#__ (set! (.background style) bg)]
+ (-> style .font .getData (.setScale scale scale))
(-> msg
- (label style)
+ (label style :set-font-scale scale)
(assoc :x 0 :y 0 :height 40 :origin-x 0 :origin-y 0 :z 8)
(doto (label! :set-alignment Align/bottom)
- (label! :set-font-scale 0.25)
+
#_(#(label! % :set-width (/ (label! % :get-width) 2))))
center))))
-(defn make-slider [initial-value & rest]
+(defn make-slider [min max initial-value & rest]
(let [ui-skin (skin "ui/ui.json")
slider (->
- (slider {:min 0 :max 100 :step 1} ui-skin :set-value initial-value)
- (assoc :width 305
- :hover (skin! ui-skin :get "default-horizontal-hover" Slider$SliderStyle)
- :default (skin! ui-skin :get "default-horizontal" Slider$SliderStyle)
- :z 8)
+ (slider {:min min :max max :step 1} ui-skin :set-value initial-value)
+ (assoc
+ :hover (skin! ui-skin :get "default-horizontal-hover" Slider$SliderStyle)
+ :default (skin! ui-skin :get "default-horizontal" Slider$SliderStyle)
+ :z 8)
+ (merge (apply hash-map rest)))]
+ (doto slider
+ save-object)))
+
+(defn make-max-progress-bar [min max initial-value artificial-max & rest]
+ (let [ui-skin (skin "ui/ui.json")
+ _ (println initial-value)
+ slider (->
+ (max-progress-bar min max 1.0 false (skin! ui-skin :get "default-horizontal" Slider$SliderStyle) artificial-max)
+ (doto (#(slider! % :set-value initial-value)))
+ (assoc
+ :hover (skin! ui-skin :get "default-horizontal-hover" Slider$SliderStyle)
+ :default (skin! ui-skin :get "default-horizontal" Slider$SliderStyle)
+ :z 8)
(merge (apply hash-map rest)))]
(doto slider
save-object)))
@@ -208,49 +225,55 @@
(table)
(doto (table! :set-background (NinePatchDrawable. (skin! (skin "ui/ui.json") :get-patch "ui-bg" ))))
(assoc
- :y 32 :width 504 :height 335
- :x (- (/ 1280 2) (/ 504 2))
+ :y 32 :width (* utils/ui-scale 504) :height (* utils/ui-scale 335)
+ :x (- (/ 1280 2) (/ (* utils/ui-scale 504) 2))
:z 8
:opacity 1.0)))
-(defn main-menu []
+(defn main-menu [screen]
(let [start-playing-label (quest-label)
is-starting? (= "Begin Quest" start-playing-label)]
- (make-table [[(make-button start-playing-label :key :continue-or-start) :height 56 :pad-bottom 4 :width 250]
- :row
- [(doto (make-button "Load" :key :load)
- (text-button! :set-disabled (not (seq (utils/snapshot-list))))) :height 56 :pad-bottom 4 :width 250]
- :row
- [(doto (make-button "Chapters" :key :chapters)
- (text-button! :set-disabled (not (->> (utils/get-chapters)
- (vals)
- (filter identity)
- seq)))) :height 56 :pad-bottom 4 :width 250]
-
- :row
- [(make-button "Settings" :key :settings) :height 56 :pad-bottom 4 :width 250]
-
- :row
- [(make-button "End Quest" :key :end-quest) :height 56 :width 250]
- ])))
+ (make-table (concat [[(make-button start-playing-label :key :continue-or-start) :height (* utils/button-scale 56) :pad-bottom (* utils/ui-scale 4) :width (* utils/button-scale 250)]
+ :row
+ [(doto (make-button "Restore" :key :load)
+ (text-button! :set-disabled (not (seq (utils/snapshot-list))))) :height (* utils/button-scale 56) :pad-bottom (* utils/ui-scale 4) :width (* utils/button-scale 250)]
+ :row
+ [(doto (make-button "Chapters" :key :chapters)
+ (text-button! :set-disabled (not (->> (utils/get-chapters)
+ (vals)
+ (filter identity)
+ seq)))) :height (* utils/button-scale 56) :pad-bottom (* utils/ui-scale 4) :width (* utils/button-scale 250)]]
+ (when-not utils/mobile?
+ [:row
+ [(make-button "Settings" :key :settings) :height (* utils/ui-scale 56) :pad-bottom (* utils/ui-scale 4) :width (* utils/ui-scale 250)]
+
+ :row
+ [(make-button "End Quest" :key :end-quest) :height (* utils/ui-scale 56) :width (* utils/ui-scale 250)]])))))
(defn chapters-menu []
- (let [chapters (utils/get-chapters)
- chapter-table (table
- (mapcat identity
- (for [chapter [:chapter-1 :chapter-2 :chapter-3 :chapter-4 :chapter-5]]
- [[(doto (make-button (if (chapter chapters)
- (saves/chapter-name chapter)
- "---")
- :chapter (chapter chapters))
- (text-button! :set-disabled (nil? (chapter chapters)))) :height 56 :pad-bottom 4 :width 400]
- :row])))]
-
- (make-table [[(doto (scroll-pane chapter-table
- (skin "ui/ui.json"))
- (scroll-pane! :set-fade-scroll-bars false)) :height 240 :width 472]
- :row
- [ (make-button "Back" :key :back) :height 56]])))
+ (let [_ (println (utils/get-chapters) )
+ chapter-count (->> (utils/get-chapters)
+ (vals)
+ (filter identity)
+ count
+ dec
+ (max 0))
+ selected-title (-> (utils/get-chapters) keys (nth chapter-count) saves/chapter-name )]
+ (make-table (concat [[(doto
+ (make-label selected-title label-color)
+ (label! :set-name "explanation")) :width (* utils/ui-scale 250) :height 40 :colspan 5]
+ :row
+ [(doto (make-max-progress-bar 0.0 4.0 chapter-count chapter-count :key :current-chapter)
+ (slider! :set-name "slider")) :width (* utils/ui-scale 260) :height (* utils/ui-scale 50) :colspan 5]
+ :row]
+ (map (fn [index [chapter v]]
+ [(make-label (str (inc index)) (if v label-color disabled-label-color)) :height (* utils/ui-scale 32) :width 30 :pad-bottom (* utils/ui-scale 8)])
+ (range)
+ (utils/get-chapters))
+ [:row
+ [ (make-button "Back" :key :back) :height (* utils/button-scale 56) :width (* utils/button-scale 100) :colspan 2]
+ [ (make-label "") :height (* utils/button-scale 56) ]
+ [ (make-button "Start" :key :start) :height (* utils/button-scale 56) :width (* utils/button-scale 100) :colspan 2]]))))
(defn settings-menu []
(let [fullscreen-button (make-checkbox "Fullscreen" (utils/is-fullscreen?) :key :toggle-fullscreen)
@@ -258,11 +281,11 @@
(assoc (make-table [[(make-label "Music" label-color) :height 40]
:row
- [(make-slider (:music-volume @utils/settings) :key :music-volume-slider) :width 240]
+ [(make-slider 0 100 (:music-volume @utils/settings) :key :music-volume-slider) :width 240]
:row
[(make-label "FX" label-color) :height 40 :width 200]
:row
- [(make-slider (:sound-volume @utils/settings) :key :sound-volume-slider) :width 240]
+ [(make-slider 0 100 (:sound-volume @utils/settings) :key :sound-volume-slider) :width 240]
:row
[fullscreen-button :height 56 :width 240]
:row
@@ -277,12 +300,12 @@
(every-pred :save #(utils/intersects? % [x y]))
(vals entities))))
-(defn saves-table [entities stage]
+(defn saves-table [entities ^Stage stage]
(let [group (doto (ButtonGroup.)
(.setMaxCheckCount 1)
(.setMinCheckCount 0)
(.setUncheckLast true))
- [cell-w cell-h] [218 161]
+ [cell-w cell-h] (mapv #(* utils/ui-scale %) [218 161])
make-cell (fn [image] [image :width cell-w :pad 4 4 0 0 :height cell-h])
make-save-screenshot (fn [{:keys [screenshot name id state blurb] :as save}]
(let [btn (doto (assoc (image-button (skin "ui/ui.json"))
@@ -292,14 +315,16 @@
(image-button! :add (doto (Group. )
(.setSize (- cell-w 16) (- cell-h 16) )
(.setOrigin (/ (- cell-w 16) 2) (/ (- cell-h 16) 2))
- (.addActor (:object (doto (image (texture screenshot))
+ (.addActor (:object (doto (image
+ screenshot)
(image! :set-size (- cell-w 16) (- cell-h 16)))))
- (.addActor (:object (make-label (str "" (or blurb name)) label-color )))
+ (.addActor (:object (doto (make-label (str "" (or blurb name)) label-color 0.25)
+ (label! :set-alignment Align/bottomLeft))))
))
save-object)]
- (.add group (:object btn))
+ (.add group ^ImageButton (:object btn))
(ActorEntity. (:object btn))))
save-screenshots (map make-save-screenshot (:saves-list entities))
grouped-screenshots (->> (partition-all 2 save-screenshots)
@@ -308,9 +333,9 @@
scroll-pane (doto (scroll-pane (table grouped-screenshots)
(skin "ui/ui.json"))
(scroll-pane! :set-fade-scroll-bars false))]
- (.setScrollFocus stage (:object scroll-pane))
+ (.setScrollFocus stage ^ScrollPane (:object scroll-pane))
[scroll-pane
- :colspan 3 :height 190 :pad-bottom 4 :width 472]))
+ :colspan 3 :height (* utils/ui-scale 190) :pad-bottom 4 :width (* utils/ui-scale 472)]))
(defn saves-menu [entities stage]
(let [save-label (make-label "" label-color)
@@ -322,102 +347,104 @@
:row
(saves-table entities stage)
:row
- [delete-button :width 150 :height 56]
- [(make-button "Back" :key :back) :width 150 :height 56]
- [continue-button :width 150 :height 56]])
+ [delete-button :width (* utils/ui-scale 150) :height (* utils/button-scale 56)]
+ [(make-button "Back" :key :back) :width (* utils/ui-scale 150) :height (* utils/button-scale 56)]
+ [continue-button :width (* utils/ui-scale 150) :height (* utils/button-scale 56)]])
:save-label save-label
:delete-button delete-button
:continue-button continue-button)))
(defn confirm-delete [entities]
- (make-table [[(make-label "Are you sure you want" label-color) :height 32 :colspan 2]
+ (make-table [[(make-label "Are you sure you want" label-color 0.25) :height (* utils/ui-scale 32) :colspan 2]
:row
- [(make-label "to delete the save" label-color) :height 32 :colspan 2]
+ [(make-label "to delete the save" label-color 0.25) :height (* utils/ui-scale 32) :colspan 2]
:row
- [(make-label (str "\"" (-> entities :selected-save :name) "\"?") label-color) :height 32 :colspan 2 :pad-bottom 4]
+ [(make-label (str "\"" (-> entities :selected-save :name) "\"?") label-color 0.25) :height (* utils/ui-scale 32) :colspan 2 :pad-bottom 4]
:row
- [(make-button "Keep" :key :dont-delete-button) :width 120 :height 56]
- [(make-button "Delete" :key :confirm-delete-button) :width 120 :height 56]]))
+ [(make-button "Keep" :key :dont-delete-button) :width (* utils/ui-scale 120) :height (* utils/button-scale 56)]
+ [(make-button "Delete" :key :confirm-delete-button) :width (* utils/ui-scale 120) :height (* utils/button-scale 56)]]))
(defscreen title-screen
:on-show
- (fn [screen entities]
- (utils/setup-viewport screen 1280 960)
- (log/info "Starting title screen.")
-
- (let [font (utils/get-font "ego/font.fnt")
- music (utils/make-music "music/intro.ogg")
- balloon (utils/make-anim "title/balloon.png" [15 30] 0.45 (range 4))
- banner-back (utils/make-anim "title/banner-back.png" [180 42] 0.2 [0 1 2 1 0 1 2 1])]
+ (fn [screen entities options]
+ (let [[screen global-atlas] (utils/acquire-atlas screen "packed/global.atlas")
+ [screen title-atlas] (utils/acquire-atlas screen "packed/title.atlas")
+ _ (update! screen :texture-atlas title-atlas)
+ screen (utils/setup-viewport screen 1280 960)]
+ (log/info "Starting title screen.")
- (input! :set-cursor-image (utils/cursor "cursor.png" :hourglass) 0 0)
-
- (let [entities {:background (assoc (utils/get-texture "title/background.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :z 0)
- :cloud-background (assoc (utils/get-texture "title/clouds.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :z 2)
- :banner-back (assoc (animation->texture (assoc screen :total-time 0.0) banner-back) :x 580 :y 400 :scale-x 4 :scale-y 4
- :anim banner-back
- :z 3)
- :quill (doto (assoc (image-button (BaseDrawable.)) :x 1150 :y 4 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :z 10 :key :quill)
-
- (image-button! :add (doto (Group. )
- (.addActor (:object (doto (image (utils/get-texture "title/quill.png"))
- (image! :set-scale 4))))))
-
- save-object)
- :logo (assoc (utils/get-texture "title/logo.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :z 6)
- :fade (assoc (utils/get-texture "black.png")
- :scale-x 80
- :scale-y 80
- :opacity 1.0
- :origin-x 0
- :origin-y 0
- :z 100)
- :flying-ego (assoc (utils/get-texture "ego/flying.png")
- :left (flip (utils/get-texture "ego/flying.png"))
- :right (utils/get-texture "ego/flying.png")
- :scale-x 5
- :scale-y 5
- :origin-x 2
- :origin-y 0
- :path (catmull-rom-spline (map #(apply vector-2* %) [[-800 450] [1280 450] [2000 100] [0 100] [-800 300] [1280 300] [2000 450]]) true)
- :x 450
- :y 650
- :z 5)
- :balloon (assoc (animation->texture (assoc screen :total-time 0.0) balloon) :x 100 :y 100 :scale-x 4 :scale-y 4
- :anim balloon
- :path (catmull-rom-spline (map #(apply vector-2* %)
- [[50 50] [70 100] [100 200] [151 206] [300 225]
- [480 300] [560 400] [650 440] [700 550] [750 600]
- [860 650] [950 700] [1030 800] [1280 960] [1300 1000]
- [-50 1000] [-50 -50]]) true)
- :z 3)
- :particle-clouds (assoc (particle-effect "particles/particle-clouds" :reset :start) :x 640 :y 480 :z 1)
- :ego-jet (assoc (particle-effect "particles/jet" :reset :start) :x 450 :y 650 :z 4)
+ (let [font (utils/get-font "ego/font.fnt")
+ music (utils/make-music "music/intro.ogg")
+ balloon (utils/make-anim title-atlas "balloon" [15 30] 0.45 (range 4))
+ banner-back (utils/make-anim title-atlas "banner-back" [180 42] 0.2 [0 1 2 1 0 1 2 1])]
+
+ (graphics! :set-cursor (utils/cursor "cursor.png" :hourglass))
+
+ (let [entities {:background (assoc (utils/atlas->texture title-atlas "background.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :z 0)
+ :cloud-background (assoc (utils/atlas->texture title-atlas "clouds.png" ) :x 0 :y 0 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :z 2)
+ :banner-back (assoc (animation->texture (assoc screen :total-time 0.0) banner-back) :origin-x 85 :origin-y 150 :x 640 :y 960 :scale-x (/ 4 utils/ui-scale) :scale-y (/ 4 utils/ui-scale)
+ :anim banner-back
+ :z 3)
+ :quill (doto (assoc (image-button (BaseDrawable.)) :x 1150 :y 4 :scale-x 4 :scale-y 4 :origin-x 0 :origin-y 0 :z 10 :key :quill)
+
+ (image-button! :add (doto (Group. )
+ (.addActor (:object (doto (image (utils/atlas->texture title-atlas "quill.png"))
+ (image! :set-scale 4))))))
+
+ save-object
+ (#(utils/add-actor-to-stage screen %)))
+ :logo (assoc (utils/atlas->texture title-atlas "logo.png" ) :x 640 :y 960 :scale-x (/ 4 utils/ui-scale) :scale-y (/ 4 utils/ui-scale) :origin-x 160 :origin-y 240 :z 6)
+ :fade (assoc (utils/atlas->texture global-atlas "black.png")
+ :scale-x 80
+ :scale-y 80
+ :opacity 1.0
+ :origin-x 0
+ :origin-y 0
+ :z 100)
+ :flying-ego (assoc (utils/atlas->texture global-atlas "ego/flying.png")
+ :left (flip (utils/atlas->texture global-atlas "ego/flying.png"))
+ :right (utils/atlas->texture global-atlas "ego/flying.png")
+ :scale-x 5
+ :scale-y 5
+ :origin-x 2
+ :origin-y 0
+ :path (catmull-rom-spline (map #(apply vector-2* %) [[-800 450] [1280 450] [2000 100] [0 100] [-800 300] [1280 300] [2000 450]]) true)
+ :x 450
+ :y 650
+ :z 5)
+ :balloon (assoc (animation->texture (assoc screen :total-time 0.0) balloon) :x 100 :y 100 :scale-x 4 :scale-y 4
+ :anim balloon
+ :path (catmull-rom-spline (map #(apply vector-2* %)
+ [[50 50] [70 100] [100 200] [151 206] [300 225]
+ [480 300] [560 400] [650 440] [700 550] [750 600]
+ [860 650] [950 700] [1030 800] [1280 960] [1300 1000]
+ [-50 1000] [-50 -50]]) true)
+ :z 3)
+ :particle-clouds (assoc (particle-effect "particles/particle-clouds" :reset :start) :x 640 :y 480 :z 1)
+ :ego-jet (assoc (particle-effect "particles/jet" :reset :start) :x 450 :y 650 :z 4)
- #_#_:toolbox (-> (assoc (nine-patch {:region (:object (utils/get-texture "talk-bg-2.png")) :left 9 :top 9 :right 9 :bottom 9})
- :y 58 :width 500 :height 297
- :z 7)
- center)
- :main-menu (main-menu)
- :saves-list (utils/snapshot-screenshots)
- :save-index 0
- :font font
- :music music
- :volume 1.0
- :copyright (make-label (str "© Digital Bounce House 2016 - v" (advent.version/version)) label-color)
- :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0
- :finish #(do
+ :main-menu (->> (main-menu screen)
+ (utils/add-actor-to-stage screen))
+ :saves-list (utils/snapshot-screenshots title-atlas)
+ :save-index 0
+ :font font
+ :music music
+ :volume 1.0
+ :copyright (->> (make-label (str "© Digital Bounce House 2016 - v" (advent.version/version)) label-color 0.25)
+ (utils/add-actor-to-stage screen))
+ :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0
+ :finish #(do
- (input! :set-cursor-image (utils/cursor "cursor.png" :main) 0 0)
- (utils/play-music (:music %)) %)
- :ease tween/ease-in-quadratic)}}
- ]
- (merge entities (:main-menu entities)))))
+ (graphics! :set-cursor (utils/cursor "cursor.png" :main))
+ (utils/play-music (:music %)) %)
+ :ease tween/ease-in-quadratic)}}
+ ]
+ (merge entities (:main-menu entities))))))
:on-render
- (fn [{:keys [^FitViewport viewport] :as screen} [entities]]
- (steam/update)
+ (fn [{:keys [^FitViewport viewport] :as screen} entities options]
+ #_(steam/update)
(.apply viewport)
(clear!)
(let [entities (utils/apply-tweens screen entities (:tweens entities))
@@ -437,14 +464,14 @@
:show-screen (fn [entities] entities)
:on-key-up
- (fn [screen entities]
+ (fn [screen entities options]
(when (= (key-code :escape) (:key screen))
(utils/toggle-fullscreen!))
nil)
:on-ui-changed
- (fn [{:keys [actor] :as screen} [entities]]
+ (fn [screen entities {:keys [^Actor actor] :as options}]
(when-not (get-in entities [:tweens :fade-out])
(let [e (-> actor .getUserObject)
actor-key (:key e)]
@@ -453,6 +480,13 @@
(utils/save-settings!)
entities)
+ (= :current-chapter actor-key)
+ (do
+ (label! (table! (actor! e :get-parent) :find-actor "explanation")
+ :set-text (saves/chapter-name (nth [:chapter-1 :chapter-2 :chapter-3 :chapter-4 :chapter-5] (int (slider! e :get-value)))))
+
+ entities)
+
(= :camera-man? actor-key)
(do (swap! utils/settings assoc :camera-man? (check-box! e :is-checked))
(utils/save-settings!)
@@ -479,30 +513,35 @@
(#{:back } actor-key)
(-> entities
- (dissoc :save-menu)
- (dissoc :chapters-menu)
- (dissoc :settings-menu)
- (assoc :main-menu (main-menu)))
+ (utils/remove-actor-from-stage :save-menu)
+ (utils/remove-actor-from-stage :chapters-menu)
+ (utils/remove-actor-from-stage :settings-menu)
+ (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))))
+ (utils/remove-actor-from-stage entities :confirm-delete)
+ (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))))
+ (utils/remove-actor-from-stage entities :main-menu)
+ (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 )))
+ (utils/remove-actor-from-stage :main-menu)
+ (assoc :chapters-menu (->> (chapters-menu )
+ (utils/add-actor-to-stage screen))))
(= :settings actor-key)
(-> entities
- (dissoc :main-menu)
- (assoc :settings-menu (settings-menu)))
+ (utils/remove-actor-from-stage :main-menu)
+ (assoc :settings-menu (->> (settings-menu)
+ (utils/add-actor-to-stage screen))))
(= :toggle-fullscreen actor-key)
(utils/toggle-fullscreen!)
@@ -522,16 +561,18 @@
(= :delete actor-key)
(as-> entities entities
- (dissoc entities :save-menu)
- (assoc entities :confirm-delete (confirm-delete entities)))
+ (utils/remove-actor-from-stage entities :save-menu)
+ (assoc entities :confirm-delete (->> (confirm-delete entities)
+ (utils/add-actor-to-stage screen))))
(= :confirm-delete-button actor-key)
(do
(utils/remove-save (:id (:selected-save entities)))
(as-> entities entities
- (dissoc entities :confirm-delete)
- (assoc entities :saves-list (utils/snapshot-screenshots))
- (assoc entities :save-menu (saves-menu entities (:renderer screen)))))
+ (utils/remove-actor-from-stage entities :confirm-delete)
+ (assoc entities :saves-list (utils/snapshot-screenshots (-> screen :texture-atlas)))
+ (assoc entities :save-menu (->> (saves-menu entities (:renderer screen))
+ (utils/add-actor-to-stage screen)))))
(:save e)
(do
@@ -548,12 +589,18 @@
(text-button! (-> entities :save-menu :continue-button) :set-disabled true)
(text-button! (-> entities :save-menu :delete-button) :set-disabled true))))
- (:chapter e)
- (start-playing screen entities (:chapter e))
+ (= :start actor-key)
+ (do
+ (println "SELECTED chapter" (nth [:chapter-1 :chapter-2 :chapter-3 :chapter-4 :chapter-5]
+ (int (slider! (table! (actor! e :get-parent) :find-actor "slider") :get-value))))
+ (start-playing screen entities ((utils/get-chapters) (nth [:chapter-1 :chapter-2 :chapter-3 :chapter-4 :chapter-5]
+ (int (slider! (table! (actor! e :get-parent) :find-actor "slider") :get-value))))))
:else
entities))))
- :on-resize (fn [{:keys [viewport width height]} [entities]]
+ :on-resize (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [width height]}]
(.update viewport width height false)
- nil))
+ nil)
+ :on-hide (fn [screen entities options]
+ (utils/release-resources screen)))
diff --git a/desktop/src-common/advent/steam.clj b/desktop/src-common/advent/steam.clj
index 45542ed1..a8111261 100644
--- a/desktop/src-common/advent/steam.clj
+++ b/desktop/src-common/advent/steam.clj
@@ -1,142 +1,59 @@
(ns advent.steam
- (:require [play-clj.core :refer :all]
- [clojure.edn :as edn]
- [clojure.tools.logging :as log]
- )
- (:import [java.nio ByteBuffer CharBuffer]
- [java.io ByteArrayOutputStream]
- [com.badlogic.gdx.graphics PixmapIO$PNG]
- ))
+ (:require [play-clj.core :refer :all])
+ (:import [com.badlogic.gdx.graphics Pixmap PixmapIO$PNG]
+ [com.badlogic.gdx.files FileHandle]))
(def has-steam?
- (try
- (import '[com.codedisaster.steamworks SteamUserStats SteamUserStatsCallback SteamAPI SteamRemoteStorage])
- true
- (catch Exception e
- false)))
-
-(def is-app-store? (System/getProperty "app-store"))
-
-(defmacro steamify [steam-version & [regular-version]]
- (if has-steam?
- `(if (and has-steam? (not (System/getProperty "no-steam")))
- ~steam-version
- ~regular-version)
- regular-version))
-
-(defn init []
- (steamify
- (if (SteamAPI/init)
- (log/info "Steam initialized")
- (do
- (log/info "Steam not initialized")
- (def has-steam? false)))))
-
-(defn update []
- (steamify
- (when (SteamAPI/isSteamRunning)
- (SteamAPI/runCallbacks))))
-
-(defn achievement-fn [f achievement]
- (steamify
- (let [stats (atom nil)]
- (log/info "Getting stats...")
- (reset! stats (SteamUserStats. (reify SteamUserStatsCallback
- (onUserStatsReceived [_ _ _ _]
- (f @stats achievement)
- )
- (onUserStatsStored [_ _ _])
- (onUserAchievementStored [_ _ _ _ _ _]))))
- (.requestCurrentStats @stats))))
-
-(def set-achievement (partial achievement-fn
- (fn [stats achievement]
- (log/info "Setting achievement" achievement)
- (.setAchievement stats achievement)
- (.storeStats stats)
- (log/info "Done setting achievement" achievement))))
-
-(def clear-achievement (partial achievement-fn
- (fn [stats achievement]
- (log/info "Clearing achievement" achievement)
- (.clearAchievement stats achievement)
- (.storeStats stats)
- (log/info "Done clearing achievement" achievement))))
+ false
+ )
+(println "loading steam")
+(def is-app-store? false)
(def all-achievements ["PARDON" "EX_CON" "PRO_WRESTLER" "SHEEP_HORDER" "SAFE_AND_SOUND" "DESTINY" "WISE_UP" "BLOODCLOT" "KITTY_KISS"])
+(defn clear-achievement [])
+
+(defn set-achievement [x])
+
(defn clear-all-achievements []
(doall (map clear-achievement all-achievements)))
(defn get-bytes [filename]
- (steamify
- (let [rs (SteamRemoteStorage. nil)
- len (.getFileSize rs filename)
- bb (ByteBuffer/allocateDirect len)
- bytes (make-array Byte/TYPE len)]
- (.fileRead rs filename bb len)
- (.get bb bytes)
- bytes)
- (.readBytes (if is-app-store?
- (files! :external filename)
- (files! :local filename)))))
+ (.readBytes (if is-app-store?
+ (files! :external filename)
+ (files! :local filename))))
(defn write-bytes [filename bytes]
- (steamify
- (let [rs (SteamRemoteStorage. nil)
- bb (ByteBuffer/allocateDirect (* 2 (count bytes)))]
- (-> bb (.put bytes) )
- (.fileWrite rs filename bb (* 2 (count bytes))))
- (let [f (if is-app-store?
- (files! :external filename)
- (files! :local filename))]
- (.writeBytes f bytes false))))
+ (let [f (if is-app-store?
+ (files! :external filename)
+ (files! :local filename))]
+ (.writeBytes f bytes false)))
(defn list-edn-files []
- (steamify
- (let [rs (SteamRemoteStorage. nil)]
- (for [i (range (.getFileCount rs))
- :let [n (.getFileNameAndSize rs i (make-array Integer/TYPE 1))]
- :when (.endsWith n ".edn")]
- n))
- (if is-app-store?
- (for [save-file (.list (files! :external "saves/") ".edn")]
- (str "saves/" (.name save-file)))
- (for [save-file (.list (files! :local "saves/") ".edn")]
- (str "saves/" (.name save-file))))))
+ (if is-app-store?
+ (for [save-file (.list (files! :external "saves/") ".edn")]
+ (str "saves/" (.name ^FileHandle save-file)))
+ (for [save-file (.list (files! :local "saves/") ".edn")]
+ (str "saves/" (.name ^FileHandle save-file)))))
-(defn save-screenshot [pm filename]
- (steamify
- (let [rs (SteamRemoteStorage. nil)
- png (PixmapIO$PNG. (* (.getWidth pm) (.getHeight pm) 1.5))
- baos (ByteArrayOutputStream. (* (.getWidth pm) (.getHeight pm) 1.5))
- _ (.write png baos pm)
- bytes (.toByteArray baos)
- bb (ByteBuffer/allocateDirect (count bytes))]
- (.put bb bytes)
- (.fileWrite rs filename bb (count bytes)))
+(defn save-screenshot [^Pixmap pm ^String filename]
+ (let [f (if is-app-store?
+ (files! :external filename)
+ (files! :local filename))
+ png (PixmapIO$PNG. (* (.getWidth pm) (.getHeight pm) 1.5))]
- (let [f (if is-app-store?
- (files! :external filename)
- (files! :local filename))
- png (PixmapIO$PNG. (* (.getWidth pm) (.getHeight pm) 1.5))]
-
- (.write png f pm)
- (.dispose png))))
+ (.write png f pm)
+ (.dispose png)))
(defn delete-file [filename]
- (steamify
- (.fileDelete (SteamRemoteStorage. nil) filename)
- (.delete (if is-app-store?
- (files! :external filename)
- (files! :local filename)))))
+ (let [file (if is-app-store?
+ (files! :external filename)
+ (files! :local filename))]
+ (when (.exists file)
+ (.delete file))))
(defn save-screenshot-file-name [name]
- (steamify
- (str "screenshot-" (clojure.core/name name) ".png" )
- (str "saves/screenshot-" (clojure.core/name name) ".png" )))
+ (str "saves/screenshot-" (clojure.core/name name) ".png" ))
(defn save-file-name [id]
- (steamify
- (str id ".edn")
- (str "saves/" id ".edn")))
+ (str "saves/" id ".edn"))
diff --git a/desktop/src-common/advent/tween.clj b/desktop/src-common/advent/tween.clj
index 306b4f56..4c6ed359 100644
--- a/desktop/src-common/advent/tween.clj
+++ b/desktop/src-common/advent/tween.clj
@@ -1,19 +1,22 @@
(ns advent.tween)
-(defn ease-in-expo [power t start delta duration]
- (let [pct-done (/ t duration)
+(set! *unchecked-math* :warn-on-boxed)
+
+(defn ease-in-expo-maker [^double power ]
+ (fn ^double [^double t ^double start ^double delta ^double duration]
+ (let [pct-done (/ t duration)
pct-done (Math/pow pct-done power)]
- (+ start
- (* delta pct-done))))
+ (+ start
+ (* delta pct-done)))))
-(def ease-linear (partial ease-in-expo 1.0))
-(def ease-in-quadratic (partial ease-in-expo 2.0))
-(def ease-in-cubic (partial ease-in-expo 3.0))
-(def ease-in-quartic (partial ease-in-expo 4.0))
-(def ease-in-quintic (partial ease-in-expo 5.0))
-(def ease-in-dectic (partial ease-in-expo 10.0))
+(def ease-linear (ease-in-expo-maker 1.0))
+(def ease-in-quadratic (ease-in-expo-maker 2.0))
+(def ease-in-cubic (ease-in-expo-maker 3.0))
+(def ease-in-quartic (ease-in-expo-maker 4.0))
+(def ease-in-quintic (ease-in-expo-maker 5.0))
+(def ease-in-dectic (ease-in-expo-maker 10.0))
-(defn ease-in-out-quadratic [t start delta duration]
+(defn ease-in-out-quadratic [^double t ^double start ^double delta ^double duration]
(let [t (/ t (/ duration 2))]
(if (< t 1)
(+ (* (/ delta 2)
@@ -24,24 +27,29 @@
(dec (* t (- t 2))))
start)))))
-(defn ease-in-out-quintic [t start delta duration]
- (let [t (/ t (/ duration 2))]
- (if (< t 1)
- (+ (* (/ delta 2)
- t t t t t)
- start)
- (let [t (- t 2)]
- (+ (* (/ (- delta) 2)
- (- (* t t t t) 2))
- start)))))
+(defn ease-in-out-quintic ^double [^double t ^double start ^double delta ^double duration]
+ (let [t (/ t (/ duration (double 2.0)))]
+ (if (< t (double 1))
+ (let [result (+ (* (/ delta (double 2.0))
+ t t t t t) start)]
+ result)
+
+ (let [t (- t (double 2.0))
+ result (+ (* (/ (- delta) (double 2.0))
+ (- (* t t t t) (double 2.0)))
+ start)]
+ result))))
-(defn ease-out-quadratic [t start delta duration]
+(defn ease-out-quadratic ^double [^double t ^double start ^double delta ^double duration]
(let [t (/ t duration)]
- (+ (* (- delta) t (- t 2)) start)))
+ (unchecked-add (-> (unchecked-subtract 0.0 delta)
+ (unchecked-multiply t)
+ (unchecked-multiply (unchecked-subtract t 2.0)))
+ start)))
-(defn ease-out-cubic [t start delta duration]
- (let [t (dec (/ t duration))]
- (+ (* delta (inc (* t t t))) start)))
+(defn ease-out-cubic ^double [^double t ^double start ^double delta ^double duration]
+ (let [t (unchecked-subtract (/ t duration) 1)]
+ (unchecked-add (unchecked-multiply delta (unchecked-add 1 (Math/pow t 3))) start)))
(defn tween [id screen path start end duration & {:keys [finish ease entities]}]
(let [ease (or ease ease-linear)
@@ -50,11 +58,11 @@
start (if (and entities (= start :current))
(get-in entities path)
start)
- delta (- end start)
+ delta (unchecked-subtract ^double end ^double start)
]
- (fn [e total-time]
- (let [delta-time (- total-time start-time)
- pct-done (min (/ delta-time duration) 1.0)
+ (fn [e ^double total-time]
+ (let [delta-time (- total-time ^double start-time)
+ pct-done (min (/ delta-time ^double duration) 1.0)
new-val (ease delta-time start delta duration)
e (assoc-in e path (if (= 1.0 pct-done)
end
@@ -62,4 +70,5 @@
(if (= 1.0 pct-done)
(finish (update-in e [:tweens] dissoc id))
- e)))))
+ e))
+ )))
diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj
index 3f18d0ff..f22aa58e 100644
--- a/desktop/src-common/advent/utils.clj
+++ b/desktop/src-common/advent/utils.clj
@@ -1,5 +1,5 @@
(ns advent.utils
- (:refer-clojure :exclude [load])
+
(:require [play-clj.core :refer :all]
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
@@ -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!! 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]
@@ -23,51 +24,165 @@
InputMultiplexer InputProcessor Net Preferences Screen]
[java.lang Object]))
+(defn add-actor-to-stage [{:keys [^Stage renderer ui-listeners]} {:keys [^Actor object] :as entity}]
+ (.addActor renderer object)
+ (doseq [[_ listener] ui-listeners]
+ (.addListener ^Actor object listener))
+ entity)
+
+
+(def ui-scale (Double/parseDouble (str (or (System/getProperty "ui_scale") 1.5))))
+(def button-scale (+ 1 (* (- ui-scale 1.0) 2.0)))
+(def mobile? (= 1.5 ui-scale))
+(def max-zoom (if mobile? 0.5 0.75))
+(def min-zoom 0.95)
+(def button-font-scale (if mobile? 0.75 0.5))
+(def title-label-scale (if mobile? 0.5 0.25))
+
+(defn clear-stage [{:keys [^Stage renderer]}]
+ (.clear renderer))
+
+(defn remove-actor-from-stage
+ ([entities id]
+ (do
+ (remove-actor-from-stage (id entities))
+ (dissoc entities id)))
+ ([{: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)))
-(def +all-cursors+ [:main :wool :mushrooms :carrot :right :down :left :up :flask :flask-with-contents :trophy :ladder :stick :cat-toy :balloon :frog-legs :teddy :portrait :recipe :glass-eye :motivational-tapes :used-earplugs :grass :slobber :flask-with-strength :medal :kiss :sword :hourglass :mandrake :ball-n-chain :key :rope :crowbar :note-1 :ash :sack-lunch :flies :spear :monocle :feather :spell-component :money :charcoal :broken-clock :slingshot :camera :walkie-talkies :alarm-clock :walkie-talkie :flask-water :flask-water-stuff :flask-water-stuff-2 :note-2 :magic-slingshot :active-main :shovel :broom :tune])
+(def ^:const +all-cursors+ [:main :wool :mushrooms :carrot :right :down :left :up :flask :flask-with-contents :trophy :ladder :stick :cat-toy :balloon :frog-legs :teddy :portrait :recipe :glass-eye :motivational-tapes :used-earplugs :grass :slobber :flask-with-strength :medal :kiss :sword :hourglass :mandrake :ball-n-chain :key :rope :crowbar :note-1 :ash :sack-lunch :flies :spear :monocle :feather :spell-component :money :charcoal :broken-clock :slingshot :camera :walkie-talkies :alarm-clock :walkie-talkie :flask-water :flask-water-stuff :flask-water-stuff-2 :note-2 :magic-slingshot :active-main :shovel :broom :tune :hand :hand-depressed :talk :talk-depressed :look :look-depressed])
+
+(def ^:const +cursor-hotspots+ {:look [8 8]
+ :look-depressed [8 8]
+ :wool [8 8]
+ :mushrooms [8 8]
+ :right [8 8]
+ :down [8 8]
+ :left [8 8]
+ :up [8 8]
+ :flask [8 8]
+ :flask-with-contents [8 8]
+ :trophy [8 8]
+ :ladder [8 8]
+ :stick [8 8]
+ :cat-toy [8 8]
+ :balloon [3 3]
+ :frog-legs [8 8]
+ :teddy [8 8]
+ :portrait [5 8]
+ :recipe [8 8]
+ :glass-eye [8 3]
+ :motivational-tapes [8 8]
+ :used-earplugs [8 8]
+ :grass [2 2]
+ :slobber [8 8]
+ :flask-with-strength [8 8]
+ :medal [8 8]
+ :kiss [8 8]
+ :sword [8 8]
+ :hourglass [0 0]
+ :mandrake [8 8]
+ :ball-n-chain [8 8]
+ :key [3 8]
+ :rope [8 8]
+ :crowbar [0 0]
+ :note-1 [8 8]
+ :ash [8 10]
+ :sack-lunch [8 8]
+ :flies [8 8]
+ :spear [0 0]
+ :monocle [8 8]
+ :feather [8 8]
+ :spell-component [8 8]
+ :money [8 8]
+ :charcoal [1 1]
+ :broken-clock [8 8]
+ :slingshot [8 8]
+ :camera [8 8]
+ :walkie-talkies [8 8]
+ :alarm-clock [8 8]
+ :walkie-talkie [8 8]
+ :flask-water [8 8]
+ :flask-water-stuff [8 8]
+ :flask-water-stuff-2 [8 8]
+ :note-2 [8 8]
+ :magic-slingshot [8 8]
+ :active-main [0 0]
+ :shovel [8 8]
+ :broom [0 0]
+ :tune [8 8]
+ :hand [3 0]
+ :hand-depressed [3 0]
+ :talk [8 8]
+ :talk-depressed [8 8]})
(def settings (atom {:music-volume 50.0
:sound-volume 75.0
+ :camera-man? (not mobile?)
:fullscreen true}))
-(def selected-save (atom nil))
+(defonce selected-save (atom nil))
-(defn current-music-volume [& [factor]]
- (* (Math/pow (/ (:music-volume @settings) 100.0) 2)
- 0.25
- (or factor 1.0)))
+(defn current-music-volume
+ (^double [] (current-music-volume 1.0))
+ (^double [^double factor]
+ (-> (Math/pow (unchecked-multiply (:music-volume @settings) 0.01) 2)
+ (unchecked-multiply 0.25)
+ (unchecked-multiply (double factor)))))
-(defn current-sound-volume [& [factor]]
- (* (Math/pow (/ (:sound-volume @settings) 100.0) 2)
- 0.5
- (or factor 1.0)))
+(defn current-sound-volume
+ (^double [] (current-sound-volume 1.0))
+ (^double [^double factor]
+ (-> (Math/pow (unchecked-multiply (:sound-volume @settings) 0.01) 2)
+ (unchecked-multiply 0.5)
+ (unchecked-multiply (double factor)))))
(defn cursor [filename which]
- (let [scale 2
+ (let [scale 4
base-cursor (pixmap filename)
target-width (* 16 scale)
target-height (* 16 scale)
resized (Pixmap. target-width target-height (.getFormat base-cursor))
- index (.indexOf +all-cursors+ which)]
+ index (.indexOf +all-cursors+ which)
+ [hot-x hot-y] (+cursor-hotspots+ which [0 0])
+ hot-x (int hot-x)
+ hot-y (int hot-y)]
(Pixmap/setFilter Pixmap$Filter/NearestNeighbour)
(pixmap! resized :draw-pixmap base-cursor (* index 18) 0 16 16
0 0 target-width target-height)
-
- resized ))
-(defn get-texture [path]
- (let [atlas-name (str/replace path #".png" "")
- atlas (texture-atlas "packed/pack.atlas")]
- (texture (texture-atlas! atlas :find-region atlas-name))))
+ (graphics! :new-cursor resized (* hot-x scale) (* hot-y scale) )))
+(defn atlas->texture
+ ([atlas path]
+ (let [region-name (str/replace path #".png" "")]
+ (if-let [region (texture-atlas! atlas :find-region region-name)]
+ (texture region)
+ (log/error path "not found"))))
+ ([atlas path index]
+ (let [region-name (str/replace path #".png" "")]
+ (if-let [region (texture-atlas! atlas :find-region region-name index)]
+ (texture region)
+ (log/error path index "not found")))))
+
+(defn get-texture
+ ([path]
+ (println "WARNING: using pack.atlas:" path)
+ (get-texture "packed/pack.atlas" path))
+ ([atlas path]
+ (atlas->texture (texture-atlas atlas) path))
+ ([atlas path index]
+ (atlas->texture (texture-atlas atlas) path index)))
(defn snapshot-list []
(->> (for [filename (steam/list-edn-files)]
(try
- (edn/read-string (String. (steam/get-bytes filename) "UTF-8"))
+ (edn/read-string (String. ^bytes (steam/get-bytes filename) "UTF-8"))
(catch Exception _ nil)))
(filter (every-pred identity :name :id))
(sort-by (fn [s]
@@ -75,13 +190,13 @@
(Long/MIN_VALUE)
(- (Long/parseLong (:id s))))))))
-(defn snapshot-screenshots []
+(defn snapshot-screenshots [atlas]
(doall (for [snapshot (snapshot-list)]
(assoc-in snapshot [:screenshot]
(try (let [bytes (steam/get-bytes (:screenshot snapshot))]
- (Pixmap. bytes 0 (count bytes)))
+ (texture (Pixmap. ^bytes bytes 0 (count bytes))))
(catch Exception e
- (Pixmap. 160 120 Pixmap$Format/RGB888)))))))
+ (atlas->texture atlas (saves/default-screenshot (:state snapshot)))))))))
(defn save-chapter [entities chapter]
(let [prefs (.getPreferences (Gdx/app) "ticks-tales-saves")
@@ -104,33 +219,59 @@
(first (drop-while #{:fail}
(repeatedly times
#(try (fn)
- (catch Exception e
+ (catch Exception e
(log/error "Could not save!" e)
:fail))))))
+(defmacro iosify [mobile-version & [regular-version]]
+ (if (System/getProperty "is-desktop")
+ regular-version
+ mobile-version))
+
+(def screenshot-chan (chan))
+
+(defn publish-screenshot-fn []
+ (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)]
+ 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 []
+ (let [save-fn (fn []
(log/info "Saving " id name)
(let [save {:name name
: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 [_ (Pixmap/setFilter Pixmap$Filter/BiLinear)
- viewport (-> @ (resolve 'advent.screens.scene/scene) :screen deref :viewport)
- [x y w h g-l g-r] [(.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport)]
- pm (ScreenUtils/getFrameBufferPixmap x y w h)
- resized (Pixmap. 160 120 Pixmap$Format/RGB888)
- _ (.drawPixmap resized pm 0 0 w h 0 0 160 120)]
- (steam/save-screenshot resized (steam/save-screenshot-file-name id))))]
- (try-times gl-func 3)))))]
+ (iosify
+ nil
+ (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] ( (bitmap-font filename)
- (doto (bitmap-font! :set-scale 0.5 0.5)))
+ #_(doto (bitmap-font! :set-font-scale 0.5 0.5)))
tr (bitmap-font! font :get-region)
tx (.getTexture tr)]
(call! ^Texture tx :set-filter Texture$TextureFilter/Linear Texture$TextureFilter/Linear)
@@ -212,31 +353,48 @@
(texture! frame :flip true false)
frame))))
-(defn split-texture [file [tile-width tile-height] frames]
- (let [sheet (get-texture file)
- sheet-obj ^TextureRegion (:object sheet)
- width ^int (int (.getRegionWidth sheet-obj))
- x ^int (int (.getRegionX sheet-obj))
- y ^int (int (.getRegionY sheet-obj))]
- (for [frame frames
- :let [new-tex ^TextureRegion (TextureRegion. sheet-obj)]]
- (do
- (.setRegion new-tex
- (unchecked-add x (unchecked-multiply tile-width frame))
- y
- tile-width
- tile-height)
- (->TextureEntity new-tex))))
- )
+(defn split-texture
+ ([file [^int tile-width ^int tile-height] frames]
+ (let [sheet (get-texture file)
+ sheet-obj ^TextureRegion (:object sheet)
+ width ^int (int (.getRegionWidth sheet-obj))
+ x ^int (int (.getRegionX sheet-obj))
+ y ^int (int (.getRegionY sheet-obj))]
+ (for [frame frames
+ :let [new-tex ^TextureRegion (TextureRegion. sheet-obj)]]
+ (do
+ (.setRegion new-tex
+ ^int (unchecked-add x (unchecked-multiply tile-width frame))
+ y
+ tile-width
+ tile-height)
+ (->TextureEntity new-tex)))))
-(defn make-anim [file [w h] speed frames]
- (animation speed (split-texture file [w h] frames)))
+ ([atlas file [^int tile-width ^int tile-height] frames]
+ (let [sheet (atlas->texture atlas file)
+ sheet-obj ^TextureRegion (:object sheet)
+ width ^int (int (.getRegionWidth sheet-obj))
+ x ^int (int (.getRegionX sheet-obj))
+ y ^int (int (.getRegionY sheet-obj))]
+ (for [frame frames
+ :let [new-tex ^TextureRegion (TextureRegion. sheet-obj)]]
+ (do
+ (.setRegion new-tex
+ ^int (unchecked-add x (unchecked-multiply tile-width frame))
+ y
+ tile-width
+ tile-height)
+ (->TextureEntity new-tex))))))
-(defn make-anim-seq [file [w h] speed frames]
- (animation speed (map #(get-texture (str file "-" (inc %) ".png")) frames)))
+(defn make-anim
+ ([file [w h] speed frames]
+ (animation speed (split-texture file [w h] frames)))
+ ([atlas file [w h] speed frames]
+ (animation speed (split-texture atlas file [w h] frames))))
-(defn make-bird [screen p]
- (let [bird-sheet (texture! (get-texture "outside-castle/bird.png") :split 1 2)
+
+(defn make-bird [screen global-atlas p]
+ (let [bird-sheet (texture! (atlas->texture global-atlas "bird") :split 1 2)
bird-stand (animation 0.15 (for [i [0 1]]
(aget bird-sheet 0 i)))]
(assoc (animation->texture screen bird-stand)
@@ -254,8 +412,7 @@
(assoc entity :x (vector-2! v :x) :y (vector-2! v :y)))))))
(defn path-point [speed screen entities entity]
- (* (- (:total-time screen) (:path-start-time entity 0.0)) speed)
- )
+ (* (- (:total-time screen) (:path-start-time entity 0.0)) speed))
(defn update-path-location [speed screen entities entity]
(if (:path entity)
@@ -268,20 +425,20 @@
(defn find-override [entities [x y]]
(first (concat (filter #(and ((:mouse-in? %) entities x y)
-
+
(:override %))
- (get-in entities [:room :interactions]))
+ (-> entities :room :interactions))
(filter #(and (:mouse-in? %)
((:mouse-in? %) entities x y)
(not= "ego" (:id %))
- (:script %))
- (vals (get-in entities [:room :entities])))
+ (:get-script %))
+ (vals (-> entities :room :entities)))
(filter #(and ((:mouse-in? %) entities x y)
- (:script %))
- (get-in entities [:room :interactions])))))
+ (:get-script %))
+ (-> entities :room :interactions)))))
(defn hovering-ego [entities [x y]]
- (when-let [mouse-in (get-in entities [:room :entities :ego :mouse-in?])]
+ (when-let [mouse-in (-> entities :room :entities :ego :mouse-in?)]
(mouse-in entities x y)))
(defn remove-interaction [entities id]
@@ -295,14 +452,22 @@
(music! snd :stop))
(defn make-music [r]
+ (log/info "making music from" r)
(try
- (doto (music r) (music! :set-looping true))
- (catch Exception _
+ (if mobile?
+ (doto (music (str r ".mp3")) (music! :set-looping true))
+ (doto (music r) (music! :set-looping true)))
+
+ (catch Exception x
+ (log/warn "music making error" x)
+
(doto (music (str r ".mp3")) (music! :set-looping true)))))
(defn load-sound [f]
- (try
- (sound f)
+ (try
+ (iosify
+ (sound (str f ".mp3"))
+ (sound f))
(catch Exception e
(log/info e)
(sound (str f ".mp3")))))
@@ -316,16 +481,24 @@
(vals tweens)))
(defn intersects? [e [x y]]
- (and (:object e)
- (< (:x e) x (+ (:x e) (or (:width e) (when (actor? e) (.getWidth ^Actor (:object e))))))
- (< (:y e) y (+ (:y e) (or (:height e) (when (actor? e) (.getHeight ^Actor (:object e))))))))
+ (when (:object e)
+ (let [object-width (* (:scale-x e 1.0) (or (:intersect-width e) (:width e) (when (actor? e ) (.getWidth ^Actor (:object e))) 0))
+ object-height (* (:scale-y e 1.0) (or (:intersect-height e) (:height e) (when (actor? e ) (.getHeight ^Actor (:object e))) 0))
+ origin-x (* (:scale-x e 1.0) (:origin-x e 0))
+ origin-y (* (:scale-y e 1.0) (:origin-y e 0))
+ object-x (- (or (:x e) (when (actor? e ) (.getX ^Actor (:object e))) 0) origin-x)
+ object-y (- (or (:y e) (when (actor? e ) (.getY ^Actor (:object e))) 0) origin-y)]
+
+ (and (:object e)
+ (< object-x x (+ object-x object-width))
+ (< object-y y (+ object-y object-height))))))
(defn get-current-music [entities]
(let [time (get-in entities [:state :time])
musics (:musics entities)
override-music (musics (get-in entities [:music-override :value]))
- current-music (musics (get-in entities [:room :music]))
- current-time-music (musics (get-in entities [:room :music time]))]
+ current-music (musics (get-in entities [:room-musics (get-in entities [:state :last-room])]))
+ current-time-music (musics (get-in entities [:room-musics (get-in entities [:state :last-room]) time]))]
(or override-music current-music current-time-music)))
@@ -335,18 +508,18 @@
stage (Stage. viewport)]
(update! screen :renderer stage :viewport viewport :camera cam)
(.apply viewport)
- [cam viewport stage]))
+ (assoc screen :renderer stage :viewport viewport :camera cam)))
-(defn unproject
- ([screen]
- (unproject screen [(:input-x screen) (:input-y screen)]) )
- ([screen [x y]]
+(defn unproject
+ ([screen options]
+ (unproject screen options [(:input-x options) (:input-y options)]) )
+ ([screen options [x y]]
(let [pj (.unproject ^FitViewport (:viewport screen) (vector-2 x y))
x (.x pj)
y (.y pj)]
[x y])))
-(defn project
+(defn project
([screen [x y]]
(let [pj (.project ^FitViewport (:viewport screen) (vector-2 x y))
x (.x pj)
@@ -354,64 +527,65 @@
[x y])))
(defn contains-point? [x1 y1 width height x y]
- (and (< x1 x (+ x1 width))
- (< y1 y (+ y1 height))))
+ (and (<= x1 x (+ x1 width))
+ (<= y1 y (+ y1 height))))
(defn is-unstoppable-script-running [screen entities]
(let [current-action (get-in entities [:fg-actions :current])
is-script-running (get-in entities [:fg-actions :script-running?])]
(and is-script-running
- (= :none (get-in entities [:fg-actions :last-skip-type])))))
+ (not (#{:end :none-but-arrow} (or (get-in entities [:fg-actions :last-skip-type]) :end))))))
-(defn update-override [{:keys [^FitViewport viewport] :as screen} entities]
- (let [raw-pos (get-in entities [:cursor :last-pos])
- last-pos (unproject screen raw-pos)
+(defn update-override [{:keys [^FitViewport viewport] :as screen} entities options]
+ (let [raw-pos (-> entities :cursor :last-pos)
+ last-pos (unproject screen options raw-pos)
mouse-override (find-override entities last-pos)
out-of-bounds (not (contains-point? (.getScreenX viewport) (.getScreenY viewport)
(.getScreenWidth viewport) (.getScreenHeight viewport)
(first raw-pos) (last raw-pos)))
hovering-ego (hovering-ego entities last-pos)
- current (get-in entities [:cursor :current])]
-
+ current (-> entities :cursor :current)
+ entities (assoc-in entities [:label :text] "")
+ selected-inventory-item (@(resolve 'advent.screens.scene/get-selected-inventory-item))]
+
(cond
out-of-bounds
(update-in entities [:cursor] assoc :override nil :active false )
-
- (not (get-in entities [:state :active?]))
+
+ (not (-> entities :state :active?))
(-> entities
- (assoc-in [:cursor :override] nil)
- (assoc-in [:cursor :active] false))
+ (assoc-in [:cursor :override] nil))
(is-unstoppable-script-running screen entities)
(-> entities
- (assoc-in [:cursor :override] :hourglass)
- (assoc-in [:cursor :active] false))
+ (assoc-in [:cursor :override] :hourglass))
- (get-in entities [:state :hud-active?])
+ (-> entities :state :hud-active?)
(-> entities
(assoc-in [:cursor :override] nil)
- (assoc-in [:cursor :active] false))
+ (assoc-in [:label :text] ""))
- (and hovering-ego (not= :main current))
- (-> entities
- (assoc-in [:cursor :override] (or (:cursor mouse-override) (when (#{:main :active-main} (get-in entities [:cursor :last])) :active-main)))
- (assoc-in [:cursor :active] true))
+ (and mouse-override (:only-script mouse-override))
+ (-> entities
+ (assoc-in [:cursor :override] (:cursor mouse-override))
+ (assoc-in [:label :text] (:label mouse-override)))
+
+ selected-inventory-item
+ (-> entities
+ (assoc-in [:cursor :override] selected-inventory-item)
+ (assoc-in [:label :text] (:label mouse-override)))
mouse-override
(-> entities
- (assoc-in [:cursor :override] (or (:cursor mouse-override) (when (#{:main :active-main} (get-in entities [:cursor :last])) :active-main)))
- (assoc-in [:cursor :active] true))
-
-
+ (assoc-in [:cursor :override] (:cursor mouse-override))
+ (assoc-in [:label :text] (:label mouse-override)))
:else
- (-> entities
- (assoc-in [:cursor :override] nil)
- (assoc-in [:cursor :active] false)))))
+ (assoc-in entities [:cursor :override] :main))))
-(def default-night-merge {:r 0.08 :g 0.1 :b 0.36 :multiply-amount 1.0 :hue-amount 1.0})
-(def default-night-merge-sprite {:r 0.08 :g 0.1 :b 0.36 :multiply-amount 0.3 :hue-amount 0.4})
+(def default-night-merge {:r 0.13 :g 0.16 :b 0.61 :multiply-amount 0.5 :hue-amount 0.75})
+(def default-night-merge-sprite {:r 0.13 :g 0.16 :b 0.61 :multiply-amount 0.1 :hue-amount 0.35})
(defn clamp-volume [vol]
(max vol 0.005))
@@ -429,9 +603,9 @@
(defn fast-forward-particle [p]
(particle-effect! p :reset)
- (particle-effect! p :start)
+ (particle-effect! p :start)
- (particle-effect! p :update 10.0)
+ (particle-effect! p :update 10.0)
(dotimes [_ 160]
(particle-effect! p :update 0.2)))
@@ -451,29 +625,24 @@
(do
(log/info "Making windowed 800x600 decorated window")
(System/setProperty "org.lwjgl.opengl.Window.undecorated", "false")
- (.setDisplayMode Gdx/graphics 800 600 false)))
+ (.setFullscreenMode Gdx/graphics (.getDisplayMode Gdx/graphics))))
(defmethod make-fullscreen :linux []
- (let [width (-> Gdx/graphics .getDesktopDisplayMode .width)
- height (-> Gdx/graphics .getDesktopDisplayMode .height)]
+ (let [width (-> Gdx/graphics .getDisplayMode .width)
+ height (-> Gdx/graphics .getDisplayMode .height)]
(log/info "Making fullscreen " width "x" height " as undecorated window")
(System/setProperty "org.lwjgl.opengl.Window.undecorated", "true")
- (.setDisplayMode Gdx/graphics
- width
- height
- false)))
+ (.setFullscreenMode Gdx/graphics (.getDisplayMode Gdx/graphics))))
(defmethod is-fullscreen? :linux []
(= "true" (System/getProperty "org.lwjgl.opengl.Window.undecorated")))
(defn make-fullscreen-normal []
- (let [width (-> Gdx/graphics .getDesktopDisplayMode .width)
- height (-> Gdx/graphics .getDesktopDisplayMode .height)]
+ (let [width (-> Gdx/graphics .getDisplayMode .width)
+ height (-> Gdx/graphics .getDisplayMode .height)]
(log/info "Making fullscreen " width "x" height " as true fullscreen")
- (.setDisplayMode Gdx/graphics
- width
- height
- true)
+ (.setFullscreenMode Gdx/graphics
+ (.getDisplayMode Gdx/graphics))
(set! (.foregroundFPS (-> (class Gdx/graphics)
(.getDeclaredField (name "config"))
(doto (.setAccessible true))
@@ -483,7 +652,7 @@
(do
(log/info "Making windowed 1280x960 decorated window")
(System/setProperty "org.lwjgl.opengl.Window.undecorated", "false")
- (.setDisplayMode Gdx/graphics 1280 960 false)))
+ (.setWindowedMode Gdx/graphics 1280 960)))
(defn is-fullscreen?-normal []
(.isFullscreen Gdx/graphics))
@@ -541,24 +710,88 @@
(play-sound! screen entities snd volume-fn pan type 1.0))
([screen entities snd volume-fn pan type pitch]
-
- (let [vol (volume-fn entities)
- snd (if (keyword? snd)
- (or (-> entities :room :sounds snd)
- (-> entities :sounds snd))
- snd)
- sound-id (if (= :once type)
- (sound! snd :play (scale-vol-from-fade entities (current-sound-volume vol)) (or pitch 1.0) pan )
- (sound! snd :loop 0.0 (or pitch 1.0) pan )) ]
- (update-in entities [:current-sounds :value]
- conj {:id sound-id
- :sound snd
- :volume-fn volume-fn
- :type type
- :ends-at (if (= type :once)
- (+ (:total-time screen) (sound! snd :duration))
- nil)}))))
+ (let [vol (volume-fn entities)
+ snd (if (keyword? snd)
+ (or (-> entities :room :sounds snd)
+ (-> entities :sounds snd))
+ snd)
+
+ sound-id (if (= :once type)
+ (sound! snd :play (scale-vol-from-fade entities (current-sound-volume vol)) (or pitch 1.0) pan )
+ (sound! snd :loop 0.0 (or pitch 1.0) pan )) ]
+ (update-in entities [:current-sounds :value]
+ conj {:id sound-id
+ :sound snd
+ :volume-fn volume-fn
+ :type type
+ :ends-at (if (= type :once)
+ (+ (:total-time screen) 1.0 #_(sound! snd :duration))
+ nil)}))
+ entities))
(defn stop-all-sounds! [entities]
- (doseq [snd (get-in entities [:current-sounds :value])]
+ (doseq [snd (get-in entities [:current-sounds :value] [])]
(sound! (:sound snd) :stop (:id snd))))
+
+(defn translate-depressed [cursor depressed?]
+ (if depressed?
+ (get {:hand :hand-depressed
+ :talk :talk-depressed
+ :look :look-depressed} cursor cursor)
+ cursor))
+
+(defn bound-to-camera [x length zoom]
+ (min (- length (* length 0.5 zoom ))
+ (max (* length 0.5 zoom )
+ x)))
+
+(defn get-entity [entities id]
+ ((:entities (:room entities)) id))
+
+(defmacro eager-loop [xs n form]
+ `(let [xs# ~xs]
+ (if (instance? clojure.lang.Indexed xs#)
+ (loop [x# 0]
+ (if (< x# (count xs#))
+ (let [~n (nth xs# x#)]
+ ~form
+ (recur (inc x#)))))
+ (do
+
+ (loop [[~n & r#] xs#]
+ (if (seq r#)
+ (do ~form
+ nil)
+ (do ~form
+ (recur r#))))))))
+
+
+(defn acquire-atlas
+ ([screen file]
+ (acquire-atlas screen file :default))
+ ([screen file id]
+ (let [resources (get-in screen [:resources id] [])
+ atlas (texture-atlas file)]
+ (update! screen :resources
+ (assoc (:resources screen) id (conj resources file)))
+ [(assoc-in screen [:resources id] (conj resources file))
+ atlas])))
+
+(defn release-resources
+ ([screen]
+ (release-resources screen :default))
+ ([screen id]
+ (println (:resources screen))
+
+ (doseq [resource (id (:resources screen))]
+ (println "releasing " resource)
+ (asset-manager! *asset-manager* :unload resource))
+
+ (app! :log "info"(str "Released resources " (.getDiagnostics *asset-manager*)))
+ (update! screen :resources (assoc (:resources screen {}) id []))))
+
+(defn make-anim-seq
+ ([file [w h] speed frames]
+ (animation speed (map #(get-texture (str file "-" (inc %) ".png")) frames)))
+ ([atlas file [w h] speed frames]
+ (animation speed (map #(atlas->texture atlas file %) frames))))
diff --git a/desktop/src-common/advent/version.clj b/desktop/src-common/advent/version.clj
index 25dd2922..bb7a0bb2 100644
--- a/desktop/src-common/advent/version.clj
+++ b/desktop/src-common/advent/version.clj
@@ -1,5 +1,7 @@
(ns advent.version
(:gen-class))
+(def version-override nil)
+
(defn version []
- (-> (eval 'advent.version) .getPackage .getImplementationVersion))
+ (or version-override (-> (eval 'advent.version) .getPackage .getImplementationVersion)))
diff --git a/desktop/src-common/advent/zone.clj b/desktop/src-common/advent/zone.clj
index f2ec071e..1284188a 100644
--- a/desktop/src-common/advent/zone.clj
+++ b/desktop/src-common/advent/zone.clj
@@ -1,7 +1,14 @@
(ns advent.zone)
+(defn within [x1 y1 x2 y2 x3 y3]
+ (and
+ (< x1 x3)
+ (< x3 x2)
+ (< y1 y3)
+ (< y3 y2)))
+
(defn box [x1 y1 x2 y2]
(fn [x y]
- (and
- (< x1 x x2)
- (< y1 y y2))))
+ (within x1 y1 x2 y2 x y)))
+
+
diff --git a/desktop/src-dev/advent/analyze.clj b/desktop/src-dev/advent/analyze.clj
index 817be8c7..d754778d 100644
--- a/desktop/src-dev/advent/analyze.clj
+++ b/desktop/src-dev/advent/analyze.clj
@@ -1,7 +1,7 @@
(ns advent.analyze
(:require [slam.hound.asplode :as a]
[clojure.java.io :as io]
- [clojure.pprint :as pprint]
+
[clojure.data.csv :as csv]
))
diff --git a/desktop/src/advent/core/desktop_launcher.clj b/desktop/src/advent/core/desktop_launcher.clj
index 38ec50f3..e1ef4081 100644
--- a/desktop/src/advent/core/desktop_launcher.clj
+++ b/desktop/src/advent/core/desktop_launcher.clj
@@ -35,6 +35,8 @@
(System/setProperty "org.lwjgl.opengl.Display.disableOSXFullscreenModeAPI" "true")
#_(System/setProperty "org.lwjgl.opengl.Window.undecorated", "true")
+
+ (log/info "Starting game")
(let [app (LwjglApplication. advent cfg)]
(when (utils/has-saved-settings?)
(utils/load-settings!))
diff --git a/ios/.gitignore b/ios/.gitignore
index 5eb45ce3..38c8d32f 100644
--- a/ios/.gitignore
+++ b/ios/.gitignore
@@ -1,3 +1,5 @@
target
checkouts
advent.core.IOSLauncher
+tickstales
+tmp
diff --git a/ios/Info.plist.xml b/ios/Info.plist.xml
index 473b57e2..645efe3f 100644
--- a/ios/Info.plist.xml
+++ b/ios/Info.plist.xml
@@ -9,7 +9,7 @@
CFBundleExecutable
tickstales
CFBundleIdentifier
- com.brycecovertoperations.tickstales
+ com.digitalbouncehouse.tickstales
CFBundleInfoDictionaryVersion
6.0
CFBundleName
@@ -17,11 +17,13 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- ${app.version}
+ 2.0.6
CFBundleSignature
????
CFBundleVersion
- 1
+ 126
+ MinimumOSVersion
+ 8.0
LSRequiresIPhoneOS
UIDeviceFamily
@@ -29,10 +31,18 @@
1
2
- UIRequiredDeviceCapabilities
+ UILaunchImageSize
+ {320,568}
+ UILauunchImages
- armv7
+ Default
+ Default@2x
+ Default-568h
+ Default-568h@2x
+ Default-Portrait~ipad
+ UIRequiresFullScreen
+
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
@@ -52,10 +62,14 @@
CFBundleIconFiles
+ iTunesArtwork
Icon
- Icon-72
+ Icon-60
+ Icon-76
+ Icon-83.5
+ ITSAppUsesNonExemptEncryption
diff --git a/ios/data/big.png b/ios/data/big.png
new file mode 100644
index 00000000..ff03917c
Binary files /dev/null and b/ios/data/big.png differ
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 4a1f6ce7..92c61bef 100644
--- a/ios/project.clj
+++ b/ios/project.clj
@@ -1,24 +1,23 @@
-(defproject advent "0.0.1-SNAPSHOT"
+(defproject advent "advent-2.0.4"
:description "FIXME: write description"
- :dependencies [[com.badlogicgames.gdx/gdx "1.5.3"]
- [com.badlogicgames.gdx/gdx-backend-robovm "1.5.3"]
- [org.clojure/data.priority-map "0.0.5"]
- [org.clojure/core.async "0.1.346.0-17112a-alpha"]
- [org.clojure/clojure "1.6.0"]
- [org.robovm/robovm-cocoatouch "1.7.0"]
- [org.robovm/robovm-objc "1.7.0"]
- [org.robovm/robovm-rt "1.7.0"]
- [play-clj "0.4.5-BRYCE"]]
+ :dependencies [[com.badlogicgames.gdx/gdx "1.9.4"]
+ [com.badlogicgames.gdx/gdx-backend-robovm "1.9.4"]
+ [org.clojure/core.async "0.2.385"]
+ [org.clojars.notid/tools.logging "0.3.2-SNAPSHOT"]
+ [log4j/log4j "1.2.16"]
+ [org.clojure/clojure "1.8.0"]
+ [com.mobidevelop.robovm/robovm-cocoatouch "2.3.0"]
+ [com.mobidevelop.robovm/robovm-rt "2.3.0"]
+ [play-clj "0.4.6-BRYCE" :exclusions [com.badlogicgames.gdx/gdx-box2d com.badlogicgames.gdx/gdx-bullet]]]
:source-paths ["src/clojure" "../desktop/src-common"]
:java-source-paths ["src/java"]
- :plugins [[lein-fruit "0.2.4-SNAPSHOT"]]
+ :plugins [[lein-fruit "0.2.4-SNAPSHOT"]
+ [org.skummet/lein-skummet "0.2.2"]
+ ]
:javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
- :ios {:robovm-opts ["-forcelinkclasses" "advent.**:clojure.**:com.badlogic.**:play_clj.**"
- "-libs" "libs/libObjectAL.a:libs/libgdx.a"
- "-frameworks" "UIKit:OpenGLES:QuartzCore:CoreGraphics:OpenAL:AudioToolbox:AVFoundation"
- "-resources" "../desktop/resources/**"
- ]
- :robovm-path "/Users/brycecovert/dev/robovm/robovm-1.7.0/"
- :versionn 1.1}
+ :jvm-opts ["-Dno-steam=true" "-Dclojure.compiler.direct-linking=true" "-Dclojure.compiler.elide-meta=[:doc :file :line :added]"]
+ :ios {:robovm-opts ["-config" "robovm.xml"]
+ :robovm-path "/Users/brycecovert/.robovm-sdks/robovm-2.3.0"
+ :version 2.1}
:aot :all
:main advent.core.IOSLauncher)
diff --git a/ios/resources/Default-568h.png b/ios/resources/Default-568h.png
new file mode 100644
index 00000000..73dbb3f5
Binary files /dev/null and b/ios/resources/Default-568h.png differ
diff --git a/ios/resources/Default-568h@2x.png b/ios/resources/Default-568h@2x.png
new file mode 100644
index 00000000..0d0bc69d
Binary files /dev/null and b/ios/resources/Default-568h@2x.png differ
diff --git a/ios/resources/Default-Portrait~ipad.png b/ios/resources/Default-Portrait~ipad.png
new file mode 100644
index 00000000..801db0ec
Binary files /dev/null and b/ios/resources/Default-Portrait~ipad.png differ
diff --git a/ios/resources/Default.png b/ios/resources/Default.png
new file mode 100644
index 00000000..70d29c70
Binary files /dev/null and b/ios/resources/Default.png differ
diff --git a/ios/resources/Default@2x.png b/ios/resources/Default@2x.png
new file mode 100644
index 00000000..95ae978e
Binary files /dev/null and b/ios/resources/Default@2x.png differ
diff --git a/ios/resources/Icon-60.png b/ios/resources/Icon-60.png
new file mode 100644
index 00000000..29414814
Binary files /dev/null and b/ios/resources/Icon-60.png differ
diff --git a/ios/resources/Icon-60@2x.png b/ios/resources/Icon-60@2x.png
new file mode 100644
index 00000000..e354b152
Binary files /dev/null and b/ios/resources/Icon-60@2x.png differ
diff --git a/ios/resources/Icon-60@3x.png b/ios/resources/Icon-60@3x.png
new file mode 100644
index 00000000..9755537c
Binary files /dev/null and b/ios/resources/Icon-60@3x.png differ
diff --git a/ios/resources/Icon-76.png b/ios/resources/Icon-76.png
new file mode 100644
index 00000000..1c10a3b0
Binary files /dev/null and b/ios/resources/Icon-76.png differ
diff --git a/ios/resources/Icon-76@2x.png b/ios/resources/Icon-76@2x.png
new file mode 100644
index 00000000..c91a39b9
Binary files /dev/null and b/ios/resources/Icon-76@2x.png differ
diff --git a/ios/resources/Icon-83.5@2x.png b/ios/resources/Icon-83.5@2x.png
new file mode 100644
index 00000000..c973b9e2
Binary files /dev/null and b/ios/resources/Icon-83.5@2x.png differ
diff --git a/ios/resources/Icon.png b/ios/resources/Icon.png
new file mode 100644
index 00000000..83655ddc
Binary files /dev/null and b/ios/resources/Icon.png differ
diff --git a/ios/resources/Icon@2x.png b/ios/resources/Icon@2x.png
new file mode 100644
index 00000000..fc5c052f
Binary files /dev/null and b/ios/resources/Icon@2x.png differ
diff --git a/ios/resources/core/assets/robovm.ini b/ios/resources/core/assets/robovm.ini
new file mode 100644
index 00000000..ba74e7ae
--- /dev/null
+++ b/ios/resources/core/assets/robovm.ini
@@ -0,0 +1,2 @@
+ms256M
+EnableGCHeapStats
diff --git a/ios/resources/iTunesArtwork.png b/ios/resources/iTunesArtwork.png
new file mode 100644
index 00000000..e48636d0
Binary files /dev/null and b/ios/resources/iTunesArtwork.png differ
diff --git a/ios/resources/iTunesArtwork@2x.png b/ios/resources/iTunesArtwork@2x.png
new file mode 100644
index 00000000..7aa80c67
Binary files /dev/null and b/ios/resources/iTunesArtwork@2x.png differ
diff --git a/ios/robovm.xml b/ios/robovm.xml
new file mode 100644
index 00000000..a6dabfa0
--- /dev/null
+++ b/ios/robovm.xml
@@ -0,0 +1,102 @@
+
+ tickstales
+ advent.core.IOSLauncher
+ ios
+ arm64
+ ios
+ Info.plist.xml
+ aggressive
+
+
+ resources
+
+ **
+
+ true
+
+
+ ../desktop/resources
+
+ **
+
+
+ **/*.ogg
+ **/*.jar
+
+ true
+
+
+
+ advent.**
+ clojure.genclass*
+ clojure.gvec*
+ clojure.core*
+ clojure.core.memoize*
+ clojure.core.memoize.**
+ clojure.core.cache*
+ clojure.core.cache.**
+ clojure.edn*
+ clojure.core.server*
+ clojure.instant*
+ clojure.main*
+ clojure.reflect*
+ clojure.reflect.**
+ clojure.set*
+ clojure.stacktrace*
+ clojure.walk*
+ clojure.xml*
+ clojure.zip*
+ clojure.data*
+ clojure.uuid*
+ clojure.string*
+ clojure.core.protocols*
+ clojure.tools.reader*
+ clojure.tools.reader.**
+ clojure.tools.logging.**
+ clojure.tools.logging*
+ clojure.tools.analyzer*
+ clojure.tools.analyzer.**
+ clojure.pprint*
+ clojure.pprint.**
+ clojure.data.**
+ clojure.test*
+ clojure.test.**
+ clojure.template*
+ clojure.template.**
+ clojure.java.io*
+ play_clj.**
+ com.badlogic.**
+ java.util.logging.**
+ clojure.core.async*
+ clojure.core.async.Mutex*
+ clojure.core.async.ThreadLocalRandom*
+ clojure.core.async.impl.protocols*
+ clojure.core.async.impl.concurrent*
+ clojure.core.async.impl.channels*
+ clojure.core.async.impl.dispatch*
+ clojure.core.async.impl.exec.**
+ clojure.core.async.impl.exec*
+ clojure.core.async.impl.buffers*
+ clojure.core.async.impl.mutex*
+ clojure.core.async.impl.timers*
+ clojure.core.async.impl.ioc_macros*
+
+
+ libs/libObjectAL.a
+ libs/libgdx.a
+
+
+ **/*.class
+ **/*.jar
+ *.jar
+
+
+ UIKit
+ OpenGLES
+ QuartzCore
+ CoreGraphics
+ OpenAL
+ AudioToolbox
+ AVFoundation
+
+
diff --git a/ios/src/java/advent/core/IOSLauncher.java b/ios/src/java/advent/core/IOSLauncher.java
index e7d8b8e0..525bdeca 100644
--- a/ios/src/java/advent/core/IOSLauncher.java
+++ b/ios/src/java/advent/core/IOSLauncher.java
@@ -7,22 +7,30 @@ import com.badlogic.gdx.*;
import com.badlogic.gdx.backends.iosrobovm.*;
import org.robovm.apple.foundation.*;
-import org.robovm.apple.uikit.*;
+import org.robovm.apple.uikit.UIApplication;
import org.robovm.apple.glkit.GLKViewDrawableColorFormat;
import org.robovm.apple.glkit.GLKViewDrawableDepthFormat;
public class IOSLauncher extends IOSApplication.Delegate {
protected IOSApplication createApplication() {
IOSApplicationConfiguration config = new IOSApplicationConfiguration();
- config.colorFormat = GLKViewDrawableColorFormat.SRGBA8888;
- config.depthFormat = GLKViewDrawableDepthFormat._24;
+ // config.colorFormat = GLKViewDrawableColorFormat.SRGBA8888;
+ // config.depthFormat = GLKViewDrawableDepthFormat._24;
config.orientationPortrait = false;
config.orientationLandscape = true;
config.preferredFramesPerSecond = 30;
+ config.useAccelerometer=false;
+ config.useCompass=false;
+ System.out.println("application created.");
RT.var("clojure.core", "require").invoke(Symbol.intern("advent.core"));
+ System.out.println("clojure loaded");
try {
+ NSDictionary infoDictionary = NSBundle.getMainBundle().getInfoDictionary();
+ String version = infoDictionary.get(new NSString("CFBundleShortVersionString")).toString();
+ RT.var("advent.version", "version-override").bindRoot(version);
Game game = (Game) RT.var("advent.core", "advent").deref();
+ System.out.println("game loaded");
return new IOSApplication(game, config);
} catch (Exception e) {
e.printStackTrace();
@@ -35,4 +43,11 @@ public class IOSLauncher extends IOSApplication.Delegate {
UIApplication.main(argv, null, IOSLauncher.class);
pool.close();
}
+
+ @Override
+ public void didReceiveMemoryWarning(UIApplication application) {
+ for (int i = 0; i < 3; i++) {
+ System.gc();
+ }
+ }
}