From 3e815a31655f83155ba730dbcb6382f0e2f2b050 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 1 Aug 2019 15:35:27 -0400 Subject: [PATCH] v0.7.4b: restructured initialization logic into new android module A lot of cleanup is needed for this, but everything works --- SPD-classes/build.gradle | 42 +----- .../src/main/java/com/watabou/noosa/Game.java | 79 ++++------ .../main/java/com/watabou/noosa/Scene.java | 2 +- .../java/com/watabou/noosa/audio/Music.java | 31 ---- .../java/com/watabou/utils/DeviceCompat.java | 1 + .../com/watabou/utils/PlatformSupport.java | 30 ++++ {SPD-classes => android}/.gitignore | 0 android/build.gradle | 106 ++++++++++++++ {SPD-classes => android}/proguard-rules.pro | 9 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../src/debug/res/mipmap-hdpi/ic_launcher.png | Bin .../mipmap-hdpi/ic_launcher_background.png | Bin .../mipmap-hdpi/ic_launcher_foreground.png | Bin .../src/debug/res/mipmap-ldpi/ic_launcher.png | Bin .../src/debug/res/mipmap-mdpi/ic_launcher.png | Bin .../mipmap-mdpi/ic_launcher_background.png | Bin .../mipmap-mdpi/ic_launcher_foreground.png | Bin .../debug/res/mipmap-xhdpi/ic_launcher.png | Bin .../mipmap-xhdpi/ic_launcher_background.png | Bin .../mipmap-xhdpi/ic_launcher_foreground.png | Bin .../debug/res/mipmap-xxhdpi/ic_launcher.png | Bin .../mipmap-xxhdpi/ic_launcher_background.png | Bin .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin .../debug/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../mipmap-xxxhdpi/ic_launcher_background.png | Bin .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin android/src/main/AndroidManifest.xml | 38 +++++ {core => android}/src/main/assets/amulet.png | Bin {core => android}/src/main/assets/arcs1.png | Bin {core => android}/src/main/assets/arcs2.png | Bin {core => android}/src/main/assets/avatars.png | Bin {core => android}/src/main/assets/badges.png | Bin {core => android}/src/main/assets/banners.png | Bin {core => android}/src/main/assets/bat.png | Bin {core => android}/src/main/assets/bee.png | Bin .../src/main/assets/blacksmith.png | Bin {core => android}/src/main/assets/boss_hp.png | Bin {core => android}/src/main/assets/brute.png | Bin {core => android}/src/main/assets/buffs.png | Bin .../src/main/assets/burning_fist.png | Bin {core => android}/src/main/assets/chrome.png | Bin .../src/main/assets/consumable_icons.png | Bin {core => android}/src/main/assets/crab.png | Bin .../main/assets/custom_tiles/prison_exit.png | Bin .../assets/custom_tiles/prison_quests.png | Bin .../main/assets/custom_tiles/weak_floor.png | Bin {core => android}/src/main/assets/demon.png | Bin {core => android}/src/main/assets/dm300.png | Bin {core => android}/src/main/assets/effects.png | Bin .../src/main/assets/elemental.png | Bin {core => android}/src/main/assets/exp_bar.png | Bin {core => android}/src/main/assets/eye.png | Bin .../src/main/assets/fireball.png | Bin {core => android}/src/main/assets/font1x.png | Bin {core => android}/src/main/assets/font2x.png | Bin {core => android}/src/main/assets/game.ogg | Bin {core => android}/src/main/assets/ghost.png | Bin {core => android}/src/main/assets/gnoll.png | Bin {core => android}/src/main/assets/golem.png | Bin {core => android}/src/main/assets/goo.png | Bin {core => android}/src/main/assets/guard.png | Bin .../src/main/assets/guardian.png | Bin {core => android}/src/main/assets/hp_bar.png | Bin .../src/main/assets/huntress.png | Bin {core => android}/src/main/assets/icons.png | Bin {core => android}/src/main/assets/items.png | Bin {core => android}/src/main/assets/king.png | Bin .../src/main/assets/large_buffs.png | Bin {core => android}/src/main/assets/larva.png | Bin .../src/main/assets/loading_caves.png | Bin .../src/main/assets/loading_city.png | Bin .../src/main/assets/loading_halls.png | Bin .../src/main/assets/loading_prison.png | Bin .../src/main/assets/loading_sewers.png | Bin .../src/main/assets/locked_badge.png | Bin {core => android}/src/main/assets/mage.png | Bin .../src/main/assets/menu_button.png | Bin {core => android}/src/main/assets/mimic.png | Bin {core => android}/src/main/assets/monk.png | Bin {core => android}/src/main/assets/pet.png | Bin {core => android}/src/main/assets/piranha.png | Bin .../src/main/assets/pixel_font.png | Bin .../src/main/assets/pixelfont.ttf | Bin {core => android}/src/main/assets/rat.png | Bin {core => android}/src/main/assets/ratking.png | Bin {core => android}/src/main/assets/rogue.png | Bin .../src/main/assets/rot_heart.png | Bin .../src/main/assets/rot_lasher.png | Bin .../src/main/assets/rotting_fist.png | Bin {core => android}/src/main/assets/scorpio.png | Bin {core => android}/src/main/assets/shadow.png | Bin {core => android}/src/main/assets/shaman.png | Bin {core => android}/src/main/assets/sheep.png | Bin .../src/main/assets/shield_bar.png | Bin .../src/main/assets/shopkeeper.png | Bin .../src/main/assets/skeleton.png | Bin .../src/main/assets/snd_alert.mp3 | Bin .../src/main/assets/snd_badge.mp3 | Bin .../src/main/assets/snd_beacon.mp3 | Bin {core => android}/src/main/assets/snd_bee.mp3 | Bin .../src/main/assets/snd_blast.mp3 | Bin .../src/main/assets/snd_bones.mp3 | Bin .../src/main/assets/snd_boss.mp3 | Bin .../src/main/assets/snd_burning.mp3 | Bin .../src/main/assets/snd_challenge.mp3 | Bin .../src/main/assets/snd_charms.mp3 | Bin .../src/main/assets/snd_click.mp3 | Bin .../src/main/assets/snd_cursed.mp3 | Bin .../src/main/assets/snd_death.mp3 | Bin .../src/main/assets/snd_degrade.mp3 | Bin .../src/main/assets/snd_descend.mp3 | Bin .../src/main/assets/snd_dewdrop.mp3 | Bin .../src/main/assets/snd_door_open.mp3 | Bin .../src/main/assets/snd_drink.mp3 | Bin {core => android}/src/main/assets/snd_eat.mp3 | Bin .../src/main/assets/snd_evoke.mp3 | Bin .../src/main/assets/snd_falling.mp3 | Bin .../src/main/assets/snd_ghost.mp3 | Bin .../src/main/assets/snd_gold.mp3 | Bin {core => android}/src/main/assets/snd_hit.mp3 | Bin .../src/main/assets/snd_item.mp3 | Bin .../src/main/assets/snd_levelup.mp3 | Bin .../src/main/assets/snd_lightning.mp3 | Bin .../src/main/assets/snd_lullaby.mp3 | Bin .../src/main/assets/snd_mastery.mp3 | Bin .../src/main/assets/snd_meld.mp3 | Bin .../src/main/assets/snd_mimic.mp3 | Bin .../src/main/assets/snd_miss.mp3 | Bin .../src/main/assets/snd_plant.mp3 | Bin .../src/main/assets/snd_puff.mp3 | Bin {core => android}/src/main/assets/snd_ray.mp3 | Bin .../src/main/assets/snd_read.mp3 | Bin .../src/main/assets/snd_rocks.mp3 | Bin .../src/main/assets/snd_secret.mp3 | Bin .../src/main/assets/snd_shatter.mp3 | Bin .../src/main/assets/snd_step.mp3 | Bin .../src/main/assets/snd_teleport.mp3 | Bin .../src/main/assets/snd_tomb.mp3 | Bin .../src/main/assets/snd_trap.mp3 | Bin .../src/main/assets/snd_unlock.mp3 | Bin .../src/main/assets/snd_water.mp3 | Bin {core => android}/src/main/assets/snd_zap.mp3 | Bin {core => android}/src/main/assets/specks.png | Bin .../src/main/assets/spell_icons.png | Bin {core => android}/src/main/assets/spinner.png | Bin {core => android}/src/main/assets/statue.png | Bin .../src/main/assets/status_pane.png | Bin .../src/main/assets/succubus.png | Bin {core => android}/src/main/assets/surface.ogg | Bin {core => android}/src/main/assets/surface.png | Bin {core => android}/src/main/assets/swarm.png | Bin {core => android}/src/main/assets/tengu.png | Bin .../src/main/assets/terrain_features.png | Bin {core => android}/src/main/assets/theme.ogg | Bin {core => android}/src/main/assets/thief.png | Bin .../src/main/assets/tiles_caves.png | Bin .../src/main/assets/tiles_city.png | Bin .../src/main/assets/tiles_halls.png | Bin .../src/main/assets/tiles_prison.png | Bin .../src/main/assets/tiles_sewers.png | Bin {core => android}/src/main/assets/toolbar.png | Bin {core => android}/src/main/assets/undead.png | Bin .../src/main/assets/visual_grid.png | Bin .../src/main/assets/wall_blocking.png | Bin .../src/main/assets/wandmaker.png | Bin {core => android}/src/main/assets/wards.png | Bin {core => android}/src/main/assets/warlock.png | Bin {core => android}/src/main/assets/warrior.png | Bin {core => android}/src/main/assets/water0.png | Bin {core => android}/src/main/assets/water1.png | Bin {core => android}/src/main/assets/water2.png | Bin {core => android}/src/main/assets/water3.png | Bin {core => android}/src/main/assets/water4.png | Bin {core => android}/src/main/assets/wraith.png | Bin {core => android}/src/main/assets/yog.png | Bin .../android/AndroidBackupHandler.java | 7 +- .../android/AndroidLauncher.java | 112 +++++++++++++++ .../android/AndroidPlatformSupport.java | 135 ++++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../mipmap-hdpi/ic_launcher_background.png | Bin .../mipmap-hdpi/ic_launcher_foreground.png | Bin .../src/main/res/mipmap-ldpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../mipmap-mdpi/ic_launcher_background.png | Bin .../mipmap-mdpi/ic_launcher_foreground.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../mipmap-xhdpi/ic_launcher_background.png | Bin .../mipmap-xhdpi/ic_launcher_foreground.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../mipmap-xxhdpi/ic_launcher_background.png | Bin .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../mipmap-xxxhdpi/ic_launcher_background.png | Bin .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin core/build.gradle | 32 +---- core/proguard-rules.pro | 8 -- core/src/main/AndroidManifest.xml | 35 +---- .../shatteredpixeldungeon/SPDSettings.java | 7 +- .../ShatteredPixelDungeon.java | 105 +------------- .../windows/WndTextInput.java | 15 +- settings.gradle | 2 +- 202 files changed, 483 insertions(+), 313 deletions(-) create mode 100644 SPD-classes/src/main/java/com/watabou/utils/PlatformSupport.java rename {SPD-classes => android}/.gitignore (100%) create mode 100644 android/build.gradle rename {SPD-classes => android}/proguard-rules.pro (64%) rename {core => android}/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {core => android}/src/debug/res/mipmap-hdpi/ic_launcher.png (100%) rename {core => android}/src/debug/res/mipmap-hdpi/ic_launcher_background.png (100%) rename {core => android}/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/debug/res/mipmap-ldpi/ic_launcher.png (100%) rename {core => android}/src/debug/res/mipmap-mdpi/ic_launcher.png (100%) rename {core => android}/src/debug/res/mipmap-mdpi/ic_launcher_background.png (100%) rename {core => android}/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/debug/res/mipmap-xhdpi/ic_launcher.png (100%) rename {core => android}/src/debug/res/mipmap-xhdpi/ic_launcher_background.png (100%) rename {core => android}/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/debug/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {core => android}/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png (100%) rename {core => android}/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/debug/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {core => android}/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png (100%) rename {core => android}/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png (100%) create mode 100644 android/src/main/AndroidManifest.xml rename {core => android}/src/main/assets/amulet.png (100%) rename {core => android}/src/main/assets/arcs1.png (100%) rename {core => android}/src/main/assets/arcs2.png (100%) rename {core => android}/src/main/assets/avatars.png (100%) rename {core => android}/src/main/assets/badges.png (100%) rename {core => android}/src/main/assets/banners.png (100%) rename {core => android}/src/main/assets/bat.png (100%) rename {core => android}/src/main/assets/bee.png (100%) rename {core => android}/src/main/assets/blacksmith.png (100%) rename {core => android}/src/main/assets/boss_hp.png (100%) rename {core => android}/src/main/assets/brute.png (100%) rename {core => android}/src/main/assets/buffs.png (100%) rename {core => android}/src/main/assets/burning_fist.png (100%) rename {core => android}/src/main/assets/chrome.png (100%) rename {core => android}/src/main/assets/consumable_icons.png (100%) rename {core => android}/src/main/assets/crab.png (100%) rename {core => android}/src/main/assets/custom_tiles/prison_exit.png (100%) rename {core => android}/src/main/assets/custom_tiles/prison_quests.png (100%) rename {core => android}/src/main/assets/custom_tiles/weak_floor.png (100%) rename {core => android}/src/main/assets/demon.png (100%) rename {core => android}/src/main/assets/dm300.png (100%) rename {core => android}/src/main/assets/effects.png (100%) rename {core => android}/src/main/assets/elemental.png (100%) rename {core => android}/src/main/assets/exp_bar.png (100%) rename {core => android}/src/main/assets/eye.png (100%) rename {core => android}/src/main/assets/fireball.png (100%) rename {core => android}/src/main/assets/font1x.png (100%) rename {core => android}/src/main/assets/font2x.png (100%) rename {core => android}/src/main/assets/game.ogg (100%) rename {core => android}/src/main/assets/ghost.png (100%) rename {core => android}/src/main/assets/gnoll.png (100%) rename {core => android}/src/main/assets/golem.png (100%) rename {core => android}/src/main/assets/goo.png (100%) rename {core => android}/src/main/assets/guard.png (100%) rename {core => android}/src/main/assets/guardian.png (100%) rename {core => android}/src/main/assets/hp_bar.png (100%) rename {core => android}/src/main/assets/huntress.png (100%) rename {core => android}/src/main/assets/icons.png (100%) rename {core => android}/src/main/assets/items.png (100%) rename {core => android}/src/main/assets/king.png (100%) rename {core => android}/src/main/assets/large_buffs.png (100%) rename {core => android}/src/main/assets/larva.png (100%) rename {core => android}/src/main/assets/loading_caves.png (100%) rename {core => android}/src/main/assets/loading_city.png (100%) rename {core => android}/src/main/assets/loading_halls.png (100%) rename {core => android}/src/main/assets/loading_prison.png (100%) rename {core => android}/src/main/assets/loading_sewers.png (100%) rename {core => android}/src/main/assets/locked_badge.png (100%) rename {core => android}/src/main/assets/mage.png (100%) rename {core => android}/src/main/assets/menu_button.png (100%) rename {core => android}/src/main/assets/mimic.png (100%) rename {core => android}/src/main/assets/monk.png (100%) rename {core => android}/src/main/assets/pet.png (100%) rename {core => android}/src/main/assets/piranha.png (100%) rename {core => android}/src/main/assets/pixel_font.png (100%) rename {core => android}/src/main/assets/pixelfont.ttf (100%) rename {core => android}/src/main/assets/rat.png (100%) rename {core => android}/src/main/assets/ratking.png (100%) rename {core => android}/src/main/assets/rogue.png (100%) rename {core => android}/src/main/assets/rot_heart.png (100%) rename {core => android}/src/main/assets/rot_lasher.png (100%) rename {core => android}/src/main/assets/rotting_fist.png (100%) rename {core => android}/src/main/assets/scorpio.png (100%) rename {core => android}/src/main/assets/shadow.png (100%) rename {core => android}/src/main/assets/shaman.png (100%) rename {core => android}/src/main/assets/sheep.png (100%) rename {core => android}/src/main/assets/shield_bar.png (100%) rename {core => android}/src/main/assets/shopkeeper.png (100%) rename {core => android}/src/main/assets/skeleton.png (100%) rename {core => android}/src/main/assets/snd_alert.mp3 (100%) rename {core => android}/src/main/assets/snd_badge.mp3 (100%) rename {core => android}/src/main/assets/snd_beacon.mp3 (100%) rename {core => android}/src/main/assets/snd_bee.mp3 (100%) rename {core => android}/src/main/assets/snd_blast.mp3 (100%) rename {core => android}/src/main/assets/snd_bones.mp3 (100%) rename {core => android}/src/main/assets/snd_boss.mp3 (100%) rename {core => android}/src/main/assets/snd_burning.mp3 (100%) rename {core => android}/src/main/assets/snd_challenge.mp3 (100%) rename {core => android}/src/main/assets/snd_charms.mp3 (100%) rename {core => android}/src/main/assets/snd_click.mp3 (100%) rename {core => android}/src/main/assets/snd_cursed.mp3 (100%) rename {core => android}/src/main/assets/snd_death.mp3 (100%) rename {core => android}/src/main/assets/snd_degrade.mp3 (100%) rename {core => android}/src/main/assets/snd_descend.mp3 (100%) rename {core => android}/src/main/assets/snd_dewdrop.mp3 (100%) rename {core => android}/src/main/assets/snd_door_open.mp3 (100%) rename {core => android}/src/main/assets/snd_drink.mp3 (100%) rename {core => android}/src/main/assets/snd_eat.mp3 (100%) rename {core => android}/src/main/assets/snd_evoke.mp3 (100%) rename {core => android}/src/main/assets/snd_falling.mp3 (100%) rename {core => android}/src/main/assets/snd_ghost.mp3 (100%) rename {core => android}/src/main/assets/snd_gold.mp3 (100%) rename {core => android}/src/main/assets/snd_hit.mp3 (100%) rename {core => android}/src/main/assets/snd_item.mp3 (100%) rename {core => android}/src/main/assets/snd_levelup.mp3 (100%) rename {core => android}/src/main/assets/snd_lightning.mp3 (100%) rename {core => android}/src/main/assets/snd_lullaby.mp3 (100%) rename {core => android}/src/main/assets/snd_mastery.mp3 (100%) rename {core => android}/src/main/assets/snd_meld.mp3 (100%) rename {core => android}/src/main/assets/snd_mimic.mp3 (100%) rename {core => android}/src/main/assets/snd_miss.mp3 (100%) rename {core => android}/src/main/assets/snd_plant.mp3 (100%) rename {core => android}/src/main/assets/snd_puff.mp3 (100%) rename {core => android}/src/main/assets/snd_ray.mp3 (100%) rename {core => android}/src/main/assets/snd_read.mp3 (100%) rename {core => android}/src/main/assets/snd_rocks.mp3 (100%) rename {core => android}/src/main/assets/snd_secret.mp3 (100%) rename {core => android}/src/main/assets/snd_shatter.mp3 (100%) rename {core => android}/src/main/assets/snd_step.mp3 (100%) rename {core => android}/src/main/assets/snd_teleport.mp3 (100%) rename {core => android}/src/main/assets/snd_tomb.mp3 (100%) rename {core => android}/src/main/assets/snd_trap.mp3 (100%) rename {core => android}/src/main/assets/snd_unlock.mp3 (100%) rename {core => android}/src/main/assets/snd_water.mp3 (100%) rename {core => android}/src/main/assets/snd_zap.mp3 (100%) rename {core => android}/src/main/assets/specks.png (100%) rename {core => android}/src/main/assets/spell_icons.png (100%) rename {core => android}/src/main/assets/spinner.png (100%) rename {core => android}/src/main/assets/statue.png (100%) rename {core => android}/src/main/assets/status_pane.png (100%) rename {core => android}/src/main/assets/succubus.png (100%) rename {core => android}/src/main/assets/surface.ogg (100%) rename {core => android}/src/main/assets/surface.png (100%) rename {core => android}/src/main/assets/swarm.png (100%) rename {core => android}/src/main/assets/tengu.png (100%) rename {core => android}/src/main/assets/terrain_features.png (100%) rename {core => android}/src/main/assets/theme.ogg (100%) rename {core => android}/src/main/assets/thief.png (100%) rename {core => android}/src/main/assets/tiles_caves.png (100%) rename {core => android}/src/main/assets/tiles_city.png (100%) rename {core => android}/src/main/assets/tiles_halls.png (100%) rename {core => android}/src/main/assets/tiles_prison.png (100%) rename {core => android}/src/main/assets/tiles_sewers.png (100%) rename {core => android}/src/main/assets/toolbar.png (100%) rename {core => android}/src/main/assets/undead.png (100%) rename {core => android}/src/main/assets/visual_grid.png (100%) rename {core => android}/src/main/assets/wall_blocking.png (100%) rename {core => android}/src/main/assets/wandmaker.png (100%) rename {core => android}/src/main/assets/wards.png (100%) rename {core => android}/src/main/assets/warlock.png (100%) rename {core => android}/src/main/assets/warrior.png (100%) rename {core => android}/src/main/assets/water0.png (100%) rename {core => android}/src/main/assets/water1.png (100%) rename {core => android}/src/main/assets/water2.png (100%) rename {core => android}/src/main/assets/water3.png (100%) rename {core => android}/src/main/assets/water4.png (100%) rename {core => android}/src/main/assets/wraith.png (100%) rename {core => android}/src/main/assets/yog.png (100%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BackupHandler.java => android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidBackupHandler.java (88%) create mode 100644 android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java create mode 100644 android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java rename {core => android}/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {core => android}/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {core => android}/src/main/res/mipmap-hdpi/ic_launcher_background.png (100%) rename {core => android}/src/main/res/mipmap-hdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/main/res/mipmap-ldpi/ic_launcher.png (100%) rename {core => android}/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {core => android}/src/main/res/mipmap-mdpi/ic_launcher_background.png (100%) rename {core => android}/src/main/res/mipmap-mdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {core => android}/src/main/res/mipmap-xhdpi/ic_launcher_background.png (100%) rename {core => android}/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {core => android}/src/main/res/mipmap-xxhdpi/ic_launcher_background.png (100%) rename {core => android}/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png (100%) rename {core => android}/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {core => android}/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png (100%) rename {core => android}/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png (100%) delete mode 100644 core/proguard-rules.pro 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 c ) { - super(); + protected static PlatformSupport platform; + + public Game(Class 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'