From 1585407bcb6d63f989ad51f36aef0bbd90cd7bd9 Mon Sep 17 00:00:00 2001 From: Matt Low Date: Tue, 14 Jan 2020 16:20:43 +0400 Subject: [PATCH] Update project for Android builds --- android/AndroidManifest.xml | 24 ++++ {core => android}/assets/data/level.txt | 0 {core => android}/assets/fonts/joystix.ttf | Bin {core => android}/assets/level_background.png | Bin .../assets/level_background_win.png | Bin {core => android}/assets/logo.png | Bin {core => android}/assets/menu_background.png | Bin {core => android}/assets/sounds/beginning.wav | Bin .../assets/sounds/beginning_alt.wav | Bin {core => android}/assets/sounds/chomp_1.wav | Bin {core => android}/assets/sounds/chomp_2.wav | Bin {core => android}/assets/sounds/death.wav | Bin {core => android}/assets/sounds/eat_fruit.wav | Bin {core => android}/assets/sounds/eat_ghost.wav | Bin .../assets/sounds/extra_life.wav | Bin {core => android}/assets/sounds/fright.wav | Bin .../assets/sounds/intermission.wav | Bin .../assets/sounds/return_base.wav | Bin {core => android}/assets/sounds/siren.wav | Bin .../assets/sounds/siren_fast.wav | Bin .../assets/sounds/siren_faster.wav | Bin .../assets/sounds/siren_fastest.wav | Bin {core => android}/assets/sprites/death.png | Bin {core => android}/assets/sprites/death.xcf | Bin {core => android}/assets/sprites/ghosts.png | Bin {core => android}/assets/sprites/ghosts.xcf | Bin {core => android}/assets/sprites/level.png | Bin {core => android}/assets/sprites/level.xcf | Bin {core => android}/assets/sprites/pacman.png | Bin {core => android}/assets/sprites/pacman.xcf | Bin {core => android}/assets/sprites/points.png | Bin {core => android}/assets/sprites/points.xcf | Bin {core => android}/assets/sprites/volume.png | Bin {core => android}/assets/sprites/volume.xcf | Bin android/build.gradle | 90 ++++++++++++++ android/ic_launcher-web.png | Bin 0 -> 16232 bytes android/proguard-rules.pro | 45 +++++++ android/project.properties | 9 ++ .../res/drawable-anydpi-v26/ic_launcher.xml | 6 + .../ic_launcher_foreground.xml | 40 +++++++ android/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 1929 bytes android/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 1208 bytes android/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 2524 bytes android/res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 3852 bytes android/res/drawable-xxxhdpi/ic_launcher.png | Bin 0 -> 5285 bytes android/res/values/color.xml | 4 + android/res/values/strings.xml | 6 + android/res/values/styles.xml | 12 ++ .../src/com/me/pacman/AndroidLauncher.java | 17 +++ build.gradle | 25 +++- desktop/build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 5 +- icon.svg | 112 ++++++++++++++++++ settings.gradle | 2 +- 54 files changed, 393 insertions(+), 8 deletions(-) create mode 100644 android/AndroidManifest.xml rename {core => android}/assets/data/level.txt (100%) rename {core => android}/assets/fonts/joystix.ttf (100%) rename {core => android}/assets/level_background.png (100%) rename {core => android}/assets/level_background_win.png (100%) rename {core => android}/assets/logo.png (100%) rename {core => android}/assets/menu_background.png (100%) rename {core => android}/assets/sounds/beginning.wav (100%) rename {core => android}/assets/sounds/beginning_alt.wav (100%) rename {core => android}/assets/sounds/chomp_1.wav (100%) rename {core => android}/assets/sounds/chomp_2.wav (100%) rename {core => android}/assets/sounds/death.wav (100%) rename {core => android}/assets/sounds/eat_fruit.wav (100%) rename {core => android}/assets/sounds/eat_ghost.wav (100%) rename {core => android}/assets/sounds/extra_life.wav (100%) rename {core => android}/assets/sounds/fright.wav (100%) rename {core => android}/assets/sounds/intermission.wav (100%) rename {core => android}/assets/sounds/return_base.wav (100%) rename {core => android}/assets/sounds/siren.wav (100%) rename {core => android}/assets/sounds/siren_fast.wav (100%) rename {core => android}/assets/sounds/siren_faster.wav (100%) rename {core => android}/assets/sounds/siren_fastest.wav (100%) rename {core => android}/assets/sprites/death.png (100%) rename {core => android}/assets/sprites/death.xcf (100%) rename {core => android}/assets/sprites/ghosts.png (100%) rename {core => android}/assets/sprites/ghosts.xcf (100%) rename {core => android}/assets/sprites/level.png (100%) rename {core => android}/assets/sprites/level.xcf (100%) rename {core => android}/assets/sprites/pacman.png (100%) rename {core => android}/assets/sprites/pacman.xcf (100%) rename {core => android}/assets/sprites/points.png (100%) rename {core => android}/assets/sprites/points.xcf (100%) rename {core => android}/assets/sprites/volume.png (100%) rename {core => android}/assets/sprites/volume.xcf (100%) create mode 100644 android/build.gradle create mode 100644 android/ic_launcher-web.png create mode 100644 android/proguard-rules.pro create mode 100644 android/project.properties create mode 100644 android/res/drawable-anydpi-v26/ic_launcher.xml create mode 100644 android/res/drawable-anydpi-v26/ic_launcher_foreground.xml create mode 100644 android/res/drawable-hdpi/ic_launcher.png create mode 100644 android/res/drawable-mdpi/ic_launcher.png create mode 100644 android/res/drawable-xhdpi/ic_launcher.png create mode 100644 android/res/drawable-xxhdpi/ic_launcher.png create mode 100644 android/res/drawable-xxxhdpi/ic_launcher.png create mode 100644 android/res/values/color.xml create mode 100644 android/res/values/strings.xml create mode 100644 android/res/values/styles.xml create mode 100644 android/src/com/me/pacman/AndroidLauncher.java create mode 100644 icon.svg diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml new file mode 100644 index 0000000..f407058 --- /dev/null +++ b/android/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + diff --git a/core/assets/data/level.txt b/android/assets/data/level.txt similarity index 100% rename from core/assets/data/level.txt rename to android/assets/data/level.txt diff --git a/core/assets/fonts/joystix.ttf b/android/assets/fonts/joystix.ttf similarity index 100% rename from core/assets/fonts/joystix.ttf rename to android/assets/fonts/joystix.ttf diff --git a/core/assets/level_background.png b/android/assets/level_background.png similarity index 100% rename from core/assets/level_background.png rename to android/assets/level_background.png diff --git a/core/assets/level_background_win.png b/android/assets/level_background_win.png similarity index 100% rename from core/assets/level_background_win.png rename to android/assets/level_background_win.png diff --git a/core/assets/logo.png b/android/assets/logo.png similarity index 100% rename from core/assets/logo.png rename to android/assets/logo.png diff --git a/core/assets/menu_background.png b/android/assets/menu_background.png similarity index 100% rename from core/assets/menu_background.png rename to android/assets/menu_background.png diff --git a/core/assets/sounds/beginning.wav b/android/assets/sounds/beginning.wav similarity index 100% rename from core/assets/sounds/beginning.wav rename to android/assets/sounds/beginning.wav diff --git a/core/assets/sounds/beginning_alt.wav b/android/assets/sounds/beginning_alt.wav similarity index 100% rename from core/assets/sounds/beginning_alt.wav rename to android/assets/sounds/beginning_alt.wav diff --git a/core/assets/sounds/chomp_1.wav b/android/assets/sounds/chomp_1.wav similarity index 100% rename from core/assets/sounds/chomp_1.wav rename to android/assets/sounds/chomp_1.wav diff --git a/core/assets/sounds/chomp_2.wav b/android/assets/sounds/chomp_2.wav similarity index 100% rename from core/assets/sounds/chomp_2.wav rename to android/assets/sounds/chomp_2.wav diff --git a/core/assets/sounds/death.wav b/android/assets/sounds/death.wav similarity index 100% rename from core/assets/sounds/death.wav rename to android/assets/sounds/death.wav diff --git a/core/assets/sounds/eat_fruit.wav b/android/assets/sounds/eat_fruit.wav similarity index 100% rename from core/assets/sounds/eat_fruit.wav rename to android/assets/sounds/eat_fruit.wav diff --git a/core/assets/sounds/eat_ghost.wav b/android/assets/sounds/eat_ghost.wav similarity index 100% rename from core/assets/sounds/eat_ghost.wav rename to android/assets/sounds/eat_ghost.wav diff --git a/core/assets/sounds/extra_life.wav b/android/assets/sounds/extra_life.wav similarity index 100% rename from core/assets/sounds/extra_life.wav rename to android/assets/sounds/extra_life.wav diff --git a/core/assets/sounds/fright.wav b/android/assets/sounds/fright.wav similarity index 100% rename from core/assets/sounds/fright.wav rename to android/assets/sounds/fright.wav diff --git a/core/assets/sounds/intermission.wav b/android/assets/sounds/intermission.wav similarity index 100% rename from core/assets/sounds/intermission.wav rename to android/assets/sounds/intermission.wav diff --git a/core/assets/sounds/return_base.wav b/android/assets/sounds/return_base.wav similarity index 100% rename from core/assets/sounds/return_base.wav rename to android/assets/sounds/return_base.wav diff --git a/core/assets/sounds/siren.wav b/android/assets/sounds/siren.wav similarity index 100% rename from core/assets/sounds/siren.wav rename to android/assets/sounds/siren.wav diff --git a/core/assets/sounds/siren_fast.wav b/android/assets/sounds/siren_fast.wav similarity index 100% rename from core/assets/sounds/siren_fast.wav rename to android/assets/sounds/siren_fast.wav diff --git a/core/assets/sounds/siren_faster.wav b/android/assets/sounds/siren_faster.wav similarity index 100% rename from core/assets/sounds/siren_faster.wav rename to android/assets/sounds/siren_faster.wav diff --git a/core/assets/sounds/siren_fastest.wav b/android/assets/sounds/siren_fastest.wav similarity index 100% rename from core/assets/sounds/siren_fastest.wav rename to android/assets/sounds/siren_fastest.wav diff --git a/core/assets/sprites/death.png b/android/assets/sprites/death.png similarity index 100% rename from core/assets/sprites/death.png rename to android/assets/sprites/death.png diff --git a/core/assets/sprites/death.xcf b/android/assets/sprites/death.xcf similarity index 100% rename from core/assets/sprites/death.xcf rename to android/assets/sprites/death.xcf diff --git a/core/assets/sprites/ghosts.png b/android/assets/sprites/ghosts.png similarity index 100% rename from core/assets/sprites/ghosts.png rename to android/assets/sprites/ghosts.png diff --git a/core/assets/sprites/ghosts.xcf b/android/assets/sprites/ghosts.xcf similarity index 100% rename from core/assets/sprites/ghosts.xcf rename to android/assets/sprites/ghosts.xcf diff --git a/core/assets/sprites/level.png b/android/assets/sprites/level.png similarity index 100% rename from core/assets/sprites/level.png rename to android/assets/sprites/level.png diff --git a/core/assets/sprites/level.xcf b/android/assets/sprites/level.xcf similarity index 100% rename from core/assets/sprites/level.xcf rename to android/assets/sprites/level.xcf diff --git a/core/assets/sprites/pacman.png b/android/assets/sprites/pacman.png similarity index 100% rename from core/assets/sprites/pacman.png rename to android/assets/sprites/pacman.png diff --git a/core/assets/sprites/pacman.xcf b/android/assets/sprites/pacman.xcf similarity index 100% rename from core/assets/sprites/pacman.xcf rename to android/assets/sprites/pacman.xcf diff --git a/core/assets/sprites/points.png b/android/assets/sprites/points.png similarity index 100% rename from core/assets/sprites/points.png rename to android/assets/sprites/points.png diff --git a/core/assets/sprites/points.xcf b/android/assets/sprites/points.xcf similarity index 100% rename from core/assets/sprites/points.xcf rename to android/assets/sprites/points.xcf diff --git a/core/assets/sprites/volume.png b/android/assets/sprites/volume.png similarity index 100% rename from core/assets/sprites/volume.png rename to android/assets/sprites/volume.png diff --git a/core/assets/sprites/volume.xcf b/android/assets/sprites/volume.xcf similarity index 100% rename from core/assets/sprites/volume.xcf rename to android/assets/sprites/volume.xcf diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..5932b0c --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,90 @@ +android { + buildToolsVersion "29.0.2" + compileSdkVersion 29 + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = ['src'] + aidl.srcDirs = ['src'] + renderscript.srcDirs = ['src'] + res.srcDirs = ['res'] + assets.srcDirs = ['assets'] + jniLibs.srcDirs = ['libs'] + } + + } + packagingOptions { + exclude 'META-INF/robovm/ios/robovm.xml' + } + defaultConfig { + applicationId "com.me.pacman" + minSdkVersion 14 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + + +// 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 { + doFirst { + 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" + } + } + } + } +} + +tasks.whenTaskAdded { packageTask -> + if (packageTask.name.contains("package")) { + packageTask.dependsOn 'copyAndroidNatives' + } +} + +task run(type: Exec) { + def path + def localProperties = project.file("../local.properties") + if (localProperties.exists()) { + Properties properties = new Properties() + localProperties.withInputStream { instr -> + properties.load(instr) + } + def sdkDir = properties.getProperty('sdk.dir') + if (sdkDir) { + path = sdkDir + } else { + path = "$System.env.ANDROID_HOME" + } + } else { + path = "$System.env.ANDROID_HOME" + } + + def adb = path + "/platform-tools/adb" + commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.me.pacman/com.me.pacman.AndroidLauncher' +} diff --git a/android/ic_launcher-web.png b/android/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..dd20c91b854f4be65b900b942441c0e7e5a0c41b GIT binary patch literal 16232 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 z zgY#dP)hGCWCCNd4gf*Xojj)SrJ5Jy=c>{K_=@}O-+;Uk{sU7S~2V8&ZaI$G<()Kb~ zR3TehN;gs{w4>uD-dQhu%kcresWU8ljZp+maJwf@1Q&v;Z|zK2w>>>tD31t6c&%_v zGLYrg7*Bz57h|$+a0_^K0L2w|c`UM6J0~6a#S~=ZYdt3+M7M+x@zwQQWlII_#4W0r5t3OBM zfqLF7Y`MB9Yzf#xnvAvsMP-=BmxDQQZHR4*b%`BV*%g#FNCQ zOJ9nNaQdH^B{;rR3DXRl+iAE$$SJE}#jZ?9vO+E4J$bq1D7lF+n$s}br6Fb6J}&WbIUeD zM;O(QzLOeArKFC2&8vhQ&bzG42-f#={G%`dx|B~ljl?JfBr>a$Mn7;-d!sH zeq%+LZM|fU!d58>5nbZ58s6P!`~n#qQ|8kUdgoZD3Pe}5OFBjoq?o&%r8R{%9TeyW ztz|r5(o!SL)zQR(67F&FiZ@L(NVjyLG246)O=x-B+PNmK0Hz`Br1V3}JRJn|vV*ZY zlFyXcZXlYJ8HOd*|7c1FH|2^MapzX>q}@pW7WJ^xcfE%3*AdcS89pS(uz04mkO}B? zm@VVi)2kW3&!91a1@sFSsvE|Ht+UNMgOpajzUtU?Oo8(NnYA7xPuDn83igxCLNZVb z;_`VoPZ@B-Pl?7?O!~1p@2uGul}u!sUA)g>;k6t%Wb}ch@kxC*>lZyGtijJxk`&2> zVxJ{qrH4Y>#2AuIg44r_NyQO@`+S_gTEt-Vy0HC!%dUS zow!$Iu-UJNt(gJ2o{tJD_e2jB<%#yh5G#Yzi>&$ex2H4vnzfX!{)Q9HH$^CNI(xM{ z8fXIh+-Y*dVcN6x_pvrhG;xI;V-fS-S|Nf-DAxcaWBhF0_fHfyAJ8FmeYh)P1YXyF zaNCGr{vd%z)p-1Na1>0VsQakcKPgl)>Ju~6cBj3-&y$oSXv3zTc(Ee^4bSj5t!j*2e< zmIWV?q_Q#=h7p+!G53ZFmL5qr5EE+lnEVrQh7;FFU*qzh@k^*MNw)KQML3bxyub R0Jq{Hw4TYO;tNiX{tqwgP00WN literal 0 HcmV?d00001 diff --git a/android/proguard-rules.pro b/android/proguard-rules.pro new file mode 100644 index 0000000..b166b1e --- /dev/null +++ b/android/proguard-rules.pro @@ -0,0 +1,45 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-verbose + +-dontwarn android.support.** +-dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication +-dontwarn com.badlogic.gdx.utils.GdxBuild +-dontwarn com.badlogic.gdx.physics.box2d.utils.Box2DBuild +-dontwarn com.badlogic.gdx.jnigen.BuildTarget* +-dontwarn com.badlogic.gdx.graphics.g2d.freetype.FreetypeBuild + +-keep class com.badlogic.gdx.controllers.android.AndroidControllers + +-keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* { + (com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration); +} + +-keepclassmembers class com.badlogic.gdx.physics.box2d.World { + boolean contactFilter(long, long); + void beginContact(long); + void endContact(long); + void preSolve(long, long); + void postSolve(long, long); + boolean reportFixture(long); + float reportRayFixture(long, float, float, float, float, float); +} diff --git a/android/project.properties b/android/project.properties new file mode 100644 index 0000000..3fefa92 --- /dev/null +++ b/android/project.properties @@ -0,0 +1,9 @@ +# This file is used by the Eclipse ADT plugin. It is unnecessary for IDEA and Android Studio projects, which +# configure Proguard and the Android target via the build.gradle file. + +# To enable ProGuard to work with Eclipse ADT, uncomment this (available properties: sdk.dir, user.home) +# and ensure proguard.jar in the Android SDK is up to date (or alternately reduce the android target to 23 or lower): +# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-rules.pro + +# Project target. +target=android-19 diff --git a/android/res/drawable-anydpi-v26/ic_launcher.xml b/android/res/drawable-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6c7313a --- /dev/null +++ b/android/res/drawable-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/android/res/drawable-anydpi-v26/ic_launcher_foreground.xml b/android/res/drawable-anydpi-v26/ic_launcher_foreground.xml new file mode 100644 index 0000000..5916ee8 --- /dev/null +++ b/android/res/drawable-anydpi-v26/ic_launcher_foreground.xml @@ -0,0 +1,40 @@ + + + + + + + + + diff --git a/android/res/drawable-hdpi/ic_launcher.png b/android/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ab95d20337f137fa7ac46efcb5409beac18f8f7b GIT binary patch literal 1929 zcmV;42X^?0P)M!{c(%CuR$A8Y8>o>>ZAtWDI1^zi;91}< z_IUlBci{Qwp{NM{_(LzQATbG)mj|a$!?0ocWn8(EN@?j+y}s}2)l~NH|2gFKNt58* zIhZ*U>gx34i~Pt!FnTncJsX=i0Bvo0L$GM>d*&G>Qf{u63qVt#Aw$%FZO|Zn$EJAl zN%-n3$j;Wgzt;lw?F%PPs8R5vf(Z2QuXk^+1=_h2#*Wo<<_49OFmWPWy{dPAuLN4S z5LT|#bL0lQcf*VsaQn7?8Bq(AnF;0P`i?>dpxI4?yRW?+ii=_OYPf%2ulyiUck>^8 zq{cjUGjgPt!ou5BRb}Au^ojU;%Mu0;ZezuYh90kbJg|5%96M%Ph>=IqPd{yTZl!Cr zwaAz;_D(gTs^G=Nkd$QC1966`Dz(OR`Ley`Mil6YCt&GPd!5?NfdepYTI|z`o`@*W zvSpBxV!vZM5P=Urgg4%BZdo>BBfWUBGmc}$=Tk$DLx-I86IP%RBh;)o-ne-a7A%18 zzH{DJ*jKEe!1(}r%MU-mi!YiH2OtEaUhI9sV*hn?breH=BWgRcp#)eA|}J=Bqc?E zjmQZ?hH~$o$uK%uy;`k#XJ)$NzdIoXYHBhWMptIegbNqcRL5;X3UuR!$uJ&f^k}$r z38qhXH;#}3)z!Jz4h6}|Qa#$6Z@L#lNP#>amHy^7NlCDGui7x^6M4zncEa`-re@61 zux1T>{&{B}qbb4)boQ*FD5B(*S5)I|a*h~Qpo$7pVMNcEF`WzaCI~Cg_3QEVngz+u zR<+y2WwyE#2cbi9GVI$2rKOIKyu)uCW@RCF@4CM!7|sqKR%w8t{ttQ<<;LM( zf2k)G&lDBG`SU6l$Zn#loFygZmpXgP*s-ed*3Fd+MN|Uaya}ItVy|N-7&1gP-i3v> z78_j}aC$mYU+;c<6KyK+h7E{i8A@INxN`^Ie%qc$;xv{8>({HcGdVf7vU=4)9zXtQ zylO#~E`>8^^b#uqa-JqpKKTlC> z4BFVJK8!Q-VOwlmy9Tpnsqvf++Jp3(8kjm2YHM{%aGvUFm^@hxQ*?=G7E@cRX4U7< z$5M(joIb6@xpgbHa$=t5{rM-n^pe`oa(jsu)Hkl1H>=bg-Pfuc(G3)%vDvecx;pm; zh&46HlqvR3R&5mskbeD;O`FvBq^5-Nc#w7LkiLEGpUvAYP|yYqLbh*5nwy;yrl|?p zxDgpR(B9aM2o$umG~}(fkjhG=y*+kO{C?!j8D#l#C)R*^6v*#^O%6KhTC0{VQ{T5< zz8qclzR!nz|GoOee901IzyRmtR8}J3zhgmLH5|`}LgVRDiHYjFv+QhjG(~V?>Gi4} zsG&h^Uk!9(l8z&~x*zgZ3W2rIM&}`Kagqz? z7#YBG0xt(3S-|=j_#k-5TMs>#jH2r?frirsOw;ZGse{CmsAB@VtaSYiwpV_HTl0u> P00000NkvXXu0mjfN+FM2 literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_launcher.png b/android/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4513ce17f737d705e6b06dfbbb55071262e0a996 GIT binary patch literal 1208 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 m;R70hI^Z}^2F8#JCI1b{X%K2q;X0d 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 + + #FFFFFFFF + diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml new file mode 100644 index 0000000..e1b8dd7 --- /dev/null +++ b/android/res/values/strings.xml @@ -0,0 +1,6 @@ + + + + pac-dude + + diff --git a/android/res/values/styles.xml b/android/res/values/styles.xml new file mode 100644 index 0000000..3f00fc5 --- /dev/null +++ b/android/res/values/styles.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/android/src/com/me/pacman/AndroidLauncher.java b/android/src/com/me/pacman/AndroidLauncher.java new file mode 100644 index 0000000..8fc295d --- /dev/null +++ b/android/src/com/me/pacman/AndroidLauncher.java @@ -0,0 +1,17 @@ +package com.me.pacman; + +import android.os.Bundle; + +import com.badlogic.gdx.backends.android.AndroidApplication; +import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; +import com.me.pacman.PacDude; + +public class AndroidLauncher extends AndroidApplication { + @Override + protected void onCreate (Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); + + initialize(new PacDude(), config); + } +} diff --git a/build.gradle b/build.gradle index e14d98a..191d342 100644 --- a/build.gradle +++ b/build.gradle @@ -10,8 +10,7 @@ buildscript { google() } dependencies { - - + classpath 'com.android.tools.build:gradle:3.4.1' } } @@ -49,6 +48,28 @@ project(":desktop") { } } +project(":android") { + apply plugin: "android" + + configurations { natives } + + dependencies { + implementation project(":core") + 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-arm64-v8a" + natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" + natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64" + api "com.badlogicgames.gdx:gdx-freetype:$gdxVersion" + natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi" + natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a" + natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a" + natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86" + natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64" + } +} + project(":core") { apply plugin: "java-library" diff --git a/desktop/build.gradle b/desktop/build.gradle index 9a98842..275b6e7 100644 --- a/desktop/build.gradle +++ b/desktop/build.gradle @@ -2,10 +2,10 @@ apply plugin: "java" sourceCompatibility = 1.7 sourceSets.main.java.srcDirs = [ "src/" ] -sourceSets.main.resources.srcDirs = ["../core/assets"] +sourceSets.main.resources.srcDirs = ["../android/assets"] project.ext.mainClassName = "com.me.pacman.desktop.DesktopLauncher" -project.ext.assetsDir = new File("../core/assets") +project.ext.assetsDir = new File("../android/assets") task run(dependsOn: classes, type: JavaExec) { main = project.mainClassName diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 38f14c1..f4d7b2b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Dec 24 14:05:31 GET 2019 -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..971f78e --- /dev/null +++ b/icon.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/settings.gradle b/settings.gradle index 74fc652..e6a9599 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include 'desktop', 'core' \ No newline at end of file +include 'desktop', 'android', 'core'