Skip to content

Instantly share code, notes, and snippets.

View fourlastor's full-sized avatar

Daniele Conti fourlastor

  • World
View GitHub Profile
@fourlastor
fourlastor / GenerateStrings.kt
Created April 5, 2024 12:50
Create constants for translation files
abstract class GenerateStrings : DefaultTask() {
@get:InputDirectory
abstract val propertiesDir: DirectoryProperty
@get:OutputDirectory
abstract val destination: DirectoryProperty
init {
@fourlastor
fourlastor / AutoPool.java
Created October 26, 2023 07:21
Auto poolable
package io.github.fourlastor.pool;
import com.badlogic.gdx.utils.Pool;
import com.badlogic.gdx.utils.Pools;
public class AutoPool<T> extends Pool<AutoPoolable<T>> {
private final Pool<T> pool;
public AutoPool(Class<T> type) {
@fourlastor
fourlastor / GenerateStrings.kt
Created October 5, 2023 08:28
Generate strings from translation files
package io.github.fourlastor
import com.squareup.javapoet.AnnotationSpec
import com.squareup.javapoet.FieldSpec
import com.squareup.javapoet.JavaFile
import com.squareup.javapoet.MethodSpec
import com.squareup.javapoet.TypeSpec
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.tasks.InputDirectory
import com.badlogic.gdx.scenes.scene2d.Actor;
import de.golfgl.gdx.controllers.ControllerMenuStage;
import de.golfgl.gdx.controllers.IControllerScrollable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ControllerScrollableHelper implements IControllerScrollable {
private final ControllerMenuStage stage;
@fourlastor
fourlastor / ClassComparator.kt
Created March 7, 2023 08:21
Class public api comparator
import spoon.Launcher
import spoon.reflect.declaration.CtClass
import spoon.reflect.declaration.CtNamedElement
import java.io.File
import kotlin.system.exitProcess
fun main(args: Array<String>) {
if (args.size < 2) {
println("You need to pass two paths")
exitProcess(1)
@fourlastor
fourlastor / TileMerge.java
Created March 6, 2023 08:07
Tile merging for libgdx
public class TileMerge {
/**
* Merges a grid of tiles together
* See <a href="https://love2d.org/wiki/TileMerging">original implementation for LÖVE2D</a>
*/
public static ArrayList<Rectangle> mergeTiles(boolean[][] tiles, int width, int height) {
ArrayList<Rectangle> rectangles = new ArrayList<>();
for (int x = -1; x <= width; x++) {
int startY = -1;
@fourlastor
fourlastor / build-after.gradle.kts
Created March 2, 2023 10:11
to-version-catalogs
plugins {
alias(libs.plugin.myPlugin)
}
dependencies {
implementation(libs.myLibrary)
}
package io.github.fourlastor.game.level.component;
import com.badlogic.ashley.core.Component;
import com.badlogic.gdx.scenes.scene2d.Actor;
public class ActorComponent implements Component {
public final Actor actor;
public final Enum<?> layer;
@fourlastor
fourlastor / SineLayout.kt
Created November 25, 2022 14:27
Sin based lazy layout
package io.github.fourlastor.keys.lazylayout
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.checkScrollableContainerConstraints
import androidx.compose.foundation.clipScrollableContainer
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.gestures.scrollable
import androidx.compose.foundation.lazy.layout.LazyLayout
import androidx.compose.foundation.lazy.layout.LazyLayoutItemProvider
@fourlastor
fourlastor / AppRun
Last active September 15, 2022 08:03
Github actions jpackage
#!/bin/sh
SELF=$(readlink -f "$0")
HERE=${SELF%/*}
export PATH="$HERE/bin:$PATH"
export ALSOFT_DRIVERS=pulse # not sure if necessary tbh
exec "yourgame" "$@"