diff --git a/SPD-classes/build.gradle b/SPD-classes/build.gradle
index d5bd17844..f1dbc5db3 100644
--- a/SPD-classes/build.gradle
+++ b/SPD-classes/build.gradle
@@ -1,3 +1,4 @@
+//FIXME currently an android library while small amounts of android-specific code remain
apply plugin: 'com.android.library'
android {
@@ -6,13 +7,6 @@ android {
defaultConfig {
//noinspection MinSdkTooLow
minSdkVersion appAndroidMinSDK
-
- consumerProguardFiles 'proguard-rules.pro'
- }
- sourceSets {
- main {
- jniLibs.srcDirs = ['libs']
- }
}
}
@@ -21,39 +15,7 @@ configurations { natives }
dependencies {
//TODO migrate this to implementation from api
//in order to do this I have to remove 100% of libGDX API access from core
+ api "com.badlogicgames.gdx:gdx:$gdxVersion"
api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
- natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
- natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
- natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
- natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
- natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
implementation "com.badlogicgames.gdx:gdx-controllers:$gdxVersion"
- implementation "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"
-}
-
-// called every time gradle gets executed, takes the native dependencies of
-// the natives configuration, and extracts them to the proper libs/ folders
-// so they get packed with the APK.
-task copyAndroidNatives() {
- file("libs/armeabi/").mkdirs()
- file("libs/armeabi-v7a/").mkdirs()
- file("libs/arm64-v8a/").mkdirs()
- file("libs/x86_64/").mkdirs()
- file("libs/x86/").mkdirs()
-
- configurations.natives.files.each { jar ->
- def outputDir = null
- if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
- if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
- if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
- if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
- if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
- if(outputDir != null) {
- copy {
- from zipTree(jar)
- into outputDir
- include "*.so"
- }
- }
- }
}
\ No newline at end of file
diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Game.java b/SPD-classes/src/main/java/com/watabou/noosa/Game.java
index 6134df1e7..77ecfdfe2 100644
--- a/SPD-classes/src/main/java/com/watabou/noosa/Game.java
+++ b/SPD-classes/src/main/java/com/watabou/noosa/Game.java
@@ -21,30 +21,24 @@
package com.watabou.noosa;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.opengl.GLSurfaceView;
-import android.os.Build;
-import android.os.Bundle;
import android.os.SystemClock;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.backends.android.AndroidApplication;
-import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.watabou.glscripts.Script;
import com.watabou.gltextures.TextureCache;
import com.watabou.glwrap.Blending;
import com.watabou.glwrap.Vertexbuffer;
import com.watabou.input.InputHandler;
import com.watabou.input.KeyEvent;
-import com.watabou.noosa.audio.Music;
+import com.watabou.utils.PlatformSupport;
import com.watabou.utils.SystemTime;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.util.ArrayList;
-public class Game extends AndroidApplication implements ApplicationListener {
+public class Game implements ApplicationListener {
public static Game instance;
@@ -85,62 +79,27 @@ public class Game extends AndroidApplication implements ApplicationListener {
protected GLSurfaceView view;
//protected SurfaceHolder holder;
- protected InputHandler inputHandler;
+ protected static InputHandler inputHandler;
- public Game( Class extends Scene> c ) {
- super();
+ protected static PlatformSupport platform;
+
+ public Game(Class extends Scene> c, PlatformSupport platform) {
sceneClass = c;
- }
-
- @Override
- protected void onCreate( Bundle savedInstanceState ) {
- super.onCreate( savedInstanceState );
instance = this;
-
- //FIXME this should be moved into a separate class, once we start to move to multiplatform
- try {
- version = getPackageManager().getPackageInfo( getPackageName(), 0 ).versionName;
- } catch (NameNotFoundException e) {
- version = "???";
- }
- try {
- versionCode = getPackageManager().getPackageInfo( getPackageName(), 0 ).versionCode;
- } catch (NameNotFoundException e) {
- versionCode = 0;
- }
-
- AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
- config.depth = 0;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- //use rgb888 on more modern devices for better visuals
- config.r = config.g = config.b = 8;
- } else {
- //and rgb565 (default) on older ones for better performance
- }
-
- config.useCompass = false;
- config.useAccelerometer = false;
- //TODO consider the following additional options, might be better than setting manually
- //config.hideStatusBar
- //config.useImmersiveMode
-
- initialize(this, config);
+ this.platform = platform;
+ }
+
+ /*@Override
+ protected void onCreate( Bundle savedInstanceState ) {
+ super.onCreate( savedInstanceState );
//FIXME shouldn't have a reference to the view here, remove things which access this
view = (GLSurfaceView)graphics.getView();
- inputHandler = new InputHandler();
- Gdx.input.setInputProcessor(inputHandler);
- Gdx.input.setCatchKey(KeyEvent.BACK, true);
- Gdx.input.setCatchKey(KeyEvent.MENU, true);
-
- //FIXME this doesn't seem to work quite right. That might not be due to LibGDX though.
- Music.setMuteListener();
-
//so first call to onstart/onresume calls correct logic.
- paused = true;
- }
+ //paused = true;
+ }*/
private boolean paused;
@@ -156,6 +115,11 @@ public class Game extends AndroidApplication implements ApplicationListener {
Blending.useDefault();
+ inputHandler = new InputHandler();
+ Gdx.input.setInputProcessor(inputHandler);
+ Gdx.input.setCatchKey(KeyEvent.BACK, true);
+ Gdx.input.setCatchKey(KeyEvent.MENU, true);
+
//refreshes texture and vertex data stored on the gpu
TextureCache.reload();
RenderedText.reloadCache();
@@ -219,6 +183,10 @@ public class Game extends AndroidApplication implements ApplicationListener {
//Sample.INSTANCE.resume();
}
+ public void finish(){
+ Gdx.app.exit();
+ }
+
@Override
public void dispose() {
destroyGame();
@@ -325,4 +293,5 @@ public class Game extends AndroidApplication implements ApplicationListener {
void beforeCreate();
void afterCreate();
}
+
}
diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Scene.java b/SPD-classes/src/main/java/com/watabou/noosa/Scene.java
index 7a2d00859..226e0787c 100644
--- a/SPD-classes/src/main/java/com/watabou/noosa/Scene.java
+++ b/SPD-classes/src/main/java/com/watabou/noosa/Scene.java
@@ -73,7 +73,7 @@ public class Scene extends Group {
}
protected void onBackPressed() {
- Gdx.app.exit();
+ Game.instance.finish();
}
protected void onMenuPressed() {
diff --git a/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java b/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java
index b48553c5a..d182a7ae8 100644
--- a/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java
+++ b/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java
@@ -21,13 +21,7 @@
package com.watabou.noosa.audio;
-import android.app.Activity;
-import android.os.Build;
-import android.telephony.PhoneStateListener;
-import android.telephony.TelephonyManager;
-
import com.badlogic.gdx.Gdx;
-import com.watabou.noosa.Game;
public enum Music {
@@ -114,29 +108,4 @@ public enum Music {
return enabled;
}
- //FIXME android-specific code, that is also broken by being part of this class.
- public static void setMuteListener(){
- //versions lower than this require READ_PHONE_STATE permission
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- TelephonyManager mgr =
- (TelephonyManager) Game.instance.getSystemService(Activity.TELEPHONY_SERVICE);
- mgr.listen(new PhoneStateListener(){
-
- @Override
- public void onCallStateChanged(int state, String incomingNumber)
- {
- if( state == TelephonyManager.CALL_STATE_RINGING ) {
- INSTANCE.pause();
-
- } else if( state == TelephonyManager.CALL_STATE_IDLE ) {
- if (!Game.instance.isPaused()) {
- INSTANCE.resume();
- }
- }
-
- super.onCallStateChanged(state, incomingNumber);
- }
- }, PhoneStateListener.LISTEN_CALL_STATE);
- }
- }
}
diff --git a/SPD-classes/src/main/java/com/watabou/utils/DeviceCompat.java b/SPD-classes/src/main/java/com/watabou/utils/DeviceCompat.java
index d4aba8540..db2d56f93 100644
--- a/SPD-classes/src/main/java/com/watabou/utils/DeviceCompat.java
+++ b/SPD-classes/src/main/java/com/watabou/utils/DeviceCompat.java
@@ -24,6 +24,7 @@ package com.watabou.utils;
import com.badlogic.gdx.Gdx;
import com.watabou.BuildConfig;
+//TODO migrate to platformSupport class
public class DeviceCompat {
public static boolean supportsFullScreen(){
diff --git a/SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java b/SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java
new file mode 100644
index 000000000..ae722a10a
--- /dev/null
+++ b/SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java
@@ -0,0 +1,30 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2019 Evan Debenham
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
+ */
+
+package com.watabou.utils;
+
+public abstract class PlatformSupport {
+
+ public abstract void updateDisplaySize();
+
+ public abstract void updateSystemUI();
+
+}
diff --git a/SPD-classes/.gitignore b/android/.gitignore
similarity index 100%
rename from SPD-classes/.gitignore
rename to android/.gitignore
diff --git a/android/build.gradle b/android/build.gradle
new file mode 100644
index 000000000..6fd715167
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,106 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2019 Evan Debenham
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
+ */
+
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion appAndroidCompileSDK
+
+ defaultConfig {
+ manifestPlaceholders = [appName:appName]
+ applicationId appPackageName
+
+ versionCode appVersionCode
+ versionName appVersionName
+
+ //noinspection MinSdkTooLow
+ minSdkVersion appAndroidMinSDK
+ targetSdkVersion appAndroidTargetSDK
+
+ resConfigs "en_US", "cs", "tr", "ca", "ko", "pl", "it",
+ "eo", "ru", "zh_CN", "de", "fr", "es", "pt", "fi", "hu", "in"
+ }
+
+ buildTypes {
+ debug {
+ applicationIdSuffix ".indev"
+ versionNameSuffix '-INDEV'
+ }
+ release {
+
+ //These lines enable R8, which is a code shrinker/optimizer/obfuscator.
+ //This makes release APKs smaller and more efficient, but also makes debugging trickier
+ //as the information produced in stack traces must be de-obfuscated.
+ //See here: https://developer.android.com/studio/build/shrink-code#decode-stack-trace
+ shrinkResources true
+ minifyEnabled true
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ sourceSets {
+ main {
+ jniLibs.srcDirs = ['libs']
+ }
+ }
+}
+
+configurations { natives }
+
+dependencies {
+ implementation project(':core')
+
+ implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
+ natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
+ natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
+ natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
+ natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
+ natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
+ implementation "com.badlogicgames.gdx:gdx-controllers:$gdxVersion"
+ implementation "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"
+}
+
+// called every time gradle gets executed, takes the native dependencies of
+// the natives configuration, and extracts them to the proper libs/ folders
+// so they get packed with the APK.
+task copyAndroidNatives() {
+ file("libs/armeabi/").mkdirs()
+ file("libs/armeabi-v7a/").mkdirs()
+ file("libs/arm64-v8a/").mkdirs()
+ file("libs/x86_64/").mkdirs()
+ file("libs/x86/").mkdirs()
+
+ configurations.natives.files.each { jar ->
+ def outputDir = null
+ if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
+ if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
+ if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
+ if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
+ if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
+ if(outputDir != null) {
+ copy {
+ from zipTree(jar)
+ into outputDir
+ include "*.so"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/SPD-classes/proguard-rules.pro b/android/proguard-rules.pro
similarity index 64%
rename from SPD-classes/proguard-rules.pro
rename to android/proguard-rules.pro
index 93b5492cd..081dc4338 100644
--- a/SPD-classes/proguard-rules.pro
+++ b/android/proguard-rules.pro
@@ -1,3 +1,12 @@
+# retain these to support class references for the bundling and translation systems
+-keepnames class com.shatteredpixel.** { *; }
+-keepnames class com.watabou.** { *; }
+
+# retained to support meaningful stack traces
+# note that the mapping file must be referenced in order to make sense of line numbers
+# mapping file can be found in core/build/outputs/mapping after running a release build
+-keepattributes SourceFile,LineNumberTable
+
-dontwarn android.support.**
-dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication
-dontwarn com.badlogic.gdx.utils.GdxBuild
diff --git a/core/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/android/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from core/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
rename to android/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/core/src/debug/res/mipmap-hdpi/ic_launcher.png b/android/src/debug/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from core/src/debug/res/mipmap-hdpi/ic_launcher.png
rename to android/src/debug/res/mipmap-hdpi/ic_launcher.png
diff --git a/core/src/debug/res/mipmap-hdpi/ic_launcher_background.png b/android/src/debug/res/mipmap-hdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/debug/res/mipmap-hdpi/ic_launcher_background.png
rename to android/src/debug/res/mipmap-hdpi/ic_launcher_background.png
diff --git a/core/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png b/android/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
rename to android/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
diff --git a/core/src/debug/res/mipmap-ldpi/ic_launcher.png b/android/src/debug/res/mipmap-ldpi/ic_launcher.png
similarity index 100%
rename from core/src/debug/res/mipmap-ldpi/ic_launcher.png
rename to android/src/debug/res/mipmap-ldpi/ic_launcher.png
diff --git a/core/src/debug/res/mipmap-mdpi/ic_launcher.png b/android/src/debug/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from core/src/debug/res/mipmap-mdpi/ic_launcher.png
rename to android/src/debug/res/mipmap-mdpi/ic_launcher.png
diff --git a/core/src/debug/res/mipmap-mdpi/ic_launcher_background.png b/android/src/debug/res/mipmap-mdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/debug/res/mipmap-mdpi/ic_launcher_background.png
rename to android/src/debug/res/mipmap-mdpi/ic_launcher_background.png
diff --git a/core/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png b/android/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
rename to android/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
diff --git a/core/src/debug/res/mipmap-xhdpi/ic_launcher.png b/android/src/debug/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from core/src/debug/res/mipmap-xhdpi/ic_launcher.png
rename to android/src/debug/res/mipmap-xhdpi/ic_launcher.png
diff --git a/core/src/debug/res/mipmap-xhdpi/ic_launcher_background.png b/android/src/debug/res/mipmap-xhdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/debug/res/mipmap-xhdpi/ic_launcher_background.png
rename to android/src/debug/res/mipmap-xhdpi/ic_launcher_background.png
diff --git a/core/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png
rename to android/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png
diff --git a/core/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/android/src/debug/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from core/src/debug/res/mipmap-xxhdpi/ic_launcher.png
rename to android/src/debug/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/core/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png b/android/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png
rename to android/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png
diff --git a/core/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png
rename to android/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png
diff --git a/core/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/android/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from core/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
rename to android/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/core/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png b/android/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png
rename to android/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png
diff --git a/core/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png
rename to android/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..372edef3f
--- /dev/null
+++ b/android/src/main/AndroidManifest.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/assets/amulet.png b/android/src/main/assets/amulet.png
similarity index 100%
rename from core/src/main/assets/amulet.png
rename to android/src/main/assets/amulet.png
diff --git a/core/src/main/assets/arcs1.png b/android/src/main/assets/arcs1.png
similarity index 100%
rename from core/src/main/assets/arcs1.png
rename to android/src/main/assets/arcs1.png
diff --git a/core/src/main/assets/arcs2.png b/android/src/main/assets/arcs2.png
similarity index 100%
rename from core/src/main/assets/arcs2.png
rename to android/src/main/assets/arcs2.png
diff --git a/core/src/main/assets/avatars.png b/android/src/main/assets/avatars.png
similarity index 100%
rename from core/src/main/assets/avatars.png
rename to android/src/main/assets/avatars.png
diff --git a/core/src/main/assets/badges.png b/android/src/main/assets/badges.png
similarity index 100%
rename from core/src/main/assets/badges.png
rename to android/src/main/assets/badges.png
diff --git a/core/src/main/assets/banners.png b/android/src/main/assets/banners.png
similarity index 100%
rename from core/src/main/assets/banners.png
rename to android/src/main/assets/banners.png
diff --git a/core/src/main/assets/bat.png b/android/src/main/assets/bat.png
similarity index 100%
rename from core/src/main/assets/bat.png
rename to android/src/main/assets/bat.png
diff --git a/core/src/main/assets/bee.png b/android/src/main/assets/bee.png
similarity index 100%
rename from core/src/main/assets/bee.png
rename to android/src/main/assets/bee.png
diff --git a/core/src/main/assets/blacksmith.png b/android/src/main/assets/blacksmith.png
similarity index 100%
rename from core/src/main/assets/blacksmith.png
rename to android/src/main/assets/blacksmith.png
diff --git a/core/src/main/assets/boss_hp.png b/android/src/main/assets/boss_hp.png
similarity index 100%
rename from core/src/main/assets/boss_hp.png
rename to android/src/main/assets/boss_hp.png
diff --git a/core/src/main/assets/brute.png b/android/src/main/assets/brute.png
similarity index 100%
rename from core/src/main/assets/brute.png
rename to android/src/main/assets/brute.png
diff --git a/core/src/main/assets/buffs.png b/android/src/main/assets/buffs.png
similarity index 100%
rename from core/src/main/assets/buffs.png
rename to android/src/main/assets/buffs.png
diff --git a/core/src/main/assets/burning_fist.png b/android/src/main/assets/burning_fist.png
similarity index 100%
rename from core/src/main/assets/burning_fist.png
rename to android/src/main/assets/burning_fist.png
diff --git a/core/src/main/assets/chrome.png b/android/src/main/assets/chrome.png
similarity index 100%
rename from core/src/main/assets/chrome.png
rename to android/src/main/assets/chrome.png
diff --git a/core/src/main/assets/consumable_icons.png b/android/src/main/assets/consumable_icons.png
similarity index 100%
rename from core/src/main/assets/consumable_icons.png
rename to android/src/main/assets/consumable_icons.png
diff --git a/core/src/main/assets/crab.png b/android/src/main/assets/crab.png
similarity index 100%
rename from core/src/main/assets/crab.png
rename to android/src/main/assets/crab.png
diff --git a/core/src/main/assets/custom_tiles/prison_exit.png b/android/src/main/assets/custom_tiles/prison_exit.png
similarity index 100%
rename from core/src/main/assets/custom_tiles/prison_exit.png
rename to android/src/main/assets/custom_tiles/prison_exit.png
diff --git a/core/src/main/assets/custom_tiles/prison_quests.png b/android/src/main/assets/custom_tiles/prison_quests.png
similarity index 100%
rename from core/src/main/assets/custom_tiles/prison_quests.png
rename to android/src/main/assets/custom_tiles/prison_quests.png
diff --git a/core/src/main/assets/custom_tiles/weak_floor.png b/android/src/main/assets/custom_tiles/weak_floor.png
similarity index 100%
rename from core/src/main/assets/custom_tiles/weak_floor.png
rename to android/src/main/assets/custom_tiles/weak_floor.png
diff --git a/core/src/main/assets/demon.png b/android/src/main/assets/demon.png
similarity index 100%
rename from core/src/main/assets/demon.png
rename to android/src/main/assets/demon.png
diff --git a/core/src/main/assets/dm300.png b/android/src/main/assets/dm300.png
similarity index 100%
rename from core/src/main/assets/dm300.png
rename to android/src/main/assets/dm300.png
diff --git a/core/src/main/assets/effects.png b/android/src/main/assets/effects.png
similarity index 100%
rename from core/src/main/assets/effects.png
rename to android/src/main/assets/effects.png
diff --git a/core/src/main/assets/elemental.png b/android/src/main/assets/elemental.png
similarity index 100%
rename from core/src/main/assets/elemental.png
rename to android/src/main/assets/elemental.png
diff --git a/core/src/main/assets/exp_bar.png b/android/src/main/assets/exp_bar.png
similarity index 100%
rename from core/src/main/assets/exp_bar.png
rename to android/src/main/assets/exp_bar.png
diff --git a/core/src/main/assets/eye.png b/android/src/main/assets/eye.png
similarity index 100%
rename from core/src/main/assets/eye.png
rename to android/src/main/assets/eye.png
diff --git a/core/src/main/assets/fireball.png b/android/src/main/assets/fireball.png
similarity index 100%
rename from core/src/main/assets/fireball.png
rename to android/src/main/assets/fireball.png
diff --git a/core/src/main/assets/font1x.png b/android/src/main/assets/font1x.png
similarity index 100%
rename from core/src/main/assets/font1x.png
rename to android/src/main/assets/font1x.png
diff --git a/core/src/main/assets/font2x.png b/android/src/main/assets/font2x.png
similarity index 100%
rename from core/src/main/assets/font2x.png
rename to android/src/main/assets/font2x.png
diff --git a/core/src/main/assets/game.ogg b/android/src/main/assets/game.ogg
similarity index 100%
rename from core/src/main/assets/game.ogg
rename to android/src/main/assets/game.ogg
diff --git a/core/src/main/assets/ghost.png b/android/src/main/assets/ghost.png
similarity index 100%
rename from core/src/main/assets/ghost.png
rename to android/src/main/assets/ghost.png
diff --git a/core/src/main/assets/gnoll.png b/android/src/main/assets/gnoll.png
similarity index 100%
rename from core/src/main/assets/gnoll.png
rename to android/src/main/assets/gnoll.png
diff --git a/core/src/main/assets/golem.png b/android/src/main/assets/golem.png
similarity index 100%
rename from core/src/main/assets/golem.png
rename to android/src/main/assets/golem.png
diff --git a/core/src/main/assets/goo.png b/android/src/main/assets/goo.png
similarity index 100%
rename from core/src/main/assets/goo.png
rename to android/src/main/assets/goo.png
diff --git a/core/src/main/assets/guard.png b/android/src/main/assets/guard.png
similarity index 100%
rename from core/src/main/assets/guard.png
rename to android/src/main/assets/guard.png
diff --git a/core/src/main/assets/guardian.png b/android/src/main/assets/guardian.png
similarity index 100%
rename from core/src/main/assets/guardian.png
rename to android/src/main/assets/guardian.png
diff --git a/core/src/main/assets/hp_bar.png b/android/src/main/assets/hp_bar.png
similarity index 100%
rename from core/src/main/assets/hp_bar.png
rename to android/src/main/assets/hp_bar.png
diff --git a/core/src/main/assets/huntress.png b/android/src/main/assets/huntress.png
similarity index 100%
rename from core/src/main/assets/huntress.png
rename to android/src/main/assets/huntress.png
diff --git a/core/src/main/assets/icons.png b/android/src/main/assets/icons.png
similarity index 100%
rename from core/src/main/assets/icons.png
rename to android/src/main/assets/icons.png
diff --git a/core/src/main/assets/items.png b/android/src/main/assets/items.png
similarity index 100%
rename from core/src/main/assets/items.png
rename to android/src/main/assets/items.png
diff --git a/core/src/main/assets/king.png b/android/src/main/assets/king.png
similarity index 100%
rename from core/src/main/assets/king.png
rename to android/src/main/assets/king.png
diff --git a/core/src/main/assets/large_buffs.png b/android/src/main/assets/large_buffs.png
similarity index 100%
rename from core/src/main/assets/large_buffs.png
rename to android/src/main/assets/large_buffs.png
diff --git a/core/src/main/assets/larva.png b/android/src/main/assets/larva.png
similarity index 100%
rename from core/src/main/assets/larva.png
rename to android/src/main/assets/larva.png
diff --git a/core/src/main/assets/loading_caves.png b/android/src/main/assets/loading_caves.png
similarity index 100%
rename from core/src/main/assets/loading_caves.png
rename to android/src/main/assets/loading_caves.png
diff --git a/core/src/main/assets/loading_city.png b/android/src/main/assets/loading_city.png
similarity index 100%
rename from core/src/main/assets/loading_city.png
rename to android/src/main/assets/loading_city.png
diff --git a/core/src/main/assets/loading_halls.png b/android/src/main/assets/loading_halls.png
similarity index 100%
rename from core/src/main/assets/loading_halls.png
rename to android/src/main/assets/loading_halls.png
diff --git a/core/src/main/assets/loading_prison.png b/android/src/main/assets/loading_prison.png
similarity index 100%
rename from core/src/main/assets/loading_prison.png
rename to android/src/main/assets/loading_prison.png
diff --git a/core/src/main/assets/loading_sewers.png b/android/src/main/assets/loading_sewers.png
similarity index 100%
rename from core/src/main/assets/loading_sewers.png
rename to android/src/main/assets/loading_sewers.png
diff --git a/core/src/main/assets/locked_badge.png b/android/src/main/assets/locked_badge.png
similarity index 100%
rename from core/src/main/assets/locked_badge.png
rename to android/src/main/assets/locked_badge.png
diff --git a/core/src/main/assets/mage.png b/android/src/main/assets/mage.png
similarity index 100%
rename from core/src/main/assets/mage.png
rename to android/src/main/assets/mage.png
diff --git a/core/src/main/assets/menu_button.png b/android/src/main/assets/menu_button.png
similarity index 100%
rename from core/src/main/assets/menu_button.png
rename to android/src/main/assets/menu_button.png
diff --git a/core/src/main/assets/mimic.png b/android/src/main/assets/mimic.png
similarity index 100%
rename from core/src/main/assets/mimic.png
rename to android/src/main/assets/mimic.png
diff --git a/core/src/main/assets/monk.png b/android/src/main/assets/monk.png
similarity index 100%
rename from core/src/main/assets/monk.png
rename to android/src/main/assets/monk.png
diff --git a/core/src/main/assets/pet.png b/android/src/main/assets/pet.png
similarity index 100%
rename from core/src/main/assets/pet.png
rename to android/src/main/assets/pet.png
diff --git a/core/src/main/assets/piranha.png b/android/src/main/assets/piranha.png
similarity index 100%
rename from core/src/main/assets/piranha.png
rename to android/src/main/assets/piranha.png
diff --git a/core/src/main/assets/pixel_font.png b/android/src/main/assets/pixel_font.png
similarity index 100%
rename from core/src/main/assets/pixel_font.png
rename to android/src/main/assets/pixel_font.png
diff --git a/core/src/main/assets/pixelfont.ttf b/android/src/main/assets/pixelfont.ttf
similarity index 100%
rename from core/src/main/assets/pixelfont.ttf
rename to android/src/main/assets/pixelfont.ttf
diff --git a/core/src/main/assets/rat.png b/android/src/main/assets/rat.png
similarity index 100%
rename from core/src/main/assets/rat.png
rename to android/src/main/assets/rat.png
diff --git a/core/src/main/assets/ratking.png b/android/src/main/assets/ratking.png
similarity index 100%
rename from core/src/main/assets/ratking.png
rename to android/src/main/assets/ratking.png
diff --git a/core/src/main/assets/rogue.png b/android/src/main/assets/rogue.png
similarity index 100%
rename from core/src/main/assets/rogue.png
rename to android/src/main/assets/rogue.png
diff --git a/core/src/main/assets/rot_heart.png b/android/src/main/assets/rot_heart.png
similarity index 100%
rename from core/src/main/assets/rot_heart.png
rename to android/src/main/assets/rot_heart.png
diff --git a/core/src/main/assets/rot_lasher.png b/android/src/main/assets/rot_lasher.png
similarity index 100%
rename from core/src/main/assets/rot_lasher.png
rename to android/src/main/assets/rot_lasher.png
diff --git a/core/src/main/assets/rotting_fist.png b/android/src/main/assets/rotting_fist.png
similarity index 100%
rename from core/src/main/assets/rotting_fist.png
rename to android/src/main/assets/rotting_fist.png
diff --git a/core/src/main/assets/scorpio.png b/android/src/main/assets/scorpio.png
similarity index 100%
rename from core/src/main/assets/scorpio.png
rename to android/src/main/assets/scorpio.png
diff --git a/core/src/main/assets/shadow.png b/android/src/main/assets/shadow.png
similarity index 100%
rename from core/src/main/assets/shadow.png
rename to android/src/main/assets/shadow.png
diff --git a/core/src/main/assets/shaman.png b/android/src/main/assets/shaman.png
similarity index 100%
rename from core/src/main/assets/shaman.png
rename to android/src/main/assets/shaman.png
diff --git a/core/src/main/assets/sheep.png b/android/src/main/assets/sheep.png
similarity index 100%
rename from core/src/main/assets/sheep.png
rename to android/src/main/assets/sheep.png
diff --git a/core/src/main/assets/shield_bar.png b/android/src/main/assets/shield_bar.png
similarity index 100%
rename from core/src/main/assets/shield_bar.png
rename to android/src/main/assets/shield_bar.png
diff --git a/core/src/main/assets/shopkeeper.png b/android/src/main/assets/shopkeeper.png
similarity index 100%
rename from core/src/main/assets/shopkeeper.png
rename to android/src/main/assets/shopkeeper.png
diff --git a/core/src/main/assets/skeleton.png b/android/src/main/assets/skeleton.png
similarity index 100%
rename from core/src/main/assets/skeleton.png
rename to android/src/main/assets/skeleton.png
diff --git a/core/src/main/assets/snd_alert.mp3 b/android/src/main/assets/snd_alert.mp3
similarity index 100%
rename from core/src/main/assets/snd_alert.mp3
rename to android/src/main/assets/snd_alert.mp3
diff --git a/core/src/main/assets/snd_badge.mp3 b/android/src/main/assets/snd_badge.mp3
similarity index 100%
rename from core/src/main/assets/snd_badge.mp3
rename to android/src/main/assets/snd_badge.mp3
diff --git a/core/src/main/assets/snd_beacon.mp3 b/android/src/main/assets/snd_beacon.mp3
similarity index 100%
rename from core/src/main/assets/snd_beacon.mp3
rename to android/src/main/assets/snd_beacon.mp3
diff --git a/core/src/main/assets/snd_bee.mp3 b/android/src/main/assets/snd_bee.mp3
similarity index 100%
rename from core/src/main/assets/snd_bee.mp3
rename to android/src/main/assets/snd_bee.mp3
diff --git a/core/src/main/assets/snd_blast.mp3 b/android/src/main/assets/snd_blast.mp3
similarity index 100%
rename from core/src/main/assets/snd_blast.mp3
rename to android/src/main/assets/snd_blast.mp3
diff --git a/core/src/main/assets/snd_bones.mp3 b/android/src/main/assets/snd_bones.mp3
similarity index 100%
rename from core/src/main/assets/snd_bones.mp3
rename to android/src/main/assets/snd_bones.mp3
diff --git a/core/src/main/assets/snd_boss.mp3 b/android/src/main/assets/snd_boss.mp3
similarity index 100%
rename from core/src/main/assets/snd_boss.mp3
rename to android/src/main/assets/snd_boss.mp3
diff --git a/core/src/main/assets/snd_burning.mp3 b/android/src/main/assets/snd_burning.mp3
similarity index 100%
rename from core/src/main/assets/snd_burning.mp3
rename to android/src/main/assets/snd_burning.mp3
diff --git a/core/src/main/assets/snd_challenge.mp3 b/android/src/main/assets/snd_challenge.mp3
similarity index 100%
rename from core/src/main/assets/snd_challenge.mp3
rename to android/src/main/assets/snd_challenge.mp3
diff --git a/core/src/main/assets/snd_charms.mp3 b/android/src/main/assets/snd_charms.mp3
similarity index 100%
rename from core/src/main/assets/snd_charms.mp3
rename to android/src/main/assets/snd_charms.mp3
diff --git a/core/src/main/assets/snd_click.mp3 b/android/src/main/assets/snd_click.mp3
similarity index 100%
rename from core/src/main/assets/snd_click.mp3
rename to android/src/main/assets/snd_click.mp3
diff --git a/core/src/main/assets/snd_cursed.mp3 b/android/src/main/assets/snd_cursed.mp3
similarity index 100%
rename from core/src/main/assets/snd_cursed.mp3
rename to android/src/main/assets/snd_cursed.mp3
diff --git a/core/src/main/assets/snd_death.mp3 b/android/src/main/assets/snd_death.mp3
similarity index 100%
rename from core/src/main/assets/snd_death.mp3
rename to android/src/main/assets/snd_death.mp3
diff --git a/core/src/main/assets/snd_degrade.mp3 b/android/src/main/assets/snd_degrade.mp3
similarity index 100%
rename from core/src/main/assets/snd_degrade.mp3
rename to android/src/main/assets/snd_degrade.mp3
diff --git a/core/src/main/assets/snd_descend.mp3 b/android/src/main/assets/snd_descend.mp3
similarity index 100%
rename from core/src/main/assets/snd_descend.mp3
rename to android/src/main/assets/snd_descend.mp3
diff --git a/core/src/main/assets/snd_dewdrop.mp3 b/android/src/main/assets/snd_dewdrop.mp3
similarity index 100%
rename from core/src/main/assets/snd_dewdrop.mp3
rename to android/src/main/assets/snd_dewdrop.mp3
diff --git a/core/src/main/assets/snd_door_open.mp3 b/android/src/main/assets/snd_door_open.mp3
similarity index 100%
rename from core/src/main/assets/snd_door_open.mp3
rename to android/src/main/assets/snd_door_open.mp3
diff --git a/core/src/main/assets/snd_drink.mp3 b/android/src/main/assets/snd_drink.mp3
similarity index 100%
rename from core/src/main/assets/snd_drink.mp3
rename to android/src/main/assets/snd_drink.mp3
diff --git a/core/src/main/assets/snd_eat.mp3 b/android/src/main/assets/snd_eat.mp3
similarity index 100%
rename from core/src/main/assets/snd_eat.mp3
rename to android/src/main/assets/snd_eat.mp3
diff --git a/core/src/main/assets/snd_evoke.mp3 b/android/src/main/assets/snd_evoke.mp3
similarity index 100%
rename from core/src/main/assets/snd_evoke.mp3
rename to android/src/main/assets/snd_evoke.mp3
diff --git a/core/src/main/assets/snd_falling.mp3 b/android/src/main/assets/snd_falling.mp3
similarity index 100%
rename from core/src/main/assets/snd_falling.mp3
rename to android/src/main/assets/snd_falling.mp3
diff --git a/core/src/main/assets/snd_ghost.mp3 b/android/src/main/assets/snd_ghost.mp3
similarity index 100%
rename from core/src/main/assets/snd_ghost.mp3
rename to android/src/main/assets/snd_ghost.mp3
diff --git a/core/src/main/assets/snd_gold.mp3 b/android/src/main/assets/snd_gold.mp3
similarity index 100%
rename from core/src/main/assets/snd_gold.mp3
rename to android/src/main/assets/snd_gold.mp3
diff --git a/core/src/main/assets/snd_hit.mp3 b/android/src/main/assets/snd_hit.mp3
similarity index 100%
rename from core/src/main/assets/snd_hit.mp3
rename to android/src/main/assets/snd_hit.mp3
diff --git a/core/src/main/assets/snd_item.mp3 b/android/src/main/assets/snd_item.mp3
similarity index 100%
rename from core/src/main/assets/snd_item.mp3
rename to android/src/main/assets/snd_item.mp3
diff --git a/core/src/main/assets/snd_levelup.mp3 b/android/src/main/assets/snd_levelup.mp3
similarity index 100%
rename from core/src/main/assets/snd_levelup.mp3
rename to android/src/main/assets/snd_levelup.mp3
diff --git a/core/src/main/assets/snd_lightning.mp3 b/android/src/main/assets/snd_lightning.mp3
similarity index 100%
rename from core/src/main/assets/snd_lightning.mp3
rename to android/src/main/assets/snd_lightning.mp3
diff --git a/core/src/main/assets/snd_lullaby.mp3 b/android/src/main/assets/snd_lullaby.mp3
similarity index 100%
rename from core/src/main/assets/snd_lullaby.mp3
rename to android/src/main/assets/snd_lullaby.mp3
diff --git a/core/src/main/assets/snd_mastery.mp3 b/android/src/main/assets/snd_mastery.mp3
similarity index 100%
rename from core/src/main/assets/snd_mastery.mp3
rename to android/src/main/assets/snd_mastery.mp3
diff --git a/core/src/main/assets/snd_meld.mp3 b/android/src/main/assets/snd_meld.mp3
similarity index 100%
rename from core/src/main/assets/snd_meld.mp3
rename to android/src/main/assets/snd_meld.mp3
diff --git a/core/src/main/assets/snd_mimic.mp3 b/android/src/main/assets/snd_mimic.mp3
similarity index 100%
rename from core/src/main/assets/snd_mimic.mp3
rename to android/src/main/assets/snd_mimic.mp3
diff --git a/core/src/main/assets/snd_miss.mp3 b/android/src/main/assets/snd_miss.mp3
similarity index 100%
rename from core/src/main/assets/snd_miss.mp3
rename to android/src/main/assets/snd_miss.mp3
diff --git a/core/src/main/assets/snd_plant.mp3 b/android/src/main/assets/snd_plant.mp3
similarity index 100%
rename from core/src/main/assets/snd_plant.mp3
rename to android/src/main/assets/snd_plant.mp3
diff --git a/core/src/main/assets/snd_puff.mp3 b/android/src/main/assets/snd_puff.mp3
similarity index 100%
rename from core/src/main/assets/snd_puff.mp3
rename to android/src/main/assets/snd_puff.mp3
diff --git a/core/src/main/assets/snd_ray.mp3 b/android/src/main/assets/snd_ray.mp3
similarity index 100%
rename from core/src/main/assets/snd_ray.mp3
rename to android/src/main/assets/snd_ray.mp3
diff --git a/core/src/main/assets/snd_read.mp3 b/android/src/main/assets/snd_read.mp3
similarity index 100%
rename from core/src/main/assets/snd_read.mp3
rename to android/src/main/assets/snd_read.mp3
diff --git a/core/src/main/assets/snd_rocks.mp3 b/android/src/main/assets/snd_rocks.mp3
similarity index 100%
rename from core/src/main/assets/snd_rocks.mp3
rename to android/src/main/assets/snd_rocks.mp3
diff --git a/core/src/main/assets/snd_secret.mp3 b/android/src/main/assets/snd_secret.mp3
similarity index 100%
rename from core/src/main/assets/snd_secret.mp3
rename to android/src/main/assets/snd_secret.mp3
diff --git a/core/src/main/assets/snd_shatter.mp3 b/android/src/main/assets/snd_shatter.mp3
similarity index 100%
rename from core/src/main/assets/snd_shatter.mp3
rename to android/src/main/assets/snd_shatter.mp3
diff --git a/core/src/main/assets/snd_step.mp3 b/android/src/main/assets/snd_step.mp3
similarity index 100%
rename from core/src/main/assets/snd_step.mp3
rename to android/src/main/assets/snd_step.mp3
diff --git a/core/src/main/assets/snd_teleport.mp3 b/android/src/main/assets/snd_teleport.mp3
similarity index 100%
rename from core/src/main/assets/snd_teleport.mp3
rename to android/src/main/assets/snd_teleport.mp3
diff --git a/core/src/main/assets/snd_tomb.mp3 b/android/src/main/assets/snd_tomb.mp3
similarity index 100%
rename from core/src/main/assets/snd_tomb.mp3
rename to android/src/main/assets/snd_tomb.mp3
diff --git a/core/src/main/assets/snd_trap.mp3 b/android/src/main/assets/snd_trap.mp3
similarity index 100%
rename from core/src/main/assets/snd_trap.mp3
rename to android/src/main/assets/snd_trap.mp3
diff --git a/core/src/main/assets/snd_unlock.mp3 b/android/src/main/assets/snd_unlock.mp3
similarity index 100%
rename from core/src/main/assets/snd_unlock.mp3
rename to android/src/main/assets/snd_unlock.mp3
diff --git a/core/src/main/assets/snd_water.mp3 b/android/src/main/assets/snd_water.mp3
similarity index 100%
rename from core/src/main/assets/snd_water.mp3
rename to android/src/main/assets/snd_water.mp3
diff --git a/core/src/main/assets/snd_zap.mp3 b/android/src/main/assets/snd_zap.mp3
similarity index 100%
rename from core/src/main/assets/snd_zap.mp3
rename to android/src/main/assets/snd_zap.mp3
diff --git a/core/src/main/assets/specks.png b/android/src/main/assets/specks.png
similarity index 100%
rename from core/src/main/assets/specks.png
rename to android/src/main/assets/specks.png
diff --git a/core/src/main/assets/spell_icons.png b/android/src/main/assets/spell_icons.png
similarity index 100%
rename from core/src/main/assets/spell_icons.png
rename to android/src/main/assets/spell_icons.png
diff --git a/core/src/main/assets/spinner.png b/android/src/main/assets/spinner.png
similarity index 100%
rename from core/src/main/assets/spinner.png
rename to android/src/main/assets/spinner.png
diff --git a/core/src/main/assets/statue.png b/android/src/main/assets/statue.png
similarity index 100%
rename from core/src/main/assets/statue.png
rename to android/src/main/assets/statue.png
diff --git a/core/src/main/assets/status_pane.png b/android/src/main/assets/status_pane.png
similarity index 100%
rename from core/src/main/assets/status_pane.png
rename to android/src/main/assets/status_pane.png
diff --git a/core/src/main/assets/succubus.png b/android/src/main/assets/succubus.png
similarity index 100%
rename from core/src/main/assets/succubus.png
rename to android/src/main/assets/succubus.png
diff --git a/core/src/main/assets/surface.ogg b/android/src/main/assets/surface.ogg
similarity index 100%
rename from core/src/main/assets/surface.ogg
rename to android/src/main/assets/surface.ogg
diff --git a/core/src/main/assets/surface.png b/android/src/main/assets/surface.png
similarity index 100%
rename from core/src/main/assets/surface.png
rename to android/src/main/assets/surface.png
diff --git a/core/src/main/assets/swarm.png b/android/src/main/assets/swarm.png
similarity index 100%
rename from core/src/main/assets/swarm.png
rename to android/src/main/assets/swarm.png
diff --git a/core/src/main/assets/tengu.png b/android/src/main/assets/tengu.png
similarity index 100%
rename from core/src/main/assets/tengu.png
rename to android/src/main/assets/tengu.png
diff --git a/core/src/main/assets/terrain_features.png b/android/src/main/assets/terrain_features.png
similarity index 100%
rename from core/src/main/assets/terrain_features.png
rename to android/src/main/assets/terrain_features.png
diff --git a/core/src/main/assets/theme.ogg b/android/src/main/assets/theme.ogg
similarity index 100%
rename from core/src/main/assets/theme.ogg
rename to android/src/main/assets/theme.ogg
diff --git a/core/src/main/assets/thief.png b/android/src/main/assets/thief.png
similarity index 100%
rename from core/src/main/assets/thief.png
rename to android/src/main/assets/thief.png
diff --git a/core/src/main/assets/tiles_caves.png b/android/src/main/assets/tiles_caves.png
similarity index 100%
rename from core/src/main/assets/tiles_caves.png
rename to android/src/main/assets/tiles_caves.png
diff --git a/core/src/main/assets/tiles_city.png b/android/src/main/assets/tiles_city.png
similarity index 100%
rename from core/src/main/assets/tiles_city.png
rename to android/src/main/assets/tiles_city.png
diff --git a/core/src/main/assets/tiles_halls.png b/android/src/main/assets/tiles_halls.png
similarity index 100%
rename from core/src/main/assets/tiles_halls.png
rename to android/src/main/assets/tiles_halls.png
diff --git a/core/src/main/assets/tiles_prison.png b/android/src/main/assets/tiles_prison.png
similarity index 100%
rename from core/src/main/assets/tiles_prison.png
rename to android/src/main/assets/tiles_prison.png
diff --git a/core/src/main/assets/tiles_sewers.png b/android/src/main/assets/tiles_sewers.png
similarity index 100%
rename from core/src/main/assets/tiles_sewers.png
rename to android/src/main/assets/tiles_sewers.png
diff --git a/core/src/main/assets/toolbar.png b/android/src/main/assets/toolbar.png
similarity index 100%
rename from core/src/main/assets/toolbar.png
rename to android/src/main/assets/toolbar.png
diff --git a/core/src/main/assets/undead.png b/android/src/main/assets/undead.png
similarity index 100%
rename from core/src/main/assets/undead.png
rename to android/src/main/assets/undead.png
diff --git a/core/src/main/assets/visual_grid.png b/android/src/main/assets/visual_grid.png
similarity index 100%
rename from core/src/main/assets/visual_grid.png
rename to android/src/main/assets/visual_grid.png
diff --git a/core/src/main/assets/wall_blocking.png b/android/src/main/assets/wall_blocking.png
similarity index 100%
rename from core/src/main/assets/wall_blocking.png
rename to android/src/main/assets/wall_blocking.png
diff --git a/core/src/main/assets/wandmaker.png b/android/src/main/assets/wandmaker.png
similarity index 100%
rename from core/src/main/assets/wandmaker.png
rename to android/src/main/assets/wandmaker.png
diff --git a/core/src/main/assets/wards.png b/android/src/main/assets/wards.png
similarity index 100%
rename from core/src/main/assets/wards.png
rename to android/src/main/assets/wards.png
diff --git a/core/src/main/assets/warlock.png b/android/src/main/assets/warlock.png
similarity index 100%
rename from core/src/main/assets/warlock.png
rename to android/src/main/assets/warlock.png
diff --git a/core/src/main/assets/warrior.png b/android/src/main/assets/warrior.png
similarity index 100%
rename from core/src/main/assets/warrior.png
rename to android/src/main/assets/warrior.png
diff --git a/core/src/main/assets/water0.png b/android/src/main/assets/water0.png
similarity index 100%
rename from core/src/main/assets/water0.png
rename to android/src/main/assets/water0.png
diff --git a/core/src/main/assets/water1.png b/android/src/main/assets/water1.png
similarity index 100%
rename from core/src/main/assets/water1.png
rename to android/src/main/assets/water1.png
diff --git a/core/src/main/assets/water2.png b/android/src/main/assets/water2.png
similarity index 100%
rename from core/src/main/assets/water2.png
rename to android/src/main/assets/water2.png
diff --git a/core/src/main/assets/water3.png b/android/src/main/assets/water3.png
similarity index 100%
rename from core/src/main/assets/water3.png
rename to android/src/main/assets/water3.png
diff --git a/core/src/main/assets/water4.png b/android/src/main/assets/water4.png
similarity index 100%
rename from core/src/main/assets/water4.png
rename to android/src/main/assets/water4.png
diff --git a/core/src/main/assets/wraith.png b/android/src/main/assets/wraith.png
similarity index 100%
rename from core/src/main/assets/wraith.png
rename to android/src/main/assets/wraith.png
diff --git a/core/src/main/assets/yog.png b/android/src/main/assets/yog.png
similarity index 100%
rename from core/src/main/assets/yog.png
rename to android/src/main/assets/yog.png
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BackupHandler.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidBackupHandler.java
similarity index 88%
rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BackupHandler.java
rename to android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidBackupHandler.java
index 390a927b7..43a267c32 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BackupHandler.java
+++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidBackupHandler.java
@@ -19,7 +19,7 @@
* along with this program. If not, see
*/
-package com.shatteredpixel.shatteredpixeldungeon;
+package com.shatteredpixel.shatteredpixeldungeon.android;
import android.annotation.TargetApi;
import android.app.backup.BackupAgent;
@@ -28,13 +28,16 @@ import android.app.backup.BackupDataOutput;
import android.app.backup.FullBackupDataOutput;
import android.os.ParcelFileDescriptor;
+import com.shatteredpixel.shatteredpixeldungeon.Badges;
+import com.shatteredpixel.shatteredpixeldungeon.Rankings;
+import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.journal.Journal;
import com.watabou.utils.FileUtils;
import java.io.File;
//a handler for android backup requests
-public class BackupHandler extends BackupAgent {
+public class AndroidBackupHandler extends BackupAgent {
//Both of these do nothing. This handler is here to support use of android 4.0+ ADB backup
//and android 6.0+ auto-backup. It does not support android 2.2+ key-value backup
diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java
new file mode 100644
index 000000000..cdf2486c9
--- /dev/null
+++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java
@@ -0,0 +1,112 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2019 Evan Debenham
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
+ */
+
+package com.shatteredpixel.shatteredpixeldungeon.android;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.opengl.GLSurfaceView;
+import android.os.Build;
+import android.os.Bundle;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
+import android.view.View;
+import android.view.WindowManager;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.backends.android.AndroidApplication;
+import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
+import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
+import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
+import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
+import com.watabou.noosa.Game;
+import com.watabou.noosa.audio.Music;
+import com.watabou.utils.DeviceCompat;
+
+public class AndroidLauncher extends AndroidApplication {
+
+ public static AndroidApplication instance;
+ protected static GLSurfaceView view;
+
+ @Override
+ protected void onCreate (Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ instance = this;
+
+ try {
+ Game.version = getPackageManager().getPackageInfo( getPackageName(), 0 ).versionName;
+ } catch (PackageManager.NameNotFoundException e) {
+ Game.version = "???";
+ }
+ try {
+ Game.versionCode = getPackageManager().getPackageInfo( getPackageName(), 0 ).versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ Game.versionCode = 0;
+ }
+
+ AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
+ config.depth = 0;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ //use rgb888 on more modern devices for better visuals
+ config.r = config.g = config.b = 8;
+ } else {
+ //and rgb565 (default) on older ones for better performance
+ }
+
+ config.useCompass = false;
+ config.useAccelerometer = false;
+ //TODO consider the following additional options, might be better than setting manually
+ //config.hideStatusBar
+ //config.useImmersiveMode
+
+ initialize(new ShatteredPixelDungeon( new AndroidPlatformSupport() ), config);
+
+ view = (GLSurfaceView)graphics.getView();
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ TelephonyManager mgr =
+ (TelephonyManager) instance.getSystemService(Activity.TELEPHONY_SERVICE);
+ mgr.listen(new PhoneStateListener(){
+
+ @Override
+ public void onCallStateChanged(int state, String incomingNumber)
+ {
+ if( state == TelephonyManager.CALL_STATE_RINGING ) {
+ Music.INSTANCE.pause();
+
+ } else if( state == TelephonyManager.CALL_STATE_IDLE ) {
+ if (!Game.instance.isPaused()) {
+ Music.INSTANCE.resume();
+ }
+ }
+
+ super.onCallStateChanged(state, incomingNumber);
+ }
+ }, PhoneStateListener.LISTEN_CALL_STATE);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java
new file mode 100644
index 000000000..a9dee7994
--- /dev/null
+++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java
@@ -0,0 +1,135 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2019 Evan Debenham
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
+ */
+
+package com.shatteredpixel.shatteredpixeldungeon.android;
+
+import android.annotation.SuppressLint;
+import android.content.pm.ActivityInfo;
+import android.os.Build;
+import android.view.View;
+import android.view.WindowManager;
+
+import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
+import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
+import com.watabou.noosa.Game;
+import com.watabou.utils.DeviceCompat;
+import com.watabou.utils.PlatformSupport;
+
+public class AndroidPlatformSupport extends PlatformSupport {
+
+ public void updateDisplaySize(){
+ boolean landscape = SPDSettings.landscape();
+
+ AndroidLauncher.instance.setRequestedOrientation(landscape ?
+ ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE :
+ ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
+
+ if (AndroidLauncher.view.getMeasuredWidth() == 0 || AndroidLauncher.view.getMeasuredHeight() == 0)
+ return;
+
+ Game.dispWidth = AndroidLauncher.view.getMeasuredWidth();
+ Game.dispHeight = AndroidLauncher.view.getMeasuredHeight();
+
+ if ((Game.dispWidth > Game.dispHeight) != landscape){
+ int tmp = Game.dispWidth;
+ Game.dispWidth = Game.dispHeight;
+ Game.dispHeight = tmp;
+ }
+
+ float dispRatio = Game.dispWidth / (float)Game.dispHeight;
+
+ float renderWidth = dispRatio > 1 ? PixelScene.MIN_WIDTH_L : PixelScene.MIN_WIDTH_P;
+ float renderHeight = dispRatio > 1 ? PixelScene.MIN_HEIGHT_L : PixelScene.MIN_HEIGHT_P;
+
+ //force power saver in this case as all devices must run at at least 2x scale.
+ if (Game.dispWidth < renderWidth*2 || Game.dispHeight < renderHeight*2)
+ SPDSettings.put( SPDSettings.KEY_POWER_SAVER, true );
+
+ if (SPDSettings.powerSaver()){
+
+ int maxZoom = (int)Math.min(Game.dispWidth/renderWidth, Game.dispHeight/renderHeight);
+
+ renderWidth *= Math.max( 2, Math.round(1f + maxZoom*0.4f));
+ renderHeight *= Math.max( 2, Math.round(1f + maxZoom*0.4f));
+
+ if (dispRatio > renderWidth / renderHeight){
+ renderWidth = renderHeight * dispRatio;
+ } else {
+ renderHeight = renderWidth / dispRatio;
+ }
+
+ final int finalW = Math.round(renderWidth);
+ final int finalH = Math.round(renderHeight);
+ if (finalW != Game.width || finalH != Game.height){
+
+ AndroidLauncher.instance.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ AndroidLauncher.view.getHolder().setFixedSize(finalW, finalH);
+ }
+ });
+
+ }
+ } else {
+ AndroidLauncher.instance.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ AndroidLauncher.view.getHolder().setSizeFromLayout();
+ }
+ });
+ }
+ }
+
+ public void updateSystemUI() {
+
+ AndroidLauncher.instance.runOnUiThread(new Runnable() {
+ @SuppressLint("NewApi")
+ @Override
+ public void run() {
+ boolean fullscreen = Build.VERSION.SDK_INT < Build.VERSION_CODES.N
+ || !AndroidLauncher.instance.isInMultiWindowMode();
+
+ if (fullscreen){
+ AndroidLauncher.instance.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ } else {
+ AndroidLauncher.instance.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ }
+
+ if (DeviceCompat.supportsFullScreen()){
+ if (SPDSettings.fullscreen()) {
+ AndroidLauncher.instance.getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
+ View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );
+ } else {
+ AndroidLauncher.instance.getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_LAYOUT_STABLE );
+ }
+ }
+ }
+ });
+
+ }
+
+}
diff --git a/core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher.png b/android/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from core/src/main/res/mipmap-hdpi/ic_launcher.png
rename to android/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_background.png b/android/src/main/res/mipmap-hdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/main/res/mipmap-hdpi/ic_launcher_background.png
rename to android/src/main/res/mipmap-hdpi/ic_launcher_background.png
diff --git a/core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
rename to android/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
diff --git a/core/src/main/res/mipmap-ldpi/ic_launcher.png b/android/src/main/res/mipmap-ldpi/ic_launcher.png
similarity index 100%
rename from core/src/main/res/mipmap-ldpi/ic_launcher.png
rename to android/src/main/res/mipmap-ldpi/ic_launcher.png
diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher.png b/android/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from core/src/main/res/mipmap-mdpi/ic_launcher.png
rename to android/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_background.png b/android/src/main/res/mipmap-mdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/main/res/mipmap-mdpi/ic_launcher_background.png
rename to android/src/main/res/mipmap-mdpi/ic_launcher_background.png
diff --git a/core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
rename to android/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from core/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to android/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/android/src/main/res/mipmap-xhdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/main/res/mipmap-xhdpi/ic_launcher_background.png
rename to android/src/main/res/mipmap-xhdpi/ic_launcher_background.png
diff --git a/core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
rename to android/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from core/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to android/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/android/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
rename to android/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
diff --git a/core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
rename to android/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from core/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to android/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/android/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
similarity index 100%
rename from core/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
rename to android/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
diff --git a/core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from core/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
rename to android/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
diff --git a/core/build.gradle b/core/build.gradle
index 93b81da5b..a0c4520b5 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -1,41 +1,15 @@
-apply plugin: 'com.android.application'
+//FIXME currently an android library while small amounts of android-specific code remain in SPD-classes
+apply plugin: 'com.android.library'
android {
compileSdkVersion appAndroidCompileSDK
defaultConfig {
- manifestPlaceholders = [appName:appName]
- applicationId appPackageName
-
- versionCode appVersionCode
- versionName appVersionName
-
//noinspection MinSdkTooLow
minSdkVersion appAndroidMinSDK
- targetSdkVersion appAndroidTargetSDK
-
- resConfigs "en_US", "cs", "tr", "ca", "ko", "pl", "it",
- "eo", "ru", "zh_CN", "de", "fr", "es", "pt", "fi", "hu", "in"
- }
-
- buildTypes {
- debug {
- applicationIdSuffix ".indev"
- versionNameSuffix '-INDEV'
- }
- release {
-
- //These lines enable R8, which is a code shrinker/optimizer/obfuscator.
- //This makes release APKs smaller and more efficient, but also makes debugging trickier
- //as the information produced in stack traces must be de-obfuscated.
- //See here: https://developer.android.com/studio/build/shrink-code#decode-stack-trace
- shrinkResources true
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
}
}
dependencies {
- implementation project(':SPD-classes')
+ api project(':SPD-classes')
}
diff --git a/core/proguard-rules.pro b/core/proguard-rules.pro
deleted file mode 100644
index ff58f8252..000000000
--- a/core/proguard-rules.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-# retain these to support class references for the bundling and translation systems
--keepnames class com.shatteredpixel.** { *; }
--keepnames class com.watabou.** { *; }
-
-# retained to support meaningful stack traces
-# note that the mapping file must be referenced in order to make sense of line numbers
-# mapping file can be found in core/build/outputs/mapping after running a release build
--keepattributes SourceFile,LineNumberTable
\ No newline at end of file
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml
index 22aca3a79..075b395ca 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/core/src/main/AndroidManifest.xml
@@ -1,38 +1,7 @@
-
-
+ package="com.shatteredpixel.shatteredpixeldungeon">
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java
index f005c3acc..89695ca57 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/SPDSettings.java
@@ -58,12 +58,7 @@ public class SPDSettings extends GameSettings {
public static void fullscreen( boolean value ) {
put( KEY_FULLSCREEN, value );
- ShatteredPixelDungeon.instance.runOnUiThread( new Runnable() {
- @Override
- public void run() {
- ShatteredPixelDungeon.updateSystemUI();
- }
- } );
+ ShatteredPixelDungeon.updateSystemUI();
}
public static boolean fullscreen() {
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java
index c0e3eeb2d..7fefebcb8 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java
@@ -21,19 +21,13 @@
package com.shatteredpixel.shatteredpixeldungeon;
-import android.annotation.SuppressLint;
-import android.content.pm.ActivityInfo;
-import android.os.Build;
-import android.view.View;
-import android.view.WindowManager;
-
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.WelcomeScene;
import com.watabou.noosa.Game;
import com.watabou.noosa.RenderedText;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.audio.Sample;
-import com.watabou.utils.DeviceCompat;
+import com.watabou.utils.PlatformSupport;
public class ShatteredPixelDungeon extends Game {
@@ -46,8 +40,8 @@ public class ShatteredPixelDungeon extends Game {
public static final int v0_7_2d = 340;
public static final int v0_7_3 = 346;
- public ShatteredPixelDungeon() {
- super( sceneClass == null ? WelcomeScene.class : sceneClass );
+ public ShatteredPixelDungeon( PlatformSupport platform ) {
+ super( sceneClass == null ? WelcomeScene.class : sceneClass, platform );
//v0.7.0
com.watabou.utils.Bundle.addAlias(
@@ -220,100 +214,11 @@ public class ShatteredPixelDungeon extends Game {
}
public void updateDisplaySize(){
- boolean landscape = SPDSettings.landscape();
-
- instance.setRequestedOrientation(landscape ?
- ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE :
- ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
-
- if (view.getMeasuredWidth() == 0 || view.getMeasuredHeight() == 0)
- return;
-
- dispWidth = view.getMeasuredWidth();
- dispHeight = view.getMeasuredHeight();
-
- if ((dispWidth > dispHeight) != landscape){
- int tmp = dispWidth;
- dispWidth = dispHeight;
- dispHeight = tmp;
- }
-
- float dispRatio = dispWidth / (float)dispHeight;
-
- float renderWidth = dispRatio > 1 ? PixelScene.MIN_WIDTH_L : PixelScene.MIN_WIDTH_P;
- float renderHeight = dispRatio > 1 ? PixelScene.MIN_HEIGHT_L : PixelScene.MIN_HEIGHT_P;
-
- //force power saver in this case as all devices must run at at least 2x scale.
- if (dispWidth < renderWidth*2 || dispHeight < renderHeight*2)
- SPDSettings.put( SPDSettings.KEY_POWER_SAVER, true );
-
- if (SPDSettings.powerSaver()){
-
- int maxZoom = (int)Math.min(dispWidth/renderWidth, dispHeight/renderHeight);
-
- renderWidth *= Math.max( 2, Math.round(1f + maxZoom*0.4f));
- renderHeight *= Math.max( 2, Math.round(1f + maxZoom*0.4f));
-
- if (dispRatio > renderWidth / renderHeight){
- renderWidth = renderHeight * dispRatio;
- } else {
- renderHeight = renderWidth / dispRatio;
- }
-
- final int finalW = Math.round(renderWidth);
- final int finalH = Math.round(renderHeight);
- if (finalW != width || finalH != height){
-
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- view.getHolder().setFixedSize(finalW, finalH);
- }
- });
-
- }
- } else {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- view.getHolder().setSizeFromLayout();
- }
- });
- }
+ platform.updateDisplaySize();
}
public static void updateSystemUI() {
-
- instance.runOnUiThread(new Runnable() {
- @SuppressLint("NewApi")
- @Override
- public void run() {
- boolean fullscreen = Build.VERSION.SDK_INT < Build.VERSION_CODES.N
- || !instance.isInMultiWindowMode();
-
- if (fullscreen){
- instance.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- } else {
- instance.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- }
-
- if (DeviceCompat.supportsFullScreen()){
- if (SPDSettings.fullscreen()) {
- instance.getWindow().getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
- View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
- View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
- View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );
- } else {
- instance.getWindow().getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE );
- }
- }
- }
- });
-
+ platform.updateSystemUI();
}
@Override
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTextInput.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTextInput.java
index e5311d04d..56bfd38b5 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTextInput.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTextInput.java
@@ -34,6 +34,8 @@ import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.TextView;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.backends.android.AndroidApplication;
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
@@ -79,8 +81,8 @@ public class WndTextInput extends Window {
} else {
width = WIDTH;
}
-
- ShatteredPixelDungeon.instance.runOnUiThread(new Runnable() {
+
+ ((AndroidApplication)Gdx.app).runOnUiThread(new Runnable() {
@Override
public void run() {
RenderedTextMultiline txtTitle = PixelScene.renderMultiline( title, 9 );
@@ -91,7 +93,7 @@ public class WndTextInput extends Window {
float pos = txtTitle.bottom() + MARGIN;
- textInput = new EditText(ShatteredPixelDungeon.instance);
+ textInput = new EditText((AndroidApplication)Gdx.app);
textInput.setText( initialValue );
textInput.setTypeface( RenderedText.getFont() );
textInput.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)});
@@ -180,7 +182,7 @@ public class WndTextInput extends Window {
(int)(inputHeight * scaledZoom),
Gravity.CENTER_HORIZONTAL);
layout.setMargins(0, inputTop, 0, 0);
- ShatteredPixelDungeon.instance.addContentView(textInput, layout);
+ ((AndroidApplication)Gdx.app).addContentView(textInput, layout);
}
});
}
@@ -195,14 +197,13 @@ public class WndTextInput extends Window {
public void destroy() {
super.destroy();
if (textInput != null){
- ShatteredPixelDungeon.instance.runOnUiThread(new Runnable() {
+ ((AndroidApplication)Gdx.app).runOnUiThread(new Runnable() {
@Override
public void run() {
//make sure we remove the edit text and soft keyboard
((ViewGroup) textInput.getParent()).removeView(textInput);
- InputMethodManager imm = (InputMethodManager)ShatteredPixelDungeon
- .instance.getSystemService(Activity.INPUT_METHOD_SERVICE);
+ InputMethodManager imm = (InputMethodManager)((AndroidApplication)Gdx.app).getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(textInput.getWindowToken(), 0);
//Soft keyboard sometimes triggers software buttons, so make sure to reassert immersive
diff --git a/settings.gradle b/settings.gradle
index 26ac98a17..263c6b67e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':core', ':SPD-classes'
+include ':core', ':SPD-classes', ':android'