diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..67df35c --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +# https://editorconfig.org +root = true + +[*] +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{java,scala,groovy,kt,kts}] +indent_size = 4 + +[*.gradle] +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6c84be0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto eol=lf +*.bat text=auto eol=crlf diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8aac20b..039621f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -27,12 +27,12 @@ jobs: - name: Setup Java uses: actions/setup-java@v3 with: - java-version: '17' - distribution: 'temurin' + java-version: '11.0.25' + distribution: 'corretto' - name: Build HTML Version run: ./gradlew html:dist - name: Setup Pages - uses: actions/configure-pages@v4 + uses: actions/configure-pages@v5 - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: diff --git a/.gitignore b/.gitignore index a2159fc..fc300f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,118 +1,165 @@ -.idea - - - -## Java - -*.class -*.war -*.ear -hs_err_pid* - -## Robovm -/ios/robovm-build/ - -## GWT -/html/war/ -/html/gwt-unitCache/ -.apt_generated/ -.gwt/ -gwt-unitCache/ -www-test/ -.gwt-tmp/ - -## Android Studio and Intellij and Android in general -/android/libs/armeabi-v7a/ -/android/libs/arm64-v8a/ -/android/libs/x86/ -/android/libs/x86_64/ -/android/gen/ -.idea/ -*.ipr -*.iws -*.iml -/android/out/ -com_crashlytics_export_strings.xml - -## Eclipse - -.classpath -.project -.metadata/ -/android/bin/ -/core/bin/ -/desktop/bin/ -/html/bin/ -/ios/bin/ -*.tmp -*.bak -*.swp -*~.nib -.settings/ -.loadpath -.externalToolBuilders/ -*.launch - -## NetBeans - -/nbproject/private/ -/android/nbproject/private/ -/core/nbproject/private/ -/desktop/nbproject/private/ -/html/nbproject/private/ -/ios/nbproject/private/ - -/build/ -/android/build/ -/core/build/ -/desktop/build/ -/html/build/ -/ios/build/ - -/nbbuild/ -/android/nbbuild/ -/core/nbbuild/ -/desktop/nbbuild/ -/html/nbbuild/ -/ios/nbbuild/ - -/dist/ -/android/dist/ -/core/dist/ -/desktop/dist/ -/html/dist/ -/ios/dist/ - -/nbdist/ -/android/nbdist/ -/core/nbdist/ -/desktop/nbdist/ -/html/nbdist/ -/ios/nbdist/ - -nbactions.xml -nb-configuration.xml - -## Gradle - -/local.properties -.gradle/ -gradle-app.setting -/build/ -/android/build/ -/core/build/ -/desktop/build/ -/html/build/ -/ios/build/ - -## OS Specific -.DS_Store -Thumbs.db - -## iOS -/ios/xcode/*.xcodeproj/* -!/ios/xcode/*.xcodeproj/xcshareddata -!/ios/xcode/*.xcodeproj/project.pbxproj -/ios/xcode/native/ -/ios/IOSLauncher.app -/ios/IOSLauncher.app.dSYM +## Gradle: +.gradle/ +gradle-app.setting +/gradle/gradle-daemon-jvm.properties +/build/ +/android/build/ +/core/build/ +/lwjgl2/build/ +/lwjgl3/build/ +/html/build/ +/teavm/build/ +/ios/build/ +/ios-moe/build/ +/headless/build/ +/server/build/ +/shared/build/ + +## Java: +*.class +*.war +*.ear +hs_err_pid* +.attach_pid* + +## Android: +/android/libs/armeabi-v7a/ +/android/libs/arm64-v8a/ +/android/libs/x86/ +/android/libs/x86_64/ +/android/gen/ +/android/out/ +local.properties +com_crashlytics_export_strings.xml + +## Robovm: +/ios/robovm-build/ + +## iOS: +/ios/xcode/*.xcodeproj/* +!/ios/xcode/*.xcodeproj/xcshareddata +!/ios/xcode/*.xcodeproj/project.pbxproj +/ios/xcode/native/ +/ios/IOSLauncher.app +/ios/IOSLauncher.app.dSYM + +## GWT: +/html/war/ +/html/gwt-unitCache/ +.apt_generated/ +/html/war/WEB-INF/deploy/ +/html/war/WEB-INF/classes/ +.gwt/ +gwt-unitCache/ +www-test/ +.gwt-tmp/ + +## TeaVM: +# Not sure yet... + +## IntelliJ, Android Studio: +.idea/ +*.ipr +*.iws +*.iml + +## Eclipse: +.classpath +.project +.metadata/ +/android/bin/ +/core/bin/ +/lwjgl2/bin/ +/lwjgl3/bin/ +/html/bin/ +/teavm/bin/ +/ios/bin/ +/ios-moe/bin/ +/headless/bin/ +/server/bin/ +/shared/bin/ +*.tmp +*.bak +*.swp +*~.nib +.settings/ +.loadpath +.externalToolBuilders/ +*.launch + + +## NetBeans: + +/nbproject/private/ +/android/nbproject/private/ +/core/nbproject/private/ +/lwjgl2/nbproject/private/ +/lwjgl3/nbproject/private/ +/html/nbproject/private/ +/teavm/nbproject/private/ +/ios/nbproject/private/ +/ios-moe/nbproject/private/ +/headless/nbproject/private/ +/server/nbproject/private/ +/shared/nbproject/private/ + +/nbbuild/ +/android/nbbuild/ +/core/nbbuild/ +/lwjgl2/nbbuild/ +/lwjgl3/nbbuild/ +/html/nbbuild/ +/teavm/nbbuild/ +/ios/nbbuild/ +/ios-moe/nbbuild/ +/headless/nbbuild/ +/server/nbbuild/ +/shared/nbbuild/ + +/dist/ +/android/dist/ +/core/dist/ +/lwjgl2/dist/ +/lwjgl3/dist/ +/html/dist/ +/teavm/dist/ +/ios/dist/ +/ios-moe/dist/ +/headless/dist/ +/server/dist/ +/shared/dist/ + +/nbdist/ +/android/nbdist/ +/core/nbdist/ +/lwjgl2/nbdist/ +/lwjgl3/nbdist/ +/html/nbdist/ +/teavm/nbdist/ +/ios/nbdist/ +/ios-moe/nbdist/ +/headless/nbdist/ +/server/nbdist/ +/shared/nbdist/ + +nbactions.xml +nb-configuration.xml + +## OS-Specific: +.DS_Store +Thumbs.db + +## Miscellaneous: +*~ +*.*# +*#*# +/.kotlin/ +/assets/assets.txt + +## Special cases: + +## There is a resource-config.json file generated by nativeimage.gradle if you use Graal Native Image. +## Some usage may need extra resource configuration in a different file with the same name. +## You could also add that configuration to the text in nativeimage.gradle . +## You should delete or comment out the next line if you have configuration in a different resource-config.json . +**/resource-config.json diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 29f81d8..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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 - - http://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. diff --git a/README.md b/README.md index 1aac969..7e2fc2a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,33 @@ -# nntv -Navigate Ninja Through Visions +# YourProjectName + +A [libGDX](https://libgdx.com/) project generated with [gdx-liftoff](https://github.com/libgdx/gdx-liftoff). + +This project was generated with a template including simple application launchers and an `ApplicationAdapter` extension that draws libGDX logo. + +## Platforms + +- `core`: Main module with the application logic shared by all platforms. +- `html`: Web platform using GWT and WebGL. Supports only Java projects. + +## Gradle + +This project uses [Gradle](https://gradle.org/) to manage dependencies. +The Gradle wrapper was included, so you can run Gradle tasks using `gradlew.bat` or `./gradlew` commands. +Useful Gradle tasks and flags: + +- `--continue`: when using this flag, errors will not stop the tasks from running. +- `--daemon`: thanks to this flag, Gradle daemon will be used to run chosen tasks. +- `--offline`: when using this flag, cached dependency archives will be used. +- `--refresh-dependencies`: this flag forces validation of all dependencies. Useful for snapshot versions. +- `build`: builds sources and archives of every project. +- `cleanEclipse`: removes Eclipse project data. +- `cleanIdea`: removes IntelliJ project data. +- `clean`: removes `build` folders, which store compiled classes and built archives. +- `eclipse`: generates Eclipse project data. +- `html:dist`: compiles GWT sources. The compiled application can be found at `html/build/dist`: you can use any HTTP server to deploy it. +- `html:superDev`: compiles GWT sources and runs the application in SuperDev mode. It will be available at [localhost:8080/html](http://localhost:8080/html). Use only during development. +- `idea`: generates IntelliJ project data. +- `test`: runs unit tests (if any). + +Note that most tasks that are not specific to a single project can be run with `name:` prefix, where the `name` should be replaced with the ID of a specific project. +For example, `core:clean` removes `build` folder only from the `core` project. diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml deleted file mode 100644 index f59894e..0000000 --- a/android/AndroidManifest.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index 73e3230..0000000 --- a/android/build.gradle +++ /dev/null @@ -1,89 +0,0 @@ -android { - namespace "com.miti99.nntv" - buildToolsVersion "33.0.2" - compileSdkVersion 33 - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - aidl.srcDirs = ['src'] - renderscript.srcDirs = ['src'] - res.srcDirs = ['res'] - assets.srcDirs = ['../assets'] - jniLibs.srcDirs = ['libs'] - } - - } - packagingOptions { - exclude 'META-INF/robovm/ios/robovm.xml' - } - defaultConfig { - applicationId "com.miti99.nntv" - minSdkVersion 14 - targetSdkVersion 33 - versionCode 1 - versionName "1.0" - } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - - -// called every time gradle gets executed, takes the native dependencies of -// the natives configuration, and extracts them to the proper libs/ folders -// so they get packed with the APK. -task copyAndroidNatives { - doFirst { - file("libs/armeabi-v7a/").mkdirs() - file("libs/arm64-v8a/").mkdirs() - file("libs/x86_64/").mkdirs() - file("libs/x86/").mkdirs() - - configurations.natives.copy().files.each { jar -> - def outputDir = null - if (jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a") - if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") - if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64") - if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86") - if(outputDir != null) { - copy { - from zipTree(jar) - into outputDir - include "*.so" - } - } - } - } -} - -tasks.matching { it.name.contains("merge") && it.name.contains("JniLibFolders") }.configureEach { packageTask -> - packageTask.dependsOn 'copyAndroidNatives' -} - -task run(type: Exec) { - def path - def localProperties = project.file("../local.properties") - if (localProperties.exists()) { - Properties properties = new Properties() - localProperties.withInputStream { instr -> - properties.load(instr) - } - def sdkDir = properties.getProperty('sdk.dir') - if (sdkDir) { - path = sdkDir - } else { - path = "$System.env.ANDROID_HOME" - } - } else { - path = "$System.env.ANDROID_HOME" - } - - def adb = path + "/platform-tools/adb" - commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.miti99.nntv/com.miti99.nntv.AndroidLauncher' -} - -eclipse.project.name = appName + "-android" diff --git a/android/ic_launcher-web.png b/android/ic_launcher-web.png deleted file mode 100644 index 8f0110d..0000000 Binary files a/android/ic_launcher-web.png and /dev/null differ diff --git a/android/proguard-rules.pro b/android/proguard-rules.pro deleted file mode 100644 index 7ce76df..0000000 --- a/android/proguard-rules.pro +++ /dev/null @@ -1,38 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - --verbose - --dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication - -# Required if using Gdx-Controllers extension --keep class com.badlogic.gdx.controllers.android.AndroidControllers - -# Required if using Box2D extension --keepclassmembers class com.badlogic.gdx.physics.box2d.World { - boolean contactFilter(long, long); - void beginContact(long); - void endContact(long); - void preSolve(long, long); - void postSolve(long, long); - boolean reportFixture(long); - float reportRayFixture(long, float, float, float, float, float); -} diff --git a/android/project.properties b/android/project.properties deleted file mode 100644 index 0779820..0000000 --- a/android/project.properties +++ /dev/null @@ -1,9 +0,0 @@ -# This file is used by the Eclipse ADT plugin. It is unnecessary for IDEA and Android Studio projects, which -# configure Proguard and the Android target via the build.gradle file. - -# To enable ProGuard to work with Eclipse ADT, uncomment this (available properties: sdk.dir, user.home) -# and ensure proguard.jar in the Android SDK is up to date (or alternately reduce the android target to 23 or lower): -# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-rules.pro - -# Project target. -target=android-19 diff --git a/android/res/drawable-anydpi-v26/ic_launcher.xml b/android/res/drawable-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 1b73f0c..0000000 --- a/android/res/drawable-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/android/res/drawable-anydpi-v26/ic_launcher_foreground.xml b/android/res/drawable-anydpi-v26/ic_launcher_foreground.xml deleted file mode 100644 index 422353c..0000000 --- a/android/res/drawable-anydpi-v26/ic_launcher_foreground.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - diff --git a/android/res/drawable-hdpi/ic_launcher.png b/android/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 91f696b..0000000 Binary files a/android/res/drawable-hdpi/ic_launcher.png and /dev/null differ diff --git a/android/res/drawable-mdpi/ic_launcher.png b/android/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index c1ab239..0000000 Binary files a/android/res/drawable-mdpi/ic_launcher.png and /dev/null differ diff --git a/android/res/drawable-xhdpi/ic_launcher.png b/android/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 2011cc0..0000000 Binary files a/android/res/drawable-xhdpi/ic_launcher.png and /dev/null differ diff --git a/android/res/drawable-xxhdpi/ic_launcher.png b/android/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index 25fcef0..0000000 Binary files a/android/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/android/res/drawable-xxxhdpi/ic_launcher.png b/android/res/drawable-xxxhdpi/ic_launcher.png deleted file mode 100644 index d109946..0000000 Binary files a/android/res/drawable-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/android/res/values-v21/styles.xml b/android/res/values-v21/styles.xml deleted file mode 100644 index bcf1d70..0000000 --- a/android/res/values-v21/styles.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/android/res/values/color.xml b/android/res/values/color.xml deleted file mode 100644 index e9921d4..0000000 --- a/android/res/values/color.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #FFFFFFFF - diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml deleted file mode 100644 index a3268a3..0000000 --- a/android/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - NNTV - - diff --git a/android/res/values/styles.xml b/android/res/values/styles.xml deleted file mode 100644 index 43d2cad..0000000 --- a/android/res/values/styles.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/android/src/com/miti99/nntv/AndroidLauncher.java b/android/src/com/miti99/nntv/AndroidLauncher.java deleted file mode 100644 index 304289a..0000000 --- a/android/src/com/miti99/nntv/AndroidLauncher.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.miti99.nntv; - -import android.os.Bundle; - -import com.badlogic.gdx.backends.android.AndroidApplication; -import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; -import com.miti99.nntv.NNTV; - -public class AndroidLauncher extends AndroidApplication { - @Override - protected void onCreate (Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); - initialize(new NNTV(), config); - } -} diff --git a/assets/badlogic.jpg b/assets/badlogic.jpg deleted file mode 100644 index 4390da6..0000000 Binary files a/assets/badlogic.jpg and /dev/null differ diff --git a/assets/libgdx.png b/assets/libgdx.png new file mode 100644 index 0000000..6c7bfca Binary files /dev/null and b/assets/libgdx.png differ diff --git a/build.gradle b/build.gradle index b1db19e..2146bc7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,97 +1,73 @@ -buildscript { - - - repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - google() - } - dependencies { - classpath 'org.wisepersist:gwt-gradle-plugin:1.1.16' - classpath 'org.gretty:gretty:3.0.7' - classpath 'com.android.tools.build:gradle:7.2.2' - - - } -} - -allprojects { - apply plugin: "eclipse" - - version = '1.0' - ext { - appName = "NNTV" - gdxVersion = '1.11.0' - roboVMVersion = '2.3.19' - box2DLightsVersion = '1.5' - ashleyVersion = '1.7.4' - aiVersion = '1.8.2' - gdxControllersVersion = '2.2.1' - } - - repositories { - mavenLocal() - mavenCentral() - google() - gradlePluginPortal() - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - maven { url "https://oss.sonatype.org/content/repositories/releases/" } - maven { url "https://jitpack.io" } - } -} - -project(":desktop") { - apply plugin: "java-library" - - - dependencies { - implementation project(":core") - api "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion" - api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" - - } -} - -project(":android") { - apply plugin: "com.android.application" - - configurations { natives } - - dependencies { - implementation project(":core") - api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" - 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(":html") { - apply plugin: "java-library" - apply plugin: "gwt" - apply plugin: "war" - apply plugin: "org.gretty" - - - dependencies { - implementation project(":core") - api "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion" - api "com.badlogicgames.gdx:gdx:$gdxVersion:sources" - api "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources" - - } -} - -project(":core") { - apply plugin: "java-library" - - - dependencies { - api "com.badlogicgames.gdx:gdx:$gdxVersion" - - } -} +buildscript { + repositories { + mavenCentral() + maven { url 'https://s01.oss.sonatype.org' } + gradlePluginPortal() + mavenLocal() + google() + maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' } + } + dependencies { + + + } +} + +allprojects { + apply plugin: 'eclipse' + apply plugin: 'idea' + + // This allows you to "Build and run using IntelliJ IDEA", an option in IDEA's Settings. + idea { + module { + outputDir file('build/classes/java/main') + testOutputDir file('build/classes/java/test') + } + } +} + +configure(subprojects) { + apply plugin: 'java-library' + sourceCompatibility = 11 + + // From https://lyze.dev/2021/04/29/libGDX-Internal-Assets-List/ + // The article can be helpful when using assets.txt in your project. + tasks.register('generateAssetList') { + inputs.dir("${project.rootDir}/assets/") + // projectFolder/assets + File assetsFolder = new File("${project.rootDir}/assets/") + // projectFolder/assets/assets.txt + File assetsFile = new File(assetsFolder, "assets.txt") + // delete that file in case we've already created it + assetsFile.delete() + + // iterate through all files inside that folder + // convert it to a relative path + // and append it to the file assets.txt + fileTree(assetsFolder).collect { assetsFolder.relativePath(it) }.sort().each { + assetsFile.append(it + "\n") + } + } + processResources.dependsOn 'generateAssetList' + + compileJava { + options.incremental = true + } +} + +subprojects { + version = "$projectVersion" + ext.appName = 'YourProjectName' + repositories { + mavenCentral() + maven { url 'https://s01.oss.sonatype.org' } + // You may want to remove the following line if you have errors downloading dependencies. + mavenLocal() + maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' } + maven { url 'https://jitpack.io' } + } +} + +eclipse.project.name = 'YourProjectName' + '-parent' diff --git a/core/build.gradle b/core/build.gradle index 964cfd2..2106df5 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,6 +1,10 @@ -sourceCompatibility = 1.7 -[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' - -sourceSets.main.java.srcDirs = [ "src/" ] - -eclipse.project.name = appName + "-core" +[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' +eclipse.project.name = appName + '-core' + +dependencies { + api "com.badlogicgames.gdx:gdx:$gdxVersion" + + if(enableGraalNative == 'true') { + implementation "io.github.berstanio:gdx-svmhelper-annotations:$graalHelperVersion" + } +} diff --git a/core/src/NNTV.gwt.xml b/core/src/NNTV.gwt.xml deleted file mode 100644 index 281d172..0000000 --- a/core/src/NNTV.gwt.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/core/src/com/miti99/nntv/NNTV.java b/core/src/com/miti99/nntv/NNTV.java deleted file mode 100644 index 65b74d8..0000000 --- a/core/src/com/miti99/nntv/NNTV.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.miti99.nntv; - -import com.badlogic.gdx.ApplicationAdapter; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.badlogic.gdx.utils.ScreenUtils; - -public class NNTV extends ApplicationAdapter { - SpriteBatch batch; - Texture img; - - @Override - public void create () { - batch = new SpriteBatch(); - img = new Texture("badlogic.jpg"); - } - - @Override - public void render () { - ScreenUtils.clear(1, 0, 0, 1); - batch.begin(); - batch.draw(img, 0, 0); - batch.end(); - } - - @Override - public void dispose () { - batch.dispose(); - img.dispose(); - } -} diff --git a/core/src/main/java/io/github/some_example_name/Main.gwt.xml b/core/src/main/java/io/github/some_example_name/Main.gwt.xml new file mode 100644 index 0000000..8dd5046 --- /dev/null +++ b/core/src/main/java/io/github/some_example_name/Main.gwt.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/core/src/main/java/io/github/some_example_name/Main.java b/core/src/main/java/io/github/some_example_name/Main.java new file mode 100644 index 0000000..d950d72 --- /dev/null +++ b/core/src/main/java/io/github/some_example_name/Main.java @@ -0,0 +1,34 @@ +package io.github.some_example_name; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.utils.ScreenUtils; + +/** {@link com.badlogic.gdx.ApplicationListener} implementation shared by all platforms. */ +public class Main extends ApplicationAdapter { + private SpriteBatch batch; + private Texture image; + + @Override + public void create() { + batch = new SpriteBatch(); + image = new Texture("libgdx.png"); + } + + @Override + public void render() { + ScreenUtils.clear(0.15f, 0.15f, 0.2f, 1f); + batch.begin(); + batch.draw(image, 140, 210); + batch.end(); + } + + @Override + public void dispose() { + batch.dispose(); + image.dispose(); + } +} diff --git a/desktop/build.gradle b/desktop/build.gradle deleted file mode 100644 index 99d4e2c..0000000 --- a/desktop/build.gradle +++ /dev/null @@ -1,47 +0,0 @@ -sourceCompatibility = 1.8 -sourceSets.main.java.srcDirs = [ "src/" ] -sourceSets.main.resources.srcDirs = ["../assets"] - -project.ext.mainClassName = "com.miti99.nntv.DesktopLauncher" -project.ext.assetsDir = new File("../assets") - -import org.gradle.internal.os.OperatingSystem - -task run(dependsOn: classes, type: JavaExec) { - mainClass = project.mainClassName - classpath = sourceSets.main.runtimeClasspath - standardInput = System.in - workingDir = project.assetsDir - ignoreExitValue = true - - if (OperatingSystem.current() == OperatingSystem.MAC_OS) { - // Required to run on macOS - jvmArgs += "-XstartOnFirstThread" - } -} - -task debug(dependsOn: classes, type: JavaExec) { - mainClass = project.mainClassName - classpath = sourceSets.main.runtimeClasspath - standardInput = System.in - workingDir = project.assetsDir - ignoreExitValue = true - debug = true -} - -task dist(type: Jar) { - duplicatesStrategy(DuplicatesStrategy.EXCLUDE) - manifest { - attributes 'Main-Class': project.mainClassName - } - dependsOn configurations.runtimeClasspath - from { - configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } - } - with jar -} - - -dist.dependsOn classes - -eclipse.project.name = appName + "-desktop" diff --git a/desktop/src/com/miti99/nntv/DesktopLauncher.java b/desktop/src/com/miti99/nntv/DesktopLauncher.java deleted file mode 100644 index 4171fac..0000000 --- a/desktop/src/com/miti99/nntv/DesktopLauncher.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.miti99.nntv; - -import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; -import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; -import com.miti99.nntv.NNTV; - -// Please note that on macOS your application needs to be started with the -XstartOnFirstThread JVM argument -public class DesktopLauncher { - public static void main (String[] arg) { - Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); - config.setForegroundFPS(60); - config.setTitle("NNTV"); - new Lwjgl3Application(new NNTV(), config); - } -} diff --git a/gradle.properties b/gradle.properties index 4abb401..5361044 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,8 @@ -org.gradle.daemon=true -org.gradle.jvmargs=-Xms128m -Xmx1500m -org.gradle.configureondemand=false +org.gradle.daemon=false +org.gradle.jvmargs=-Xms512M -Xmx1G -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 +org.gradle.configureondemand=false +gwtFrameworkVersion=2.11.0 +gwtPluginVersion=1.1.29 +enableGraalNative=false +gdxVersion=1.13.1 +projectVersion=1.0.0 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e583..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d3ea086..cea7a79 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb..f3b75f3 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +82,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${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"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +133,29 @@ 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. + if ! command -v java >/dev/null 2>&1 + then + 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 fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +200,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# 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"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 53a6b23..9b42019 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -26,6 +28,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -42,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 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. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +59,11 @@ 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. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/html/build.gradle b/html/build.gradle index c86e42e..c2c3eab 100644 --- a/html/build.gradle +++ b/html/build.gradle @@ -1,92 +1,156 @@ -gwt { - gwtVersion='2.8.2' // Should match the gwt version used for building the gwt backend - maxHeapSize="1G" // Default 256m is not enough for gwt compiler. GWT is HUNGRY - minHeapSize="1G" - - src = files(file("src/")) // Needs to be in front of "modules" below. - modules 'com.miti99.nntv.GdxDefinition' - devModules 'com.miti99.nntv.GdxDefinitionSuperdev' - project.webAppDirName = 'webapp' - - compiler { - strict = true; - disableCastChecking = true; - } -} - -import org.wisepersist.gradle.plugins.gwt.GwtSuperDev -import org.akhikhl.gretty.AppBeforeIntegrationTestTask - -gretty.httpPort = 8080 -gretty.resourceBase = project.buildDir.path + "/gwt/draftOut" -gretty.contextPath = "/" -gretty.portPropertiesFileName = "TEMP_PORTS.properties" - -task startHttpServer () { - dependsOn draftCompileGwt - - doFirst { - copy { - from "webapp" - into gretty.resourceBase - } - - copy { - from "war" - into gretty.resourceBase - } - } -} - -task beforeRun(type: AppBeforeIntegrationTestTask, dependsOn: startHttpServer) { - // The next line allows ports to be reused instead of - // needing a process to be manually terminated. - file("build/TEMP_PORTS.properties").delete() - // Somewhat of a hack; uses Gretty's support for wrapping a task in - // a start and then stop of a Jetty server that serves files while - // also running the SuperDev code server. - integrationTestTask 'superDev' - - interactive false -} - -task superDev (type: GwtSuperDev) { - dependsOn startHttpServer - doFirst { - gwt.modules = gwt.devModules - } -} - -task dist(dependsOn: [clean, compileGwt]) { - doLast { - file("build/dist").mkdirs() - copy { - from "build/gwt/out" - into "build/dist" - } - copy { - from "webapp" - into "build/dist" - } - copy { - from "war" - into "build/dist" - } - } -} - -task addSource { - doLast { - sourceSets.main.compileClasspath += files(project(':core').sourceSets.main.allJava.srcDirs) - } -} - -tasks.compileGwt.dependsOn(addSource) -tasks.draftCompileGwt.dependsOn(addSource) -tasks.checkGwt.dependsOn(addSource) -checkGwt.war = file("war") - -sourceCompatibility = 1.7 -sourceSets.main.java.srcDirs = [ "src/" ] - -eclipse.project.name = appName + "-html" + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'org.gretty:gretty:3.1.0' + classpath "org.docstr:gwt-gradle-plugin:$gwtPluginVersion" + + } +} +apply plugin: "gwt" +apply plugin: "war" +apply plugin: "org.gretty" + +gwt { + gwtVersion = "$gwtFrameworkVersion" // Should match the version used for building the GWT backend. See gradle.properties. + maxHeapSize = '1G' // Default 256m is not enough for the GWT compiler. GWT is HUNGRY. + minHeapSize = '1G' + + src = files(file('src/main/java')) // Needs to be in front of "modules" below. + modules 'io.github.some_example_name.GdxDefinition' + devModules 'io.github.some_example_name.GdxDefinitionSuperdev' + project.webAppDirName = 'webapp' + + compiler.strict = true + compiler.disableCastChecking = true + //// The next line can be useful to uncomment if you want output that hasn't been obfuscated. +// compiler.style = org.docstr.gradle.plugins.gwt.Style.DETAILED + + sourceLevel = 1.11 +} + +dependencies { + implementation "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion" + implementation "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources" + implementation "com.badlogicgames.gdx:gdx:$gdxVersion:sources" + implementation project(':core') + +} + +import org.akhikhl.gretty.AppBeforeIntegrationTestTask +import org.docstr.gradle.plugins.gwt.GwtSuperDev + +gretty.httpPort = 8080 +// The line below will need to be changed only if you change the build directory to something other than "build". +gretty.resourceBase = "${project.layout.buildDirectory.asFile.get().absolutePath}/gwt/draftOut" +gretty.contextPath = "/" +gretty.portPropertiesFileName = "TEMP_PORTS.properties" + +task startHttpServer (dependsOn: [draftCompileGwt]) { + doFirst { + copy { + from "webapp" + into gretty.resourceBase + } + copy { + from "war" + into gretty.resourceBase + } + } +} +task beforeRun(type: AppBeforeIntegrationTestTask, dependsOn: startHttpServer) { + // The next line allows ports to be reused instead of + // needing a process to be manually terminated. + file("build/TEMP_PORTS.properties").delete() + // Somewhat of a hack; uses Gretty's support for wrapping a task in + // a start and then stop of a Jetty server that serves files while + // also running the SuperDev code server. + integrationTestTask 'superDev' + + interactive false +} + +task superDev(type: GwtSuperDev) { + doFirst { + gwt.modules = gwt.devModules + } +} + +//// We delete the (temporary) war/ folder because if any extra files get into it, problems occur. +//// The war/ folder shouldn't be committed to version control. +clean.delete += [file("war")] + +// This next line can be changed if you want to, for instance, always build into the +// docs/ folder of a Git repo, which can be set to automatically publish on GitHub Pages. +// This is relative to the html/ folder. +var outputPath = "build/dist/" + +task dist(dependsOn: [clean, compileGwt]) { + doLast { + // Uncomment the next line if you have changed outputPath and know that its contents + // should be replaced by a new dist build. Some large JS files are not cleaned up by + // default unless the outputPath is inside build/ (then the clean task removes them). + // Do not uncomment the next line if you changed outputPath to a folder that has + // non-generated files that you want to keep! + //delete(file(outputPath)) + + file(outputPath).mkdirs() + copy { + from("build/gwt/out"){ + exclude '**/*.symbolMap' // Not used by a dist, and these can be large. + } + into outputPath + } + copy { + from("webapp") { + exclude 'index.html' // We edit this HTML file later. + exclude 'refresh.png' // We don't need this button; this saves some bytes. + } + into outputPath + } + copy { + from("webapp") { + // These next two lines take the index.html page and remove the superdev refresh button. + include 'index.html' + filter { String line -> line.replaceAll(' - - - - - - - - - - - diff --git a/html/src/com/miti99/nntv/GdxDefinitionSuperdev.gwt.xml b/html/src/com/miti99/nntv/GdxDefinitionSuperdev.gwt.xml deleted file mode 100644 index 8a5d6f0..0000000 --- a/html/src/com/miti99/nntv/GdxDefinitionSuperdev.gwt.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/html/src/com/miti99/nntv/client/HtmlLauncher.java b/html/src/com/miti99/nntv/client/HtmlLauncher.java deleted file mode 100644 index da4f3bf..0000000 --- a/html/src/com/miti99/nntv/client/HtmlLauncher.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.miti99.nntv.client; - -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.backends.gwt.GwtApplication; -import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; -import com.miti99.nntv.NNTV; - -public class HtmlLauncher extends GwtApplication { - - @Override - public GwtApplicationConfiguration getConfig () { - // Resizable application, uses available space in browser - return new GwtApplicationConfiguration(true); - // Fixed size application: - //return new GwtApplicationConfiguration(480, 320); - } - - @Override - public ApplicationListener createApplicationListener () { - return new NNTV(); - } -} \ No newline at end of file diff --git a/html/src/main/java/io/github/some_example_name/GdxDefinition.gwt.xml b/html/src/main/java/io/github/some_example_name/GdxDefinition.gwt.xml new file mode 100644 index 0000000..de50fbd --- /dev/null +++ b/html/src/main/java/io/github/some_example_name/GdxDefinition.gwt.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/src/main/java/io/github/some_example_name/GdxDefinitionSuperdev.gwt.xml b/html/src/main/java/io/github/some_example_name/GdxDefinitionSuperdev.gwt.xml new file mode 100644 index 0000000..03af395 --- /dev/null +++ b/html/src/main/java/io/github/some_example_name/GdxDefinitionSuperdev.gwt.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/html/src/main/java/io/github/some_example_name/gwt/GwtLauncher.java b/html/src/main/java/io/github/some_example_name/gwt/GwtLauncher.java new file mode 100644 index 0000000..6815407 --- /dev/null +++ b/html/src/main/java/io/github/some_example_name/gwt/GwtLauncher.java @@ -0,0 +1,26 @@ +package io.github.some_example_name.gwt; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.backends.gwt.GwtApplication; +import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; +import io.github.some_example_name.Main; + +/** Launches the GWT application. */ +public class GwtLauncher extends GwtApplication { + @Override + public GwtApplicationConfiguration getConfig () { + // Resizable application, uses available space in browser with no padding: + GwtApplicationConfiguration cfg = new GwtApplicationConfiguration(true); + cfg.padVertical = 0; + cfg.padHorizontal = 0; + return cfg; + // If you want a fixed size application, comment out the above resizable section, + // and uncomment below: + //return new GwtApplicationConfiguration(640, 480); + } + + @Override + public ApplicationListener createApplicationListener () { + return new Main(); + } +} diff --git a/html/webapp/WEB-INF/web.xml b/html/webapp/WEB-INF/web.xml index 05379f9..4301df2 100644 --- a/html/webapp/WEB-INF/web.xml +++ b/html/webapp/WEB-INF/web.xml @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/html/webapp/index.html b/html/webapp/index.html index f4a2ce9..849ee68 100644 --- a/html/webapp/index.html +++ b/html/webapp/index.html @@ -1,31 +1,31 @@ - - - - NNTV - - - - - - - ↻ -
- - - - - + + + + YourProjectName + + + + + + +↻ +
+ + + + + diff --git a/html/webapp/refresh.png b/html/webapp/refresh.png new file mode 100644 index 0000000..aab1e38 Binary files /dev/null and b/html/webapp/refresh.png differ diff --git a/html/webapp/styles.css b/html/webapp/styles.css index bf7292c..e768a39 100644 --- a/html/webapp/styles.css +++ b/html/webapp/styles.css @@ -1,43 +1,53 @@ -canvas { - cursor: default; - outline: none; -} - -body { - background-color: #222222; -} - -.superdev { - color: rgb(37,37,37); - text-shadow: 0px 1px 1px rgba(250,250,250,0.1); - font-size: 50pt; - display: block; - position: relative; - text-decoration: none; - background-color: rgb(83,87,93); - box-shadow: 0px 3px 0px 0px rgb(34,34,34), - 0px 7px 10px 0px rgb(17,17,17), - inset 0px 1px 1px 0px rgba(250, 250, 250, .2), - inset 0px -12px 35px 0px rgba(0, 0, 0, .5); - width: 70px; - height: 70px; - border: 0; - border-radius: 35px; - text-align: center; - line-height: 68px; -} - -.superdev:active { - box-shadow: 0px 0px 0px 0px rgb(34,34,34), - 0px 3px 7px 0px rgb(17,17,17), - inset 0px 1px 1px 0px rgba(250, 250, 250, .2), - inset 0px -10px 35px 5px rgba(0, 0, 0, .5); - background-color: rgb(83,87,93); - top: 3px; - color: #fff; - text-shadow: 0px 0px 3px rgb(250,250,250); -} - -.superdev:hover { - background-color: rgb(100,100,100); -} +canvas { + cursor: default; + outline: none; +} + +body { + background-color: #222222; +} + +p { + text-align: center; + color: #eeeeee; +} + +a { + text-align: center; + color: #bbbbff; +} + +.superdev { + color: rgb(37,37,37); + text-shadow: 0px 1px 1px rgba(250,250,250,0.1); + font-size: 50pt; + display: block; + position: relative; + text-decoration: none; + background-color: rgb(83,87,93); + box-shadow: 0px 3px 0px 0px rgb(34,34,34), + 0px 7px 10px 0px rgb(17,17,17), + inset 0px 1px 1px 0px rgba(250, 250, 250, .2), + inset 0px -12px 35px 0px rgba(0, 0, 0, .5); + width: 70px; + height: 70px; + border: 0; + border-radius: 35px; + text-align: center; + line-height: 68px; +} + +.superdev:active { + box-shadow: 0px 0px 0px 0px rgb(34,34,34), + 0px 3px 7px 0px rgb(17,17,17), + inset 0px 1px 1px 0px rgba(250, 250, 250, .2), + inset 0px -10px 35px 5px rgba(0, 0, 0, .5); + background-color: rgb(83,87,93); + top: 3px; + color: #fff; + text-shadow: 0px 0px 3px rgb(250,250,250); +} + +.superdev:hover { + background-color: rgb(100,100,100); +} diff --git a/settings.gradle b/settings.gradle index 14bee42..9dca142 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,4 @@ -include 'desktop', 'android', 'html', 'core' \ No newline at end of file +// A list of which subprojects to load as part of the same larger project. +// You can remove Strings from the list and reload the Gradle project +// if you want to temporarily disable a subproject. +include 'html', 'core'