apply plugin: "java" sourceCompatibility = 1.8 sourceSets.main.java.srcDirs = [ "src/" ] import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.tools.texturepacker.TexturePacker import javax.imageio.ImageIO def textureFolder = "../core/assets-raw/sprites/generated/" task swapColors(){ doLast{ if (project.hasProperty("colors")) { def carr = new File(getProperty("colors")).text.split("\n"); def map = [:] def swaps = 0 carr.each {str -> map[Color.argb8888(Color.valueOf(str.split("=")[0]))] = Color.argb8888(Color.valueOf(str.split("=")[1]))} def tmpc = new Color() fileTree(dir: '../core/assets-raw/sprites', include: "**/*.png").visit { file -> if(file.isDirectory()) return; swaps ++ def img = ImageIO.read(file.file) for (x in (0..img.getWidth()-1)) { for (y in (0..img.getHeight()-1)) { def c = img.getRGB(x, y) Color.argb8888ToColor(tmpc, c) if(tmpc.a < 0.1f) continue if(map.containsKey(c)){ img.setRGB(x, y, (int)map.get(c)) } } } ImageIO.write(img, "png", file.file) } println "Swapped $swaps images." }else{ throw new InvalidUserDataException("No replacement colors specified. Use -Pcolors=\"\""); } } } task pack(){ dependsOn 'prePack' doLast { TexturePacker.process("core/assets-raw/sprites/", "core/assets/sprites/", "sprites.atlas") delete{ delete textureFolder } } } task prePack(){ dependsOn "cleanup" doLast{ TexturePacker.process("core/assets-raw/sprites/", "core/assets/sprites/", "sprites.atlas") } finalizedBy 'generateSprites' } task cleanup(){ delete{ delete textureFolder } } task generateSprites(dependsOn: classes, type: JavaExec) { file(textureFolder).mkdirs() main = "io.anuke.mindustry.PackerLauncher" classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = textureFolder } task updateBundles(dependsOn: classes, type: JavaExec) { file(textureFolder).mkdirs() main = "io.anuke.mindustry.BundleLauncher" classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = "../core/assets/bundles/" }