Unciv/build.gradle.kts

156 lines
6.0 KiB
Plaintext
Raw Normal View History

2023-09-06 16:11:55 +07:00
import com.unciv.build.BuildConfig.coroutinesVersion
import com.unciv.build.BuildConfig.gdxVersion
2023-09-06 16:11:55 +07:00
import com.unciv.build.BuildConfig.kotlinVersion
Multiplayer v2: networking stack, dependencies & API definition (#9589) * Added new ktor dependency for developing multiplayer API v2 * Added the api package, including endpoint implementations, cookie helpers, serializers and structs * Fixed a bunch of problems related to error handling * Fixed some API incompatibilities, added getFriends() method Rename the Api class to ApiV2Wrapper, added a chat room screen Replaced logging dependency, renamed the endpoint implementations * Dropped the extra logger to remove dependencies, added the APIv2 class * Restructured the project to make ApiV2 class the center * Improved chat handling, added server game detail caching Added a generic HTTP request wrapper that can retry requests easily Added a default handler to retry requests after session refreshing * Updated the API structs based on the new OpenAPI specifications Switched endpoint implementations to use the new 'request', updated WebSocket structs * Updated the auth helper, added the UncivNetworkException Fixed some more issues due to refactoring APIv2 handler Fixed some issues and some minor incompatibilities with the new API * Implemented the LobbyBrowserTable, added missing API endpoint Fixed login and auth issues in the main menu screen * Added new WebSocket structs for handling invites and friends Updated the API reference implementation * Added GET cache, allowed all WS messages to be Events, added missing endpoints Added func to dispose and refresh OnlineMultiplayer, only show set username for APIv2 * Reworked the ApiV2 class to improve WebSocket handling for every login Added small game fetch, fixed lobby start, some smaller fixes * Change the user ID after logging in to fix later in-game issues Attention: Afterwards, there is restoration of the previous player ID. Therefore, it won't be possible to revert back to APIv0 or APIv1 behavior easily (i.e., without saving the player ID before logging in the first time). Added serializer class for WebSocket's FriendshipEvent enum Fixed chat room access and cancelling friendships * Fixed WebSocket re-connecting, outsourced configs Updated the RegisterLoginPopup to ask if the user wants to use the new servers Implemented a self-contained API version check with side-effects Fixed various problems with WebSocket connections Don't show kick button for lobby owner, handle network issues during login * Added English translations for ApiStatusCode, fixed broken APIv1 games for uncivserver.xyz Fixed subpaths in baseUrl, added server settings button * Added WS-based Android turn checker, added a new event channel, fixed APIWrapper Added a logout hook, implemented ensureConnectedWebSocket Merge branch 'master' into dev * Throttle auto-reconnect for WS on Android in background, added reload notice for your turn popup Implemented real pinging with awaiting responses, fixed ping-related problems * Adapted new getAllChats API, added outstanding friend request list, improved styling * Added the ApiVersion enum and the ApiV2 storage emulator * Updated the APIv2 file storage emulator * Replaced all wildcard imports with named imports
2023-06-18 22:17:59 +07:00
import com.unciv.build.BuildConfig.ktorVersion
2024-09-06 01:50:18 +07:00
import com.unciv.build.BuildConfig.appVersion
buildscript {
repositories {
// Chinese mirrors for quicker loading for chinese devs - uncomment if you're chinese
// maven{ url = uri("https://maven.aliyun.com/repository/central") }
// maven{ url = uri("https://maven.aliyun.com/repository/google") }
// maven{ url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
mavenCentral()
google() // needed for com.android.tools.build:gradle
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
gradlePluginPortal()
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${com.unciv.build.BuildConfig.kotlinVersion}")
classpath("com.android.tools.build:gradle:8.5.0")
}
}
Multiplayer v2: networking stack, dependencies & API definition (#9589) * Added new ktor dependency for developing multiplayer API v2 * Added the api package, including endpoint implementations, cookie helpers, serializers and structs * Fixed a bunch of problems related to error handling * Fixed some API incompatibilities, added getFriends() method Rename the Api class to ApiV2Wrapper, added a chat room screen Replaced logging dependency, renamed the endpoint implementations * Dropped the extra logger to remove dependencies, added the APIv2 class * Restructured the project to make ApiV2 class the center * Improved chat handling, added server game detail caching Added a generic HTTP request wrapper that can retry requests easily Added a default handler to retry requests after session refreshing * Updated the API structs based on the new OpenAPI specifications Switched endpoint implementations to use the new 'request', updated WebSocket structs * Updated the auth helper, added the UncivNetworkException Fixed some more issues due to refactoring APIv2 handler Fixed some issues and some minor incompatibilities with the new API * Implemented the LobbyBrowserTable, added missing API endpoint Fixed login and auth issues in the main menu screen * Added new WebSocket structs for handling invites and friends Updated the API reference implementation * Added GET cache, allowed all WS messages to be Events, added missing endpoints Added func to dispose and refresh OnlineMultiplayer, only show set username for APIv2 * Reworked the ApiV2 class to improve WebSocket handling for every login Added small game fetch, fixed lobby start, some smaller fixes * Change the user ID after logging in to fix later in-game issues Attention: Afterwards, there is restoration of the previous player ID. Therefore, it won't be possible to revert back to APIv0 or APIv1 behavior easily (i.e., without saving the player ID before logging in the first time). Added serializer class for WebSocket's FriendshipEvent enum Fixed chat room access and cancelling friendships * Fixed WebSocket re-connecting, outsourced configs Updated the RegisterLoginPopup to ask if the user wants to use the new servers Implemented a self-contained API version check with side-effects Fixed various problems with WebSocket connections Don't show kick button for lobby owner, handle network issues during login * Added English translations for ApiStatusCode, fixed broken APIv1 games for uncivserver.xyz Fixed subpaths in baseUrl, added server settings button * Added WS-based Android turn checker, added a new event channel, fixed APIWrapper Added a logout hook, implemented ensureConnectedWebSocket Merge branch 'master' into dev * Throttle auto-reconnect for WS on Android in background, added reload notice for your turn popup Implemented real pinging with awaiting responses, fixed ping-related problems * Adapted new getAllChats API, added outstanding friend request list, improved styling * Added the ApiVersion enum and the ApiV2 storage emulator * Updated the APIv2 file storage emulator * Replaced all wildcard imports with named imports
2023-06-18 22:17:59 +07:00
// Fixes the error "Please initialize at least one Kotlin target in 'Unciv (:)'"
kotlin {
jvm()
}
// Plugins used for serialization of JSON for networking
plugins {
id("io.gitlab.arturbosch.detekt").version("1.23.0-RC3")
// For some weird reason, the *docker build* fails to recognize linking to the shared kotlinVersion in plugins
// This is *with* gradle 8.2 downloaded according the project specs, no idea what that's about
kotlin("multiplatform") version "1.9.24"
kotlin("plugin.serialization") version "1.9.24"
Multiplayer v2: networking stack, dependencies & API definition (#9589) * Added new ktor dependency for developing multiplayer API v2 * Added the api package, including endpoint implementations, cookie helpers, serializers and structs * Fixed a bunch of problems related to error handling * Fixed some API incompatibilities, added getFriends() method Rename the Api class to ApiV2Wrapper, added a chat room screen Replaced logging dependency, renamed the endpoint implementations * Dropped the extra logger to remove dependencies, added the APIv2 class * Restructured the project to make ApiV2 class the center * Improved chat handling, added server game detail caching Added a generic HTTP request wrapper that can retry requests easily Added a default handler to retry requests after session refreshing * Updated the API structs based on the new OpenAPI specifications Switched endpoint implementations to use the new 'request', updated WebSocket structs * Updated the auth helper, added the UncivNetworkException Fixed some more issues due to refactoring APIv2 handler Fixed some issues and some minor incompatibilities with the new API * Implemented the LobbyBrowserTable, added missing API endpoint Fixed login and auth issues in the main menu screen * Added new WebSocket structs for handling invites and friends Updated the API reference implementation * Added GET cache, allowed all WS messages to be Events, added missing endpoints Added func to dispose and refresh OnlineMultiplayer, only show set username for APIv2 * Reworked the ApiV2 class to improve WebSocket handling for every login Added small game fetch, fixed lobby start, some smaller fixes * Change the user ID after logging in to fix later in-game issues Attention: Afterwards, there is restoration of the previous player ID. Therefore, it won't be possible to revert back to APIv0 or APIv1 behavior easily (i.e., without saving the player ID before logging in the first time). Added serializer class for WebSocket's FriendshipEvent enum Fixed chat room access and cancelling friendships * Fixed WebSocket re-connecting, outsourced configs Updated the RegisterLoginPopup to ask if the user wants to use the new servers Implemented a self-contained API version check with side-effects Fixed various problems with WebSocket connections Don't show kick button for lobby owner, handle network issues during login * Added English translations for ApiStatusCode, fixed broken APIv1 games for uncivserver.xyz Fixed subpaths in baseUrl, added server settings button * Added WS-based Android turn checker, added a new event channel, fixed APIWrapper Added a logout hook, implemented ensureConnectedWebSocket Merge branch 'master' into dev * Throttle auto-reconnect for WS on Android in background, added reload notice for your turn popup Implemented real pinging with awaiting responses, fixed ping-related problems * Adapted new getAllChats API, added outstanding friend request list, improved styling * Added the ApiVersion enum and the ApiV2 storage emulator * Updated the APIv2 file storage emulator * Replaced all wildcard imports with named imports
2023-06-18 22:17:59 +07:00
}
allprojects {
apply(plugin = "eclipse")
apply(plugin = "idea")
2024-09-06 01:50:18 +07:00
version = appVersion
repositories {
// Chinese mirrors for quicker loading for chinese devs - uncomment if you're chinese
// maven{ url = uri("https://maven.aliyun.com/repository/central") }
2020-09-06 00:38:33 +07:00
// maven{ url = uri("https://maven.aliyun.com/repository/google") }
mavenCentral()
google()
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
maven { url = uri("https://oss.sonatype.org/content/repositories/releases/") }
maven { url = uri("https://jitpack.io") } // for java-discord-rpc
}
}
project(":desktop") {
apply(plugin = "kotlin")
dependencies {
"implementation"(project(":core"))
"implementation"("com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion")
"implementation"("com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop")
"implementation"("com.badlogicgames.gdx:gdx-tools:$gdxVersion") {
exclude("com.badlogicgames.gdx", "gdx-backend-lwjgl")
}
2024-09-06 01:50:18 +07:00
// Needed to display "Playing Unciv" in Discord
"implementation"("com.github.MinnDevelopment:java-discord-rpc:v2.0.1")
2024-09-06 01:50:18 +07:00
// Needed for Windows turn notifiers
"implementation"("net.java.dev.jna:jna:5.11.0")
"implementation"("net.java.dev.jna:jna-platform:5.11.0")
}
}
// For server-side
project(":server") {
apply(plugin = "kotlin")
dependencies {
// For server-side
"implementation"("io.ktor:ktor-server-core:1.6.8")
"implementation"("io.ktor:ktor-server-netty:1.6.8")
"implementation"("ch.qos.logback:logback-classic:1.2.5")
"implementation"("com.github.ajalt.clikt:clikt:3.4.0")
}
}
if (System.getenv("ANDROID_HOME") != null) {
project(":android") {
apply(plugin = "com.android.application")
apply(plugin = "kotlin-android")
val natives by configurations.creating
dependencies {
"implementation"(project(":core"))
// Not sure why I had to add this in for the upgrade to 1.12.1 to work, we can probably remove this later since it's contained in core
"implementation"("com.badlogicgames.gdx:gdx:$gdxVersion")
"implementation"("com.badlogicgames.gdx:gdx-backend-android:$gdxVersion")
"implementation"("org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion")
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")
}
}
}
project(":core") {
apply(plugin = "kotlin")
Multiplayer v2: networking stack, dependencies & API definition (#9589) * Added new ktor dependency for developing multiplayer API v2 * Added the api package, including endpoint implementations, cookie helpers, serializers and structs * Fixed a bunch of problems related to error handling * Fixed some API incompatibilities, added getFriends() method Rename the Api class to ApiV2Wrapper, added a chat room screen Replaced logging dependency, renamed the endpoint implementations * Dropped the extra logger to remove dependencies, added the APIv2 class * Restructured the project to make ApiV2 class the center * Improved chat handling, added server game detail caching Added a generic HTTP request wrapper that can retry requests easily Added a default handler to retry requests after session refreshing * Updated the API structs based on the new OpenAPI specifications Switched endpoint implementations to use the new 'request', updated WebSocket structs * Updated the auth helper, added the UncivNetworkException Fixed some more issues due to refactoring APIv2 handler Fixed some issues and some minor incompatibilities with the new API * Implemented the LobbyBrowserTable, added missing API endpoint Fixed login and auth issues in the main menu screen * Added new WebSocket structs for handling invites and friends Updated the API reference implementation * Added GET cache, allowed all WS messages to be Events, added missing endpoints Added func to dispose and refresh OnlineMultiplayer, only show set username for APIv2 * Reworked the ApiV2 class to improve WebSocket handling for every login Added small game fetch, fixed lobby start, some smaller fixes * Change the user ID after logging in to fix later in-game issues Attention: Afterwards, there is restoration of the previous player ID. Therefore, it won't be possible to revert back to APIv0 or APIv1 behavior easily (i.e., without saving the player ID before logging in the first time). Added serializer class for WebSocket's FriendshipEvent enum Fixed chat room access and cancelling friendships * Fixed WebSocket re-connecting, outsourced configs Updated the RegisterLoginPopup to ask if the user wants to use the new servers Implemented a self-contained API version check with side-effects Fixed various problems with WebSocket connections Don't show kick button for lobby owner, handle network issues during login * Added English translations for ApiStatusCode, fixed broken APIv1 games for uncivserver.xyz Fixed subpaths in baseUrl, added server settings button * Added WS-based Android turn checker, added a new event channel, fixed APIWrapper Added a logout hook, implemented ensureConnectedWebSocket Merge branch 'master' into dev * Throttle auto-reconnect for WS on Android in background, added reload notice for your turn popup Implemented real pinging with awaiting responses, fixed ping-related problems * Adapted new getAllChats API, added outstanding friend request list, improved styling * Added the ApiVersion enum and the ApiV2 storage emulator * Updated the APIv2 file storage emulator * Replaced all wildcard imports with named imports
2023-06-18 22:17:59 +07:00
// Serialization features (especially JSON)
apply(plugin = "kotlinx-serialization")
dependencies {
"implementation"("com.badlogicgames.gdx:gdx:$gdxVersion")
"implementation"("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
"implementation"("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
2023-06-04 03:04:24 +07:00
Multiplayer v2: networking stack, dependencies & API definition (#9589) * Added new ktor dependency for developing multiplayer API v2 * Added the api package, including endpoint implementations, cookie helpers, serializers and structs * Fixed a bunch of problems related to error handling * Fixed some API incompatibilities, added getFriends() method Rename the Api class to ApiV2Wrapper, added a chat room screen Replaced logging dependency, renamed the endpoint implementations * Dropped the extra logger to remove dependencies, added the APIv2 class * Restructured the project to make ApiV2 class the center * Improved chat handling, added server game detail caching Added a generic HTTP request wrapper that can retry requests easily Added a default handler to retry requests after session refreshing * Updated the API structs based on the new OpenAPI specifications Switched endpoint implementations to use the new 'request', updated WebSocket structs * Updated the auth helper, added the UncivNetworkException Fixed some more issues due to refactoring APIv2 handler Fixed some issues and some minor incompatibilities with the new API * Implemented the LobbyBrowserTable, added missing API endpoint Fixed login and auth issues in the main menu screen * Added new WebSocket structs for handling invites and friends Updated the API reference implementation * Added GET cache, allowed all WS messages to be Events, added missing endpoints Added func to dispose and refresh OnlineMultiplayer, only show set username for APIv2 * Reworked the ApiV2 class to improve WebSocket handling for every login Added small game fetch, fixed lobby start, some smaller fixes * Change the user ID after logging in to fix later in-game issues Attention: Afterwards, there is restoration of the previous player ID. Therefore, it won't be possible to revert back to APIv0 or APIv1 behavior easily (i.e., without saving the player ID before logging in the first time). Added serializer class for WebSocket's FriendshipEvent enum Fixed chat room access and cancelling friendships * Fixed WebSocket re-connecting, outsourced configs Updated the RegisterLoginPopup to ask if the user wants to use the new servers Implemented a self-contained API version check with side-effects Fixed various problems with WebSocket connections Don't show kick button for lobby owner, handle network issues during login * Added English translations for ApiStatusCode, fixed broken APIv1 games for uncivserver.xyz Fixed subpaths in baseUrl, added server settings button * Added WS-based Android turn checker, added a new event channel, fixed APIWrapper Added a logout hook, implemented ensureConnectedWebSocket Merge branch 'master' into dev * Throttle auto-reconnect for WS on Android in background, added reload notice for your turn popup Implemented real pinging with awaiting responses, fixed ping-related problems * Adapted new getAllChats API, added outstanding friend request list, improved styling * Added the ApiVersion enum and the ApiV2 storage emulator * Updated the APIv2 file storage emulator * Replaced all wildcard imports with named imports
2023-06-18 22:17:59 +07:00
"implementation"("io.ktor:ktor-client-core:$ktorVersion")
"implementation"("io.ktor:ktor-client-cio:$ktorVersion")
"implementation"("io.ktor:ktor-client-websockets:$ktorVersion")
// Gzip transport encoding
"implementation"("io.ktor:ktor-client-encoding:$ktorVersion")
"implementation"("io.ktor:ktor-client-content-negotiation:$ktorVersion")
// JSON serialization and de-serialization
"implementation"("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
}
// Taken from https://github.com/TomGrill/gdx-testing
project(":tests") {
apply(plugin = "java")
apply(plugin = "kotlin")
dependencies {
"implementation"(project(":core"))
"implementation"("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
"implementation"("junit:junit:4.13.2")
2024-09-06 01:50:18 +07:00
"implementation"("org.mockito:mockito-core:5.13.0")
2023-11-05 04:03:47 +07:00
"implementation"("com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion")
"implementation"("com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop")
"implementation"("com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion")
"implementation"("com.badlogicgames.gdx:gdx:$gdxVersion")
}
}
2020-09-06 00:38:33 +07:00
}