#!/usr/bin/env bash # Compila o Tangler (Andrzej Novosiolov, CC BY 4.0; github.com/andrzej-nov/Tangler, Kotlin + libGDX 1.14.2) para a # web com o plugin gdx-teavm 1.6.2 (TeaVM 0.15.0, saida JavaScript), JDK 17 do artifacts/tools e o Gradle wrapper do # projeto (9.7.1, sha256 pinado) com GRADLE_USER_HOME em artifacts/build/cache/gradle-tangler: # # src/FredGames.Bundler/Builds/build-tangler.sh # # O projeto nao tem modulo web; o tangler/tangler-fredygames.patch acrescenta o modulo teavm (build.gradle com o # plugin e o gdx-freetype-web, mais o WebLauncher) e tira da build o que nao serve ao navegador: android, ios, lwjgl3, o # plugin foojay e o plugin do Android/RoboVM. Mudancas no jogo: # - o gerador padrao do Kotlin (kotlin.random.Random.Default) usa ThreadLocalRandom, que o TeaVM nao consegue criar # (setSeed lanca UnsupportedOperationException e o jogo trava ao sortear a primeira peca): helper/Random.kt usa o # gerador puro do Kotlin com semente do relogio; # - tela de creditos sem os links de e-mail, Telegram e GitHub (Gdx.net.openURI) e sem os logos de marcas, que o # clear-logos.py tira do atlas; # - a fonte ADYS-Bold_V5.ttf (sem licenca declarada) sai e entra a Poppins Bold (SIL OFL 1.1, google/fonts) em tangler/. # O index.html e nosso (CSP so desta origem); ver java-web/env.sh. # # Saida: artifacts/build/tangler-/tangler-web.tar.gz. A licenca (CC BY) nao exige hospedar o fonte. set -euo pipefail here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$here/java-web/env.sh" tangler 17 COMMIT=1144eb3d4770a59c8c88d1a305e56dd7bc305f8c SHA256=967e9b2861a3ec5e68c7e9114586c6202d407d01913ad6ce8a49abf49ddd3033 POPPINS_SHA256=983676516167748b74de6f4771fb384c664fd913acb8b471122ecacf5da5ea6c out="$root/artifacts/build/tangler-${COMMIT:0:7}" py="$root/artifacts/tools/venv/bin/python" jw_fetch "https://codeload.github.com/andrzej-nov/Tangler/tar.gz/$COMMIT" "$SHA256" "tangler-${COMMIT:0:7}.tar.gz" echo "$POPPINS_SHA256 $here/tangler/Poppins-Bold.ttf" | shasum -a 256 -c - >/dev/null rm -rf "$out"; mkdir -p "$out/project" tar -xzf "$cache/tangler-${COMMIT:0:7}.tar.gz" -C "$out/project" --strip-components 1 cd "$out/project" patch -s -E -p1 < "$here/tangler/tangler-fredygames.patch" rm -f assets/ADYS-Bold_V5.ttf assets/.gitkeep cp "$here/tangler/Poppins-Bold.ttf" assets/Poppins-Bold.ttf "$py" -I "$here/tangler/clear-logos.py" assets/Main.atlas assets/atlas.png jw_gradle :teavm:gdx_teavm_web_js_build > "$out/gradle.log" 2>&1 || { tail -40 "$out/gradle.log" >&2; exit 1; } JW_NO_PROGRESS=1 jw_post teavm/build/dist/js/webapp "$out/web" tangler Tangler '#404040' '#e0e0e0' app.js cd "$out" jw_pack web tangler-web.tar.gz ( shasum -a 256 tangler-web.tar.gz; cd web && find . -type f -print0 | sort -z | xargs -0 shasum -a 256 ) > SHA256SUMS head -1 SHA256SUMS; du -sh web