From 05d2689c7233207d2b76d327c3e17b338527bd2d Mon Sep 17 00:00:00 2001 From: LeHaine Date: Wed, 9 Mar 2022 16:55:07 -0500 Subject: [PATCH] init commit --- .gitignore | 64 ++++++ LICENSE | 21 ++ README.md | 51 +++++ build.gradle.kts | 20 ++ game/build.gradle.kts | 113 +++++++++++ game/src/androidMain/AndroidManifest.xml | 24 +++ .../kotlin/com/game/template/AndroidApp.kt | 6 + .../kotlin/com/game/template/AppActivity.kt | 19 ++ .../androidMain/res/drawable/ic_launcher.png | Bin 0 -> 40786 bytes game/src/androidMain/res/values/strings.xml | 4 + .../kotlin/com/game/template/Game.kt | 28 +++ .../jsMain/kotlin/com/game/template/JsApp.kt | 14 ++ game/src/jsMain/resources/index.html | 12 ++ .../kotlin/com/game/template/LwjglApp.kt | 15 ++ gradle.properties | 21 ++ gradle/libs.versions.toml | 20 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 ++++++++++++++++++ gradlew.bat | 89 +++++++++ settings.gradle.kts | 12 ++ 21 files changed, 723 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build.gradle.kts create mode 100644 game/build.gradle.kts create mode 100644 game/src/androidMain/AndroidManifest.xml create mode 100644 game/src/androidMain/kotlin/com/game/template/AndroidApp.kt create mode 100644 game/src/androidMain/kotlin/com/game/template/AppActivity.kt create mode 100644 game/src/androidMain/res/drawable/ic_launcher.png create mode 100644 game/src/androidMain/res/values/strings.xml create mode 100644 game/src/commonMain/kotlin/com/game/template/Game.kt create mode 100644 game/src/jsMain/kotlin/com/game/template/JsApp.kt create mode 100644 game/src/jsMain/resources/index.html create mode 100644 game/src/jvmMain/kotlin/com/game/template/LwjglApp.kt create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..250f267 --- /dev/null +++ b/.gitignore @@ -0,0 +1,64 @@ +# Temporary Files +*~ +.*.swp +.DS_STORE +desktop.ini +robovm-build/ +project.xcworkspace/ +xcuserdata/ +xcode/native/ +.gradle/ +build/ +bin/ +target/ +obj/ +out/ +classes/ +.gwt/ +gwt-unitCache/ +war/ +gen/ +gen-external-apklibs/ +armeabi/ +armeabi-v7a/ +arm64-v8a/ +linux32/ +linux64/ +windows32/ +windows64/ +macosx32/ +ios32/ +Debug/ +Release/ +x64/ +x86/ +x86_64/ +ipch/ +/dist + +*.a +*.a.tvos +*.dll +*.dll.mdb +*.userprefs +*.sdf +*.class +hs_err_pid* +Thumbs.db + +libgdx-*.zip +libgdx-*.zip.MD5 + +*.iml +/.idea/ + +/tmp/ + +#gradle wrapper +/local.properties +*.hprof + +.storage +.httpCache + +kotlin-js-store \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4a35067 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Colton Daily + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..609b77f --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +## A Starter Game Template for the LittleKt Game Framework + +This template repository contains a base project for creating games with [LittleKt](https://littlekt.com). It contains +the bare necessities to get a LittleKt project up and running. This includes the necessary plugins, dependencies and +source set structure. + +This project is set up to use all the available platforms that LittleKt currently supports: **JVM**, **Web**, and **Android**. +If a certain platform isn't needed, simply deleting the source directory and the source sets in +the `build.gradle.kts` file will get rid of it. + +## Usage + +Clone this repo and open up in IntelliJ to get started. Each platform target contains a class to execute for their +respective platform. + +### JVM + +**Running:** + +Run `LwjglApp` to execute on the desktop. + +**Deploying:** + +A custom deploy task is created specifically for JVM. Run the `package/packageFatJar` gradle task to create a fat +executable JAR. This task can be tinkered with in the `build.gradlek.kts` file. + +If and when the packages are renamed from `com.game.template.LwjglApp` to whatever, ensure to update the `jvm.mainClass` +property in the `gradle.properties` file to ensure that the `packageFatJar` task will work properly. + +### JS + +**Running:** + +Run the `other/jsRun` gradle task like any other **Kotlin/JS** project to run in development mode. + +**Deploying:** + +Run the `kotlin browser/jsBrowserDistribution` gradle task to create a distribution build. This build will require a +webserver in order to run. + +### Android + +**Running:** + +Run `AndroidApp` class under `src/androidMain/`. + +**Deploying:** + +To create a release build of the Android application, use the `Build/Generate Signed Bundle / APK...` menu option. This +will require knowledge on creating keys for signing the Android app. Going over how to do that is out of scope for this +repository. \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..7974c1e --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,20 @@ +buildscript { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } + dependencies { + classpath(libs.bundles.plugins) + } +} + +allprojects { + repositories { + google() + mavenCentral() + } + + group = "com.game.template" + version = "1.0" +} \ No newline at end of file diff --git a/game/build.gradle.kts b/game/build.gradle.kts new file mode 100644 index 0000000..667404e --- /dev/null +++ b/game/build.gradle.kts @@ -0,0 +1,113 @@ +import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType + +repositories { + maven(url = "https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven") +} + +plugins { + kotlin("multiplatform") + id("com.android.application") +} + +kotlin { + android() + jvm { + compilations { + val main by getting + + val mainClass = (findProperty("jvm.mainClass") as? String)?.plus("Kt") + ?: project.logger.log( + LogLevel.ERROR, + "Property 'jvm.mainClass' has either changed or has not been set. Check 'gradle.properties' and ensure it is properly set!" + ) + tasks { + register("copyResources") { + group = "package" + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + from(main.output.resourcesDir) + destinationDir = File("$buildDir/publish") + } + register("packageFatJar") { + group = "package" + archiveClassifier.set("all") + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + dependsOn(named("jvmJar")) + dependsOn(named("copyResources")) + manifest { + attributes["Main-Class"] = mainClass + } + destinationDirectory.set(File("$buildDir/publish/")) + from( + main.runtimeDependencyFiles.map { if (it.isDirectory) it else zipTree(it) }, + main.output.classesDirs + ) + doLast { + project.logger.lifecycle("[LittleKt] The packaged jar is available at: ${outputs.files.first().parent}") + } + } + } + } + compilations.all { + kotlinOptions.jvmTarget = "11" + } + testRuns["test"].executionTask.configure { + useJUnit() + } + } + js(KotlinJsCompilerType.IR) { + binaries.executable() + browser { + testTask { + useKarma { + useChromeHeadless() + } + } + } + + this.attributes.attribute( + KotlinPlatformType.attribute, + KotlinPlatformType.js + ) + + compilations.all { + kotlinOptions.sourceMap = true + } + } + + sourceSets { + val commonMain by getting { + dependencies { + implementation(libs.littlekt.core) + implementation(libs.kotlinx.coroutines.core) + } + } + val commonTest by getting { + dependencies { + implementation(kotlin("test")) + } + } + val jvmMain by getting + val jvmTest by getting + val jsMain by getting { + dependencies { + implementation(libs.kotlinx.html.js) + } + } + val jsTest by getting + val androidMain by getting + } +} + +android { + sourceSets["main"].apply { + manifest.srcFile("src/androidMain/AndroidManifest.xml") + assets.srcDirs("src/commonMain/resources") + } + compileSdk = (findProperty("android.compileSdk") as String).toInt() + + defaultConfig { + minSdk = (findProperty("android.minSdk") as String).toInt() + targetSdk = (findProperty("android.targetSdk") as String).toInt() + } +} \ No newline at end of file diff --git a/game/src/androidMain/AndroidManifest.xml b/game/src/androidMain/AndroidManifest.xml new file mode 100644 index 0000000..c1ff7a1 --- /dev/null +++ b/game/src/androidMain/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game/src/androidMain/kotlin/com/game/template/AndroidApp.kt b/game/src/androidMain/kotlin/com/game/template/AndroidApp.kt new file mode 100644 index 0000000..ef46392 --- /dev/null +++ b/game/src/androidMain/kotlin/com/game/template/AndroidApp.kt @@ -0,0 +1,6 @@ +package com.game.template + +import android.app.Application + + +class AndroidApp : Application() \ No newline at end of file diff --git a/game/src/androidMain/kotlin/com/game/template/AppActivity.kt b/game/src/androidMain/kotlin/com/game/template/AppActivity.kt new file mode 100644 index 0000000..756258d --- /dev/null +++ b/game/src/androidMain/kotlin/com/game/template/AppActivity.kt @@ -0,0 +1,19 @@ +package com.game.template + +import com.lehaine.littlekt.Context +import com.lehaine.littlekt.ContextListener +import com.lehaine.littlekt.LittleKtActivity +import com.lehaine.littlekt.LittleKtProps +import com.lehaine.littlekt.graphics.Color + +class AppActivity : LittleKtActivity() { + + override fun LittleKtProps.configureLittleKt() { + activity = this@AppActivity + backgroundColor = Color.DARK_GRAY + } + + override fun createContextListener(context: Context): ContextListener { + return Game(context) + } +} \ No newline at end of file diff --git a/game/src/androidMain/res/drawable/ic_launcher.png b/game/src/androidMain/res/drawable/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..51f69fb383b49ccdc18b89981af33adc86770e15 GIT binary patch literal 40786 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 literal 0 HcmV?d00001 diff --git a/game/src/androidMain/res/values/strings.xml b/game/src/androidMain/res/values/strings.xml new file mode 100644 index 0000000..f59d107 --- /dev/null +++ b/game/src/androidMain/res/values/strings.xml @@ -0,0 +1,4 @@ + + + LittleKt Game Tempalte + \ No newline at end of file diff --git a/game/src/commonMain/kotlin/com/game/template/Game.kt b/game/src/commonMain/kotlin/com/game/template/Game.kt new file mode 100644 index 0000000..2e8d32a --- /dev/null +++ b/game/src/commonMain/kotlin/com/game/template/Game.kt @@ -0,0 +1,28 @@ +package com.game.template + +import com.lehaine.littlekt.Context +import com.lehaine.littlekt.ContextListener +import com.lehaine.littlekt.graphics.* +import com.lehaine.littlekt.graphics.gl.ClearBufferMask + + +class Game(context: Context) : ContextListener(context) { + + override suspend fun Context.start() { + val batch = SpriteBatch(this) + val camera = OrthographicCamera(graphics.width, graphics.height) + + onResize { width, height -> + camera.update(width, height, context) + } + + onRender { + gl.clearColor(Color.DARK_GRAY) + gl.clear(ClearBufferMask.COLOR_BUFFER_BIT) + + batch.use(camera.viewProjection) { + Fonts.default.draw(it, "Hello LittleKt!", 0f, 0f) + } + } + } +} \ No newline at end of file diff --git a/game/src/jsMain/kotlin/com/game/template/JsApp.kt b/game/src/jsMain/kotlin/com/game/template/JsApp.kt new file mode 100644 index 0000000..3277255 --- /dev/null +++ b/game/src/jsMain/kotlin/com/game/template/JsApp.kt @@ -0,0 +1,14 @@ +package com.game.template + +import com.lehaine.littlekt.createLittleKtApp +import com.lehaine.littlekt.graphics.Color + +fun main() { + createLittleKtApp { + title = "LittleKt Game Template" + backgroundColor = Color.DARK_GRAY + canvasId = "canvas" + }.start { + Game(it) + } +} \ No newline at end of file diff --git a/game/src/jsMain/resources/index.html b/game/src/jsMain/resources/index.html new file mode 100644 index 0000000..35867d2 --- /dev/null +++ b/game/src/jsMain/resources/index.html @@ -0,0 +1,12 @@ + + + + + LittleKt Game Template + + +
+ +
+ + \ No newline at end of file diff --git a/game/src/jvmMain/kotlin/com/game/template/LwjglApp.kt b/game/src/jvmMain/kotlin/com/game/template/LwjglApp.kt new file mode 100644 index 0000000..2cd94e4 --- /dev/null +++ b/game/src/jvmMain/kotlin/com/game/template/LwjglApp.kt @@ -0,0 +1,15 @@ +package com.game.template + +import com.lehaine.littlekt.createLittleKtApp +import com.lehaine.littlekt.graphics.Color + +fun main() { + createLittleKtApp { + width = 960 + height = 540 + backgroundColor = Color.DARK_GRAY + title = "LittleKt Game Template" + }.start { + Game(it) + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..9e35348 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +#Gradle +org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" + +#Kotlin +kotlin.code.style=official + +#MPP +kotlin.mpp.enableGranularSourceSetsMetadata=true +kotlin.mpp.enableCInteropCommonization=true +kotlin.mpp.stability.nowarn=true +kotlin.native.enableDependencyPropagation=false +kotlin.js.generate.executable.default=false + +#Android +android.compileSdk=31 +android.targetSdk=31 +android.minSdk=21 +android.disableAutomaticComponentCreation=true + +#JVM +jvm.mainClass=com.game.template.LwjglApp \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..d42aecd --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,20 @@ +[versions] +plugin-android = "7.0.4" +plugin-kotlin = "1.6.10" + +kotlinx-html = "0.7.2" +kotlinx-coroutines = "1.6.0-native-mt" + +littlekt = "0.2.0" + +[libraries] +plugin-android = { module = "com.android.tools.build:gradle", version.ref = "plugin-android" } +plugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "plugin-kotlin" } + +kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } +kotlinx-html-js = { module = "org.jetbrains.kotlinx:kotlinx-html-js", version.ref = "kotlinx-html" } + +littlekt-core = { module = "com.lehaine.littlekt:core", version.ref = "littlekt" } + +[bundles] +plugins = ["plugin-android", "plugin-kotlin"] \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..41dfb87 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..744e882 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MSYS* | MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..ad8f737 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,12 @@ +pluginManagement { + repositories { + google() + gradlePluginPortal() + mavenCentral() + } +} + +rootProject.name = "littlekt-game-template" +include("game") + +enableFeaturePreview("VERSION_CATALOGS") \ No newline at end of file