├── .gitignore ├── .vscode └── tasks.json ├── README.md ├── android ├── AndroidManifest.xml ├── assets │ └── badlogic.jpg ├── build.gradle ├── ic_launcher-web.png ├── proguard-project.txt ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ ├── drawable-xxhdpi │ │ └── ic_launcher.png │ └── values │ │ ├── strings.xml │ │ └── styles.xml └── src │ └── gdx │ └── scala │ └── demo │ └── android │ └── AndroidLauncher.java ├── build.gradle ├── core ├── build.gradle └── src │ └── gdx │ └── scala │ └── demo │ └── GdxScalaDemoGame.scala ├── desktop ├── build.gradle └── src │ └── gdx │ └── scala │ └── demo │ └── desktop │ └── DesktopLauncher.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── ios ├── Info.plist.xml ├── build.gradle ├── data │ ├── Default-375w-667h@2x.png │ ├── Default-414w-736h@3x.png │ ├── Default-568h@2x.png │ ├── Default.png │ ├── Default@2x.png │ ├── Default@2x~ipad.png │ ├── Default~ipad.png │ ├── Icon-72.png │ ├── Icon-72@2x.png │ ├── Icon.png │ └── Icon@2x.png ├── robovm.properties ├── robovm.xml └── src │ └── gdx │ └── scala │ └── demo │ └── IOSLauncher.java └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | ## Java 2 | 3 | *.class 4 | *.war 5 | *.ear 6 | hs_err_pid* 7 | 8 | ## GWT 9 | war/ 10 | html/war/gwt_bree/ 11 | html/gwt-unitCache/ 12 | .apt_generated/ 13 | html/war/WEB-INF/deploy/ 14 | html/war/WEB-INF/classes/ 15 | .gwt/ 16 | gwt-unitCache/ 17 | www-test/ 18 | .gwt-tmp/ 19 | 20 | ## Android Studio and Intellij and Android in general 21 | android/libs/armeabi/ 22 | android/libs/armeabi-v7a/ 23 | android/libs/x86/ 24 | android/gen/ 25 | .idea/ 26 | *.ipr 27 | *.iws 28 | *.iml 29 | out/ 30 | com_crashlytics_export_strings.xml 31 | 32 | ## Eclipse 33 | .classpath 34 | .project 35 | .metadata 36 | **/bin/ 37 | tmp/ 38 | *.tmp 39 | *.bak 40 | *.swp 41 | *~.nib 42 | local.properties 43 | .settings/ 44 | .loadpath 45 | .externalToolBuilders/ 46 | *.launch 47 | 48 | ## NetBeans 49 | **/nbproject/private/ 50 | build/ 51 | nbbuild/ 52 | dist/ 53 | nbdist/ 54 | nbactions.xml 55 | nb-configuration.xml 56 | 57 | ## Gradle 58 | 59 | .gradle 60 | gradle-app.setting 61 | build/ 62 | 63 | ## OS Specific 64 | .DS_Store 65 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // Available variables which can be used inside of strings. 2 | // ${workspaceRoot}: the root folder of the team 3 | // ${file}: the current opened file 4 | // ${fileBasename}: the current opened file's basename 5 | // ${fileDirname}: the current opened file's dirname 6 | // ${fileExtname}: the current opened file's extension 7 | // ${cwd}: the current working directory of the spawned process 8 | 9 | // A task runner that calls the Typescript compiler (tsc) and 10 | // Compiles a HelloWorld.ts program 11 | { 12 | "version": "0.1.0", 13 | 14 | // The command is tsc. Assumes that tsc has been installed using npm install -g typescript 15 | "command": "./gradlew", 16 | 17 | // The command is a shell script 18 | "isShellCommand": true, 19 | 20 | // Show the output window only if unrecognized errors occur. 21 | "showOutput": "always", 22 | 23 | // args is the HelloWorld program to compile. 24 | "args": ["build"], 25 | 26 | // use the standard tsc problem matcher to find compile problems 27 | // in the output. 28 | "problemMatcher": "$tsc" 29 | } 30 | 31 | // A task runner that calls the Typescript compiler (tsc) and 32 | // compiles based on a tsconfig.json file that is present in 33 | // the root of the folder open in VSCode 34 | /* 35 | { 36 | "version": "0.1.0", 37 | 38 | // The command is tsc. Assumes that tsc has been installed using npm install -g typescript 39 | "command": "tsc", 40 | 41 | // The command is a shell script 42 | "isShellCommand": true, 43 | 44 | // Show the output window only if unrecognized errors occur. 45 | "showOutput": "silent", 46 | 47 | // Tell the tsc compiler to use the tsconfig.json from the open folder. 48 | "args": ["-p", "."], 49 | 50 | // use the standard tsc problem matcher to find compile problems 51 | // in the output. 52 | "problemMatcher": "$tsc" 53 | } 54 | */ 55 | 56 | // A task runner configuration for gulp. Gulp provides a less task 57 | // which compiles less to css. 58 | /* 59 | { 60 | "version": "0.1.0", 61 | "command": "gulp", 62 | "isShellCommand": true, 63 | "tasks": [ 64 | { 65 | "taskName": "less", 66 | // Make this the default build command. 67 | "isBuildCommand": true, 68 | // Show the output window only if unrecognized errors occur. 69 | "showOutput": "silent", 70 | // Use the standard less compilation problem matcher. 71 | "problemMatcher": "$lessCompile" 72 | } 73 | ] 74 | } 75 | */ 76 | 77 | // Uncomment the following section to use jake to build a workspace 78 | // cloned from https://github.com/Microsoft/TypeScript.git 79 | /* 80 | { 81 | "version": "0.1.0", 82 | // Task runner is jake 83 | "command": "jake", 84 | // Need to be executed in shell / cmd 85 | "isShellCommand": true, 86 | "showOutput": "silent", 87 | "tasks": [ 88 | { 89 | // TS build command is local. 90 | "taskName": "local", 91 | // Make this the default build command. 92 | "isBuildCommand": true, 93 | // Show the output window only if unrecognized errors occur. 94 | "showOutput": "silent", 95 | // Use the redefined Typescript output problem matcher. 96 | "problemMatcher": [ 97 | "$tsc" 98 | ] 99 | } 100 | ] 101 | } 102 | */ 103 | 104 | // Uncomment the section below to use msbuild and generate problems 105 | // for csc, cpp, tsc and vb. The configuration assumes that msbuild 106 | // is available on the path and a solution file exists in the 107 | // workspace folder root. 108 | /* 109 | { 110 | "version": "0.1.0", 111 | "command": "msbuild", 112 | "args": [ 113 | // Ask msbuild to generate full paths for file names. 114 | "/property:GenerateFullPaths=true" 115 | ], 116 | "taskSelector": "/t:", 117 | "showOutput": "silent", 118 | "tasks": [ 119 | { 120 | "taskName": "build", 121 | // Show the output window only if unrecognized errors occur. 122 | "showOutput": "silent", 123 | // Use the standard MS compiler pattern to detect errors, warnings 124 | // and infos in the output. 125 | "problemMatcher": "$msCompile" 126 | } 127 | ] 128 | } 129 | */ 130 | 131 | // Uncomment the following section to use msbuild which compiles Typescript 132 | // and less files. 133 | /* 134 | { 135 | "version": "0.1.0", 136 | "command": "msbuild", 137 | "args": [ 138 | // Ask msbuild to generate full paths for file names. 139 | "/property:GenerateFullPaths=true" 140 | ], 141 | "taskSelector": "/t:", 142 | "showOutput": "silent", 143 | "tasks": [ 144 | { 145 | "taskName": "build", 146 | // Show the output window only if unrecognized errors occur. 147 | "showOutput": "silent", 148 | // Use the standard MS compiler pattern to detect errors, warnings 149 | // and infos in the output. 150 | "problemMatcher": [ 151 | "$msCompile", 152 | "$lessCompile" 153 | ] 154 | } 155 | ] 156 | } 157 | */ 158 | // A task runner example that defines a problemMatcher inline instead of using 159 | // a predfined one. 160 | /* 161 | { 162 | "version": "0.1.0", 163 | "command": "tsc", 164 | "isShellCommand": true, 165 | "args": ["HelloWorld.ts"], 166 | "showOutput": "silent", 167 | "problemMatcher": { 168 | // The problem is owned by the typescript language service. Ensure that the problems 169 | // are merged with problems produced by Visual Studio's language service. 170 | "owner": "typescript", 171 | // The file name for reported problems is relative to the current working directory. 172 | "fileLocation": ["relative", "${cwd}"], 173 | // The actual pattern to match problems in the output. 174 | "pattern": { 175 | // The regular expression. Matches HelloWorld.ts(2,10): error TS2339: Property 'logg' does not exist on type 'Console'. 176 | "regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$", 177 | // The match group that denotes the file containing the problem. 178 | "file": 1, 179 | // The match group that denotes the problem location. 180 | "location": 2, 181 | // The match group that denotes the problem's severity. Can be omitted. 182 | "severity": 3, 183 | // The match group that denotes the problem code. Can be omitted. 184 | "code": 4, 185 | // The match group that denotes the problem's message. 186 | "message": 5 187 | } 188 | } 189 | } 190 | */ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gdx-scala-demo 2 | 3 | Simple initial setup for a gdx project which uses gradle and scala. 4 | 5 | This project uses Scala only for the `:core` project only because that's less drift from the default setup. 6 | 7 | ## Setup 8 | 9 | Create a 'local.properties' which sets 'sdk.dir' to the path of your Android sdk. 10 | 11 | Example: `sdk.dir=/opt/android/sdk` 12 | 13 | ## Desktop 14 | 15 | Things should just work. 16 | 17 | ## Android and iOS 18 | 19 | Things should just work. If not, let's learn why and update this repo! :) 20 | 21 | In order to successfully build and run this app on the iOS Simulator I needed to increase the 22 | heap size used by gradle. Currently this is set to `2048` but as your app increases in size and 23 | scope you may have to increase this yet again. Pretty typical stuff for JVM development. 24 | 25 | ### Android 26 | 27 | I've currently left Proguard in a very "wide open" state (doesn't remove any part of libGDX). This 28 | is cray cray and you'll want to tone things down a notch. An example proguard (thanks @Tom-Ski): 29 | 30 | ``` 31 | -keep class com.badlogic.gdx.math.** { *; } 32 | 33 | -keep class com.badlogic.gdx.physics.bullet.collision.CollisionJNI { *; } 34 | -keep class com.badlogic.gdx.physics.bullet.dynamics.DynamicsJNI { *; } 35 | -keep class com.badlogic.gdx.physics.bullet.extras.ExtrasJNI { *; } 36 | -keep class com.badlogic.gdx.physics.bullet.linearmath.LinearMathJNI { *; } 37 | -keep class com.badlogic.gdx.physics.bullet.softbody.SoftbodyJNI { *; } 38 | 39 | -keep class com.badlogic.gdx.physics.bullet.collision.btBroadphaseAabbCallback { *; } 40 | -keep class com.badlogic.gdx.physics.bullet.collision.btBroadphaseRayCallback { *; } 41 | -keep class com.badlogic.gdx.physics.bullet.collision.btConvexTriangleCallback { *; } 42 | -keep class com.badlogic.gdx.physics.bullet.collision.btGhostPairCallback { *; } 43 | -keep class com.badlogic.gdx.physics.bullet.collision.btInternalTriangleIndexCallback { *; } 44 | -keep class com.badlogic.gdx.physics.bullet.collision.btNodeOverlapCallback { *; } 45 | -keep class com.badlogic.gdx.physics.bullet.collision.btOverlapCallback { *; } 46 | -keep class com.badlogic.gdx.physics.bullet.collision.btOverlapFilterCallback { *; } 47 | -keep class com.badlogic.gdx.physics.bullet.collision.btOverlappingPairCallback { *; } 48 | -keep class com.badlogic.gdx.physics.bullet.collision.btTriangleCallback { *; } 49 | -keep class com.badlogic.gdx.physics.bullet.collision.btTriangleConvexcastCallback { *; } 50 | -keep class com.badlogic.gdx.physics.bullet.collision.btTriangleRaycastCallback { *; } 51 | -keep class com.badlogic.gdx.physics.bullet.collision.ContactCache { *; } 52 | -keep class com.badlogic.gdx.physics.bullet.collision.ContactListener { *; } 53 | -keep class com.badlogic.gdx.physics.bullet.collision.CustomCollisionDispatcher { *; } 54 | -keep class com.badlogic.gdx.physics.bullet.collision.LocalRayResult { *; } 55 | -keep class com.badlogic.gdx.physics.bullet.collision.LocalShapeInfo { *; } 56 | -keep class com.badlogic.gdx.physics.bullet.collision.RayResultCallback { *; } 57 | -keep class com.badlogic.gdx.physics.bullet.collision.ClosestRayResultCallback { *; } 58 | -keep class com.badlogic.gdx.physics.bullet.collision.AllHitsRayResultCallback { *; } 59 | -keep class com.badlogic.gdx.physics.bullet.collision.ConvexResultCallback { *; } 60 | -keep class com.badlogic.gdx.physics.bullet.collision.LocalConvexResult { *; } 61 | -keep class com.badlogic.gdx.physics.bullet.collision.ContactResultCallback { *; } 62 | 63 | -keep class com.badlogic.gdx.physics.bullet.dynamics.InternalTickCallback { *; } 64 | 65 | -keep class com.badlogic.gdx.physics.bullet.extras.btBulletWorldImporter { *; } 66 | 67 | -keep class com.badlogic.gdx.physics.bullet.linearmath.btIDebugDraw { *; } 68 | -keep class com.badlogic.gdx.physics.bullet.linearmath.btMotionState { *; } 69 | ``` 70 | -------------------------------------------------------------------------------- /android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 14 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /android/assets/badlogic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/android/assets/badlogic.jpg -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | android { 2 | buildToolsVersion "22.0.1" 3 | compileSdkVersion 22 4 | sourceSets { 5 | main { 6 | manifest.srcFile 'AndroidManifest.xml' 7 | java.srcDirs = ['src'] 8 | aidl.srcDirs = ['src'] 9 | renderscript.srcDirs = ['src'] 10 | res.srcDirs = ['res'] 11 | assets.srcDirs = ['assets'] 12 | jniLibs.srcDirs = ['libs'] 13 | } 14 | 15 | instrumentTest.setRoot('tests') 16 | } 17 | 18 | lintOptions { 19 | abortOnError false // make sure you're paying attention to the linter output! 20 | } 21 | 22 | // FIXME: How can we apply this simply for all builds? Copy-pasta makes me sad. 23 | buildTypes { 24 | release { 25 | minifyEnabled true 26 | proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 27 | proguardFile 'proguard-project.txt' 28 | } 29 | debug { 30 | minifyEnabled true 31 | proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 32 | proguardFile 'proguard-project.txt' 33 | } 34 | } 35 | } 36 | 37 | // called every time gradle gets executed, takes the native dependencies of 38 | // the natives configuration, and extracts them to the proper libs/ folders 39 | // so they get packed with the APK. 40 | task copyAndroidNatives() { 41 | file("libs/armeabi/").mkdirs(); 42 | file("libs/armeabi-v7a/").mkdirs(); 43 | file("libs/x86/").mkdirs(); 44 | 45 | configurations.natives.files.each { jar -> 46 | def outputDir = null 47 | if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") 48 | if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi") 49 | if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86") 50 | if(outputDir != null) { 51 | copy { 52 | from zipTree(jar) 53 | into outputDir 54 | include "*.so" 55 | } 56 | } 57 | } 58 | } 59 | 60 | task run(type: Exec) { 61 | def path 62 | def localProperties = project.file("../local.properties") 63 | if (localProperties.exists()) { 64 | Properties properties = new Properties() 65 | localProperties.withInputStream { instr -> 66 | properties.load(instr) 67 | } 68 | def sdkDir = properties.getProperty('sdk.dir') 69 | if (sdkDir) { 70 | path = sdkDir 71 | } else { 72 | path = "$System.env.ANDROID_HOME" 73 | } 74 | } else { 75 | path = "$System.env.ANDROID_HOME" 76 | } 77 | 78 | def adb = path + "/platform-tools/adb" 79 | commandLine "$adb", 'shell', 'am', 'start', '-n', 'gdx.scala.demo.android/gdx.scala.demo.android.AndroidLauncher' 80 | } 81 | 82 | // sets up the Android Eclipse project, using the old Ant based build. 83 | eclipse { 84 | // need to specify Java source sets explicitely, SpringSource Gradle Eclipse plugin 85 | // ignores any nodes added in classpath.file.withXml 86 | sourceSets { 87 | main { 88 | java.srcDirs "src", 'gen' 89 | } 90 | } 91 | 92 | jdt { 93 | sourceCompatibility = 1.6 94 | targetCompatibility = 1.6 95 | } 96 | 97 | classpath { 98 | plusConfigurations += [ project.configurations.compile ] 99 | containers 'com.android.ide.eclipse.adt.ANDROID_FRAMEWORK', 'com.android.ide.eclipse.adt.LIBRARIES' 100 | } 101 | 102 | project { 103 | name = appName + "-android" 104 | natures 'com.android.ide.eclipse.adt.AndroidNature' 105 | buildCommands.clear(); 106 | buildCommand "com.android.ide.eclipse.adt.ResourceManagerBuilder" 107 | buildCommand "com.android.ide.eclipse.adt.PreCompilerBuilder" 108 | buildCommand "org.eclipse.jdt.core.javabuilder" 109 | buildCommand "com.android.ide.eclipse.adt.ApkBuilder" 110 | } 111 | } 112 | 113 | // sets up the Android Idea project, using the old Ant based build. 114 | idea { 115 | module { 116 | sourceDirs += file("src"); 117 | scopes = [ COMPILE: [plus:[project.configurations.compile]]] 118 | 119 | iml { 120 | withXml { 121 | def node = it.asNode() 122 | def builder = NodeBuilder.newInstance(); 123 | builder.current = node; 124 | builder.component(name: "FacetManager") { 125 | facet(type: "android", name: "Android") { 126 | configuration { 127 | option(name: "UPDATE_PROPERTY_FILES", value:"true") 128 | } 129 | } 130 | } 131 | } 132 | } 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /android/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/android/ic_launcher-web.png -------------------------------------------------------------------------------- /android/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | 22 | -verbose 23 | 24 | -dontwarn sun.misc.* 25 | -dontwarn java.lang.management.** 26 | -dontwarn java.beans.** 27 | 28 | -dontwarn android.support.** 29 | -dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication 30 | -dontwarn com.badlogic.gdx.utils.GdxBuild 31 | -dontwarn com.badlogic.gdx.physics.box2d.utils.Box2DBuild 32 | -dontwarn com.badlogic.gdx.jnigen.* 33 | 34 | -keep class com.badlogic.gdx.** 35 | 36 | -keepclassmembers class com.badlogic.gdx.** { 37 | *; 38 | } 39 | 40 | -keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* { 41 | (com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration); 42 | } 43 | 44 | -keepclassmembers class com.badlogic.gdx.physics.box2d.World { 45 | boolean contactFilter(long, long); 46 | void beginContact(long); 47 | void endContact(long); 48 | void preSolve(long, long); 49 | void postSolve(long, long); 50 | boolean reportFixture(long); 51 | float reportRayFixture(long, float, float, float, float, float); 52 | } 53 | -------------------------------------------------------------------------------- /android/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-19 15 | -------------------------------------------------------------------------------- /android/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/android/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/android/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/android/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/android/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | gdx-scala-demo 5 | 6 | 7 | -------------------------------------------------------------------------------- /android/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/src/gdx/scala/demo/android/AndroidLauncher.java: -------------------------------------------------------------------------------- 1 | package gdx.scala.demo.android; 2 | 3 | import android.os.Bundle; 4 | 5 | import com.badlogic.gdx.backends.android.AndroidApplication; 6 | import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; 7 | import gdx.scala.demo.GdxScalaDemoGame; 8 | 9 | public class AndroidLauncher extends AndroidApplication { 10 | @Override 11 | protected void onCreate (Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); 14 | initialize(new GdxScalaDemoGame(), config); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | mavenCentral() 4 | maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 5 | } 6 | dependencies { 7 | classpath 'com.android.tools.build:gradle:1.5.0' 8 | classpath 'org.robovm:robovm-gradle-plugin:1.12.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | apply plugin: "eclipse" 14 | apply plugin: "idea" 15 | 16 | version = '1.0' 17 | ext { 18 | appName = 'gdx-scala-demo' 19 | gdxVersion = '1.7.2' 20 | roboVMVersion = '1.12.0' 21 | box2DLightsVersion = '1.4' 22 | ashleyVersion = '1.7.0' 23 | aiVersion = '1.7.0' 24 | scalaVersion = '2.11.7' 25 | } 26 | 27 | repositories { 28 | mavenCentral() 29 | maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 30 | maven { url "https://oss.sonatype.org/content/repositories/releases/" } 31 | } 32 | } 33 | 34 | project(":desktop") { 35 | apply plugin: "java" 36 | 37 | 38 | dependencies { 39 | compile project(":core") 40 | compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion" 41 | compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" 42 | compile "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop" 43 | } 44 | } 45 | 46 | project(":android") { 47 | apply plugin: "android" 48 | 49 | configurations { natives } 50 | 51 | dependencies { 52 | compile project(":core") 53 | compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" 54 | natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" 55 | natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" 56 | natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" 57 | compile "com.badlogicgames.gdx:gdx-bullet:$gdxVersion" 58 | natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi" 59 | natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi-v7a" 60 | natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86" 61 | } 62 | } 63 | 64 | project(":ios") { 65 | apply plugin: "java" 66 | apply plugin: "robovm" 67 | 68 | 69 | dependencies { 70 | compile project(":core") 71 | compile "org.robovm:robovm-rt:$roboVMVersion" 72 | compile "org.robovm:robovm-cocoatouch:$roboVMVersion" 73 | compile "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion" 74 | compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios" 75 | compile "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios" 76 | } 77 | } 78 | 79 | project(":core") { 80 | apply plugin: "java" 81 | apply plugin: "scala" 82 | 83 | dependencies { 84 | compile "org.scala-lang:scala-library:$scalaVersion" 85 | compile "com.badlogicgames.gdx:gdx:$gdxVersion" 86 | compile "com.badlogicgames.gdx:gdx-bullet:$gdxVersion" 87 | } 88 | } 89 | 90 | tasks.eclipse.doLast { 91 | delete ".project" 92 | } 93 | 94 | task createWrapper(type: Wrapper) { gradleVersion = "2.9" } 95 | -------------------------------------------------------------------------------- /core/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "java" 2 | apply plugin: "scala" 3 | 4 | sourceCompatibility = 1.6 5 | [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' 6 | 7 | sourceSets.main.java.srcDirs = [ "src/" ] 8 | sourceSets.main.scala.srcDirs = [ "src/" ] 9 | 10 | 11 | eclipse.project { 12 | name = appName + "-core" 13 | } 14 | -------------------------------------------------------------------------------- /core/src/gdx/scala/demo/GdxScalaDemoGame.scala: -------------------------------------------------------------------------------- 1 | package gdx.scala.demo 2 | 3 | import com.badlogic.gdx.ApplicationAdapter 4 | import com.badlogic.gdx.Gdx 5 | import com.badlogic.gdx.graphics.GL20 6 | import com.badlogic.gdx.graphics.Texture 7 | import com.badlogic.gdx.graphics.g2d.SpriteBatch 8 | import com.badlogic.gdx.physics.bullet.Bullet 9 | 10 | class GdxScalaDemoGame extends ApplicationAdapter { 11 | private[demo] var batch: SpriteBatch = null 12 | private[demo] var img: Texture = null 13 | 14 | override def create() { 15 | Bullet.init() 16 | batch = new SpriteBatch 17 | img = new Texture("badlogic.jpg") 18 | } 19 | 20 | override def render() { 21 | Gdx.gl.glClearColor(1, 0, 0, 1) 22 | Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) 23 | batch.begin() 24 | batch.draw(img, 0, 0) 25 | batch.end() 26 | } 27 | } -------------------------------------------------------------------------------- /desktop/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "java" 2 | 3 | sourceCompatibility = 1.6 4 | sourceSets.main.java.srcDirs = [ "src/" ] 5 | 6 | project.ext.mainClassName = "gdx.scala.demo.desktop.DesktopLauncher" 7 | project.ext.assetsDir = new File("../android/assets"); 8 | 9 | task run(dependsOn: classes, type: JavaExec) { 10 | main = project.mainClassName 11 | classpath = sourceSets.main.runtimeClasspath 12 | standardInput = System.in 13 | workingDir = project.assetsDir 14 | ignoreExitValue = true 15 | } 16 | 17 | task dist(type: Jar) { 18 | from files(sourceSets.main.output.classesDir) 19 | from files(sourceSets.main.output.resourcesDir) 20 | from {configurations.compile.collect {zipTree(it)}} 21 | from files(project.assetsDir); 22 | 23 | manifest { 24 | attributes 'Main-Class': project.mainClassName 25 | } 26 | } 27 | 28 | dist.dependsOn classes 29 | 30 | eclipse { 31 | project { 32 | name = appName + "-desktop" 33 | linkedResource name: 'assets', type: '2', location: 'PARENT-1-PROJECT_LOC/android/assets' 34 | } 35 | } 36 | 37 | task afterEclipseImport(description: "Post processing after project generation", group: "IDE") { 38 | doLast { 39 | def classpath = new XmlParser().parse(file(".classpath")) 40 | new Node(classpath, "classpathentry", [ kind: 'src', path: 'assets' ]); 41 | def writer = new FileWriter(file(".classpath")) 42 | def printer = new XmlNodePrinter(new PrintWriter(writer)) 43 | printer.setPreserveWhitespace(true) 44 | printer.print(classpath) 45 | } 46 | } -------------------------------------------------------------------------------- /desktop/src/gdx/scala/demo/desktop/DesktopLauncher.java: -------------------------------------------------------------------------------- 1 | package gdx.scala.demo.desktop; 2 | 3 | import com.badlogic.gdx.backends.lwjgl.LwjglApplication; 4 | import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; 5 | import gdx.scala.demo.GdxScalaDemoGame; 6 | 7 | public class DesktopLauncher { 8 | public static void main (String[] arg) { 9 | LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); 10 | new LwjglApplication(new GdxScalaDemoGame(), config); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.daemon=true 2 | org.gradle.jvmargs=-Xms128m -Xmx2048m 3 | org.gradle.configureondemand=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Sep 21 13:08:26 CEST 2013 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=http\://services.gradle.org/distributions/gradle-2.4-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # For Cygwin, ensure paths are in UNIX format before anything is touched. 46 | if $cygwin ; then 47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 48 | fi 49 | 50 | # Attempt to set APP_HOME 51 | # Resolve links: $0 may be a link 52 | PRG="$0" 53 | # Need this for relative symlinks. 54 | while [ -h "$PRG" ] ; do 55 | ls=`ls -ld "$PRG"` 56 | link=`expr "$ls" : '.*-> \(.*\)$'` 57 | if expr "$link" : '/.*' > /dev/null; then 58 | PRG="$link" 59 | else 60 | PRG=`dirname "$PRG"`"/$link" 61 | fi 62 | done 63 | SAVED="`pwd`" 64 | cd "`dirname \"$PRG\"`/" >&- 65 | APP_HOME="`pwd -P`" 66 | cd "$SAVED" >&- 67 | 68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 69 | 70 | # Determine the Java command to use to start the JVM. 71 | if [ -n "$JAVA_HOME" ] ; then 72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 73 | # IBM's JDK on AIX uses strange locations for the executables 74 | JAVACMD="$JAVA_HOME/jre/sh/java" 75 | else 76 | JAVACMD="$JAVA_HOME/bin/java" 77 | fi 78 | if [ ! -x "$JAVACMD" ] ; then 79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 80 | 81 | Please set the JAVA_HOME variable in your environment to match the 82 | location of your Java installation." 83 | fi 84 | else 85 | JAVACMD="java" 86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 87 | 88 | Please set the JAVA_HOME variable in your environment to match the 89 | location of your Java installation." 90 | fi 91 | 92 | # Increase the maximum file descriptors if we can. 93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 94 | MAX_FD_LIMIT=`ulimit -H -n` 95 | if [ $? -eq 0 ] ; then 96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 97 | MAX_FD="$MAX_FD_LIMIT" 98 | fi 99 | ulimit -n $MAX_FD 100 | if [ $? -ne 0 ] ; then 101 | warn "Could not set maximum file descriptor limit: $MAX_FD" 102 | fi 103 | else 104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 105 | fi 106 | fi 107 | 108 | # For Darwin, add options to specify how the application appears in the dock 109 | if $darwin; then 110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 111 | fi 112 | 113 | # For Cygwin, switch paths to Windows format before running java 114 | if $cygwin ; then 115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 158 | function splitJvmOpts() { 159 | JVM_OPTS=("$@") 160 | } 161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 163 | 164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 165 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /ios/Info.plist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${app.name} 9 | CFBundleExecutable 10 | ${app.executable} 11 | CFBundleIdentifier 12 | ${app.id} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${app.name} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | ${app.version} 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | ${app.build} 25 | LSRequiresIPhoneOS 26 | 27 | UIViewControllerBasedStatusBarAppearance 28 | 29 | UIStatusBarHidden 30 | 31 | UIDeviceFamily 32 | 33 | 1 34 | 2 35 | 36 | UIRequiredDeviceCapabilities 37 | 38 | armv7 39 | opengles-2 40 | 41 | UISupportedInterfaceOrientations 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationLandscapeLeft 45 | UIInterfaceOrientationLandscapeRight 46 | 47 | CFBundleIcons 48 | 49 | CFBundlePrimaryIcon 50 | 51 | CFBundleIconFiles 52 | 53 | Icon 54 | Icon-72 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /ios/build.gradle: -------------------------------------------------------------------------------- 1 | sourceSets.main.java.srcDirs = [ "src/" ] 2 | 3 | sourceCompatibility = '1.7' 4 | [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' 5 | 6 | ext { 7 | mainClassName = "gdx.scala.demo.IOSLauncher" 8 | } 9 | 10 | launchIPhoneSimulator.dependsOn build 11 | launchIPadSimulator.dependsOn build 12 | launchIOSDevice.dependsOn build 13 | createIPA.dependsOn build 14 | 15 | 16 | eclipse.project { 17 | name = appName + "-ios" 18 | natures 'org.robovm.eclipse.RoboVMNature' 19 | } -------------------------------------------------------------------------------- /ios/data/Default-375w-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Default-375w-667h@2x.png -------------------------------------------------------------------------------- /ios/data/Default-414w-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Default-414w-736h@3x.png -------------------------------------------------------------------------------- /ios/data/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Default-568h@2x.png -------------------------------------------------------------------------------- /ios/data/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Default.png -------------------------------------------------------------------------------- /ios/data/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Default@2x.png -------------------------------------------------------------------------------- /ios/data/Default@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Default@2x~ipad.png -------------------------------------------------------------------------------- /ios/data/Default~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Default~ipad.png -------------------------------------------------------------------------------- /ios/data/Icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Icon-72.png -------------------------------------------------------------------------------- /ios/data/Icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Icon-72@2x.png -------------------------------------------------------------------------------- /ios/data/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Icon.png -------------------------------------------------------------------------------- /ios/data/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LOFI/gdx-scala-demo/a6684d9b8ba5a173a24d9002a1aa8d3d7ebf68dc/ios/data/Icon@2x.png -------------------------------------------------------------------------------- /ios/robovm.properties: -------------------------------------------------------------------------------- 1 | app.version=1.0 2 | app.id=gdx.scala.demo.IOSLauncher 3 | app.mainclass=gdx.scala.demo.IOSLauncher 4 | app.executable=IOSLauncher 5 | app.build=1 6 | app.name=gdx-scala-demo 7 | -------------------------------------------------------------------------------- /ios/robovm.xml: -------------------------------------------------------------------------------- 1 | 2 | ${app.executable} 3 | ${app.mainclass} 4 | ios 5 | thumbv7 6 | ios 7 | Info.plist.xml 8 | 9 | 10 | ../android/assets 11 | 12 | ** 13 | 14 | true 15 | 16 | 17 | data 18 | 19 | 20 | 21 | com.badlogic.gdx.scenes.scene2d.ui.* 22 | com.badlogic.gdx.graphics.g3d.particles.** 23 | com.android.okhttp.HttpHandler 24 | com.android.okhttp.HttpsHandler 25 | com.android.org.conscrypt.** 26 | com.android.org.bouncycastle.jce.provider.BouncyCastleProvider 27 | com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings 28 | com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi 29 | com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std 30 | com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi 31 | com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL 32 | org.apache.harmony.security.provider.cert.DRLCertFactory 33 | org.apache.harmony.security.provider.crypto.CryptoProvider 34 | 35 | 36 | z 37 | 38 | 39 | UIKit 40 | OpenGLES 41 | QuartzCore 42 | CoreGraphics 43 | OpenAL 44 | AudioToolbox 45 | AVFoundation 46 | 47 | 48 | -------------------------------------------------------------------------------- /ios/src/gdx/scala/demo/IOSLauncher.java: -------------------------------------------------------------------------------- 1 | package gdx.scala.demo; 2 | 3 | import org.robovm.apple.foundation.NSAutoreleasePool; 4 | import org.robovm.apple.uikit.UIApplication; 5 | 6 | import com.badlogic.gdx.backends.iosrobovm.IOSApplication; 7 | import com.badlogic.gdx.backends.iosrobovm.IOSApplicationConfiguration; 8 | import gdx.scala.demo.GdxScalaDemoGame; 9 | 10 | public class IOSLauncher extends IOSApplication.Delegate { 11 | @Override 12 | protected IOSApplication createApplication() { 13 | IOSApplicationConfiguration config = new IOSApplicationConfiguration(); 14 | return new IOSApplication(new GdxScalaDemoGame(), config); 15 | } 16 | 17 | public static void main(String[] argv) { 18 | NSAutoreleasePool pool = new NSAutoreleasePool(); 19 | UIApplication.main(argv, null, IOSLauncher.class); 20 | pool.close(); 21 | } 22 | } -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include 'desktop', 'android', 'ios', 'core' --------------------------------------------------------------------------------