buildscript {

    ext.kotlinVersion = '1.3.50'

    repositories {
        // Chinese mirrors for quicker loading for chinese devs - uncomment if you're chinese
//        maven{ url 'https://maven.aliyun.com/repository/jcenter'}
//        maven{ url 'https://maven.aliyun.com/repository/google'}
//        maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
//        maven{ url 'https://maven.aliyun.com/repository/public'}
        google()
        mavenLocal()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        jcenter()
        maven{ url 'https://jitpack.io' } // for the anuken packr
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
        classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
        classpath 'com.android.tools.build:gradle:3.5.3'
        classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.1'

        // This is for wrapping the .jar file into a standalone executable
        classpath "com.github.anuken:packr:-SNAPSHOT"
    }
}

allprojects {
    apply plugin: "eclipse"
    apply plugin: "idea"

    version = '1.0.1'
    ext {
        appName = "Unciv"
        gdxVersion = '1.9.10'
        roboVMVersion = '2.3.1'
        box2DLightsVersion = '1.4'
        ashleyVersion = '1.7.0'
        aiVersion = '1.8.0'
    }

    repositories {
        // Chinese mirrors for quicker loading for chinese devs
        maven{ url 'https://maven.aliyun.com/repository/jcenter'}
        maven{ url 'https://maven.aliyun.com/repository/google'}
        maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
        maven{ url 'https://maven.aliyun.com/repository/public'}
        google()
        jcenter()
        mavenLocal()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        maven { url "https://oss.sonatype.org/content/repositories/releases/" }
        maven{ url 'https://jitpack.io' } // for java-discord-rpc
    }
}

project(":desktop") {
    apply plugin: "kotlin"

    dependencies {
        implementation project(":core")
        implementation "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        implementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        implementation "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"

        implementation "com.badlogicgames.gdx:gdx-tools:$gdxVersion"  // This is for the TexturePacker class
        implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" // This iss so the JAR works with Kotlin

        implementation 'com.github.MinnDevelopment:java-discord-rpc:v2.0.1'

    }

}

project(":android") {
    apply plugin: "android"
    apply plugin: "kotlin-android"
    apply plugin: "kotlin-android-extensions"

    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-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
        implementation "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"
    }
}

project(":ios") {
    apply plugin: "kotlin"
    apply plugin: "robovm"


    dependencies {
        implementation project(":core")
        implementation "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
        implementation "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
        implementation "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
        implementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
        implementation "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"
    }
}


project(":core") {
    apply plugin: "kotlin"

    dependencies {
        implementation "com.badlogicgames.gdx:gdx:$gdxVersion"
        implementation "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
    }


    // Taken from https://github.com/TomGrill/gdx-testing
    project(":tests") {
        apply plugin: "java"
        apply plugin: "kotlin"

        test{
            workingDir= file("../android/assets")
        }

        sourceSets.test.java.srcDirs = ["src/"]

        dependencies {

            /**
             * If you do have some classes to test in os specific code you may want to uncomment
             * some of these lines.
             *
             * BUT: I recommend to create seperate test sub projects for each platform. Trust me :)
             *
             */


            implementation project(":core")

            implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"

            implementation "junit:junit:4.12"
            implementation "org.mockito:mockito-all:1.9.5"

            implementation "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion"
            implementation "com.badlogicgames.gdx:gdx:$gdxVersion"

            testImplementation 'junit:junit:4.12'
            testImplementation "org.mockito:mockito-all:1.9.5"
            testImplementation "io.mockk:mockk:1.9.3"

            testImplementation "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion"
            testImplementation "com.badlogicgames.gdx:gdx:$gdxVersion"
            testImplementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        }
    }}

tasks.eclipse.doLast {
    delete ".project"
}
