208 lines
8.4 KiB
Groovy
208 lines
8.4 KiB
Groovy
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
|
}
|
|
dependencies {
|
|
classpath "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'java'
|
|
id 'org.beryx.runtime' version '1.12.2'
|
|
}
|
|
|
|
group 'games.rednblack'
|
|
|
|
allprojects {
|
|
version '0.1.4'
|
|
}
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
|
maven { url 'https://jitpack.io' }
|
|
}
|
|
|
|
ext {
|
|
appName = 'HyperLap2D'
|
|
|
|
packMain = ["art/textures", "assets/style/", "uiskin"]
|
|
packSplash = ["art/splash_textures", "assets/splash/", "splash"]
|
|
}
|
|
|
|
import com.badlogic.gdx.graphics.Texture
|
|
import com.badlogic.gdx.tools.texturepacker.TexturePacker
|
|
|
|
task packTextures {
|
|
TexturePacker.Settings settings = new TexturePacker.Settings()
|
|
settings.legacyOutput = false
|
|
settings.filterMin = Texture.TextureFilter.Linear
|
|
settings.filterMag = Texture.TextureFilter.Linear
|
|
settings.duplicatePadding = true
|
|
if (project.ext.has('packMain')) {
|
|
logger.info "Calling TexturePacker: " + packMain
|
|
TexturePacker.processIfModified(settings, file(packMain[0]).absolutePath, file(packMain[1]).absolutePath, (String)packMain[2])
|
|
}
|
|
if (project.ext.has('packSplash')) {
|
|
logger.info "Calling TexturePacker: " + packSplash
|
|
TexturePacker.processIfModified(settings, file(packSplash[0]).absolutePath, file(packSplash[1]).absolutePath, (String)packSplash[2])
|
|
}
|
|
}
|
|
|
|
mainClassName = "games.rednblack.editor.Main"
|
|
project.ext.assetsDir = new File("assets/");
|
|
def osName = System.getProperty('os.name').toLowerCase(Locale.ROOT)
|
|
|
|
def getBuildVersion = {
|
|
if (osName.contains('mac')) {
|
|
return getVersion().toString().replaceAll("0\\.", "")
|
|
}
|
|
if (project.hasProperty('SNAPSHOT')) {
|
|
return getVersion() + (project.hasProperty('WORKFLOW_RUN') ? WORKFLOW_RUN : "$System.env.WORKFLOW_RUN")
|
|
} else {
|
|
return getVersion()
|
|
}
|
|
}
|
|
|
|
task runHyperLap2D(dependsOn: classes, type: JavaExec) {
|
|
mainClass = project.mainClassName
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
standardInput = System.in
|
|
workingDir = project.assetsDir
|
|
jvmArgs = ['-verbose:gc','-XX:+UseZGC','-Xms128m']
|
|
ignoreExitValue = true
|
|
}
|
|
|
|
task dist(type: Jar) {
|
|
archiveVersion.set(getBuildVersion())
|
|
|
|
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
|
from files(sourceSets.main.output.classesDirs)
|
|
from files(sourceSets.main.output.resourcesDir)
|
|
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
|
|
from files(project.assetsDir);
|
|
|
|
manifest {
|
|
attributes 'Main-Class': project.mainClassName
|
|
}
|
|
|
|
destinationDirectory = file("$buildDir/lib")
|
|
}
|
|
|
|
jpackageImage.dependsOn dist
|
|
jpackage.dependsOn dist
|
|
|
|
dependencies {
|
|
implementation "com.badlogicgames.gdx:gdx:$gdxVersion"
|
|
implementation "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
|
|
implementation ("com.badlogicgames.gdx:gdx-tools:$gdxVersion") {
|
|
exclude group: 'com.badlogicgames.gdx', module: 'gdx-backend-lwjgl'
|
|
}
|
|
implementation "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
|
|
implementation "com.badlogicgames.gdx:gdx-lwjgl3-angle:$gdxVersion"
|
|
implementation "net.onedaybeard.artemis:artemis-odb:$artemisVersion"
|
|
implementation "net.onedaybeard.artemis:artemis-odb-serializer-json-libgdx:$artemisVersion"
|
|
|
|
implementation "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"
|
|
|
|
implementation "games.rednblack.puremvc:core:$pureMvcVersion"
|
|
implementation "games.rednblack.talos:runtime-libgdx:$talosVersion"
|
|
implementation "games.rednblack.talos:bvb-libgdx:$talosVersion"
|
|
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version"
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version:natives-linux"
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version:natives-linux-arm32"
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version:natives-linux-arm64"
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version:natives-macos"
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version:natives-macos-arm64"
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version:natives-windows"
|
|
implementation "org.lwjgl:lwjgl-tinyfd:$lwjgl3Version:natives-windows-x86"
|
|
|
|
implementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
|
implementation "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
|
|
implementation "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
|
|
|
|
implementation project(":hyperlap2d-common-api")
|
|
implementation project(":hyperlap2d-runtime-libgdx")
|
|
implementation project(":h2d-libgdx-spine-extension")
|
|
implementation project(":h2d-libgdx-talos-extension")
|
|
implementation project(":h2d-libgdx-typinglabel-extension")
|
|
implementation project(":h2d-libgdx-tinyvg-extension")
|
|
implementation project(":h2d-libgdx-bvb-extension")
|
|
|
|
implementation "space.earlygrey:shapedrawer:$shapedrawerVersion"
|
|
implementation "com.rafaskoberg.gdx:typing-label:$typingLabelVersion"
|
|
implementation "com.kotcrab.vis:vis-ui:$visuiVersion"
|
|
implementation "com.esotericsoftware.spine:spine-libgdx:$spineVersion"
|
|
implementation "com.github.lyze237:gdx-TinyVG:$gdxTinyVGVersion"
|
|
implementation "com.mortennobel:java-image-scaling:0.8.6"
|
|
implementation "org.apache.commons:commons-lang3:3.12.0"
|
|
implementation "commons-io:commons-io:2.7"
|
|
implementation 'net.mountainblade:modular:1.0'
|
|
|
|
testImplementation group: 'junit', name: 'junit', version: '4.12'
|
|
}
|
|
|
|
task deleteInstallerTemp(type: Delete) {
|
|
delete "$buildDir/installer"
|
|
}
|
|
jpackage.dependsOn deleteInstallerTemp
|
|
|
|
runtime {
|
|
javaHome.set(System.getProperty("java.home"))
|
|
options = ['--strip-debug',
|
|
'--compress', '2',
|
|
'--no-header-files',
|
|
'--no-man-pages',
|
|
'--strip-native-commands',
|
|
'--vm', 'server']
|
|
modules = ['java.base',
|
|
'java.desktop',
|
|
'java.compiler',
|
|
'java.logging',
|
|
'java.management',
|
|
'jdk.crypto.cryptoki',
|
|
'jdk.crypto.ec',
|
|
'jdk.unsupported']
|
|
distDir = file(buildDir)
|
|
|
|
jpackage {
|
|
setVersion(getBuildVersion())
|
|
mainJar = dist.archiveFileName.get()
|
|
imageOptions += ['--app-version', getBuildVersion(), '--vendor', 'Red & Black Games', '--description', 'HyperLap2D Editor', '--name', 'HyperLap2D']
|
|
installerOptions += ['--license-file', 'LICENSE']
|
|
jvmArgs = ['-verbose:gc','-XX:+UseZGC','-Xms128m']
|
|
if (osName.contains('windows')) {
|
|
imageOptions += ["--icon", file("icons/icon.ico")]
|
|
installerType = 'exe'
|
|
installerOptions += ['--win-dir-chooser', '--win-menu', '--win-menu-group', 'HyperLap2D',
|
|
'--win-shortcut', '--win-shortcut-prompt', '--vendor', 'Red & Black Games',
|
|
'--description', 'HyperLap2D Editor',
|
|
'--temp', "$buildDir/installer",
|
|
'--win-upgrade-uuid', 'e5f64fb6-111f-41f3-8f33-03b90e1a3a32',
|
|
"--icon", file("icons/icon.ico")]
|
|
resourceDir = file("resources-windows")
|
|
} else if (osName.contains('linux')) {
|
|
imageOptions += ["--icon", file("icons/HyperLap2D.png")]
|
|
installerType = 'deb'
|
|
installerOptions += [
|
|
'--vendor', 'Red & Black Games',
|
|
'--description', 'HyperLap2D is a Visual Editor for complex 2D worlds and scenes.',
|
|
'--linux-menu-group', 'Development', '--linux-deb-maintainer', 'business@rednblack.games',
|
|
'--linux-shortcut', '--vendor', 'Red & Black Games', '--linux-rpm-license-type', 'License: GPL3'
|
|
]
|
|
resourceDir = file("resources-linux")
|
|
} else if (osName.contains('mac')) {
|
|
imageOptions += ['--copyright', '(c) 2023, Red & Black Games', "--icon", file("icons/icon.icns")
|
|
, '--resource-dir', "${projectDir}/resources-macos"]
|
|
jvmArgs += ['-XstartOnFirstThread', '-Djava.awt.headless=true']
|
|
installerOptions += ['--verbose','--app-version', getBuildVersion(), '--vendor', 'Red & Black Games', '--resource-dir', "${projectDir}/resources-macos" ]
|
|
installerType = 'dmg'
|
|
resourceDir = file("resources-macos")
|
|
}
|
|
}
|
|
}
|