#!/usr/bin/env bash # Monta o Pixel Princess Platformer (plataforma 2D, de Vito D'Elia, MIT; Kaplay 3001.0.19, JavaScript puro sem etapa de build) a partir do commit # ba20bc4 de github.com/VTvito/pixel-princess-platformer: os arquivos estaticos do jogo (index.html, style.css, src/, vendor/, assets/) com # o patch pixel-princess-platformer/pixel-princess-platformer-fredygames.patch. # # Mudancas (so o que faz o jogo falar com fora ou o que era uma mensagem pessoal do autor): # - sem o placar global (Vercel/Upstash), o botao de compartilhar (navigator.share) e o botao do recibo que abria o WhatsApp; # - sem service worker, manifest, dica de instalacao do iOS e metatags com o endereco do autor; index.html com CSP que bloqueia tudo fora da pasta; # - o final: "Para Anna" virou "Complimenti!"/"Congratulations!" e a heroina "Anna" virou "Rosa"/"Rose" (o texto da carta era neutro). # Ficam de fora (nao rodam no navegador): api/, tools/ (geradores e testes), docs/, CLAUDE.md, .claude/, .github/, vercel.json, sw.js, manifest, package*.json, # README e a captura de tela. Os arquivos de assets/ (todos gerados pelo autor, com tools/gen) vao como estao. # # src/FredGames.Bundler/Builds/build-pixel-princess-platformer.sh # # Saida: artifacts/build/pixel-princess-platformer-ba20bc4/{pixel-princess-platformer-ba20bc4-dist.tar.gz,licenses.txt}; o tar.gz tem que sair igual em dois builds. set -euo pipefail COMMIT=ba20bc410b446c970df3c8fc10ad9fc31a425e28 SHA256=22f4bfdb75d37bd6c162a77351dfbd8d5fe0887c556da2bb29dfda3a0888ff9f here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/pixel-princess-platformer-${COMMIT:0:7}" cache="$root/artifacts/build/cache" pp="$here/pixel-princess-platformer" mkdir -p "$cache" tgz="$cache/pixel-princess-platformer-${COMMIT:0:7}.tar.gz" if [ ! -f "$tgz" ]; then curl -fsSL --retry 4 "https://github.com/VTvito/pixel-princess-platformer/archive/$COMMIT.tar.gz" -o "$tgz.partial" && mv "$tgz.partial" "$tgz" fi echo "$SHA256 $tgz" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" "$out/dist" tar -xzf "$tgz" -C "$out/tree" --strip-components 1 patch -s -p1 -d "$out/tree" < "$pp/pixel-princess-platformer-fredygames.patch" cd "$out/tree" # Codigo do placar, do compartilhamento e da instalacao: o patch tira todo uso, aqui sai o arquivo. rm src/leaderboard.js src/ui/leaderboard.js src/ui/shareButton.js src/ui/installHint.js if grep -rnE "^import .*(leaderboard|shareButton|installHint)|fetch\(|sendBeacon|serviceWorker|window\.open|api\.whatsapp|vercel" src index.html; then echo "sobrou referencia a servico externo" >&2; exit 1 fi cp index.html style.css "$out/dist/" cp -R src vendor "$out/dist/" mkdir -p "$out/dist/assets/icons" for d in audio backgrounds fonts sprites tilesets; do cp -R "assets/$d" "$out/dist/assets/$d"; done cp assets/icons/icon-192.png "$out/dist/assets/icons/" { echo "== Pixel Princess Platformer (LICENSE do repositorio, MIT)" cat LICENSE echo echo "== Pixelify Sans (assets/fonts/PixelifySans.woff2; OFL.txt do google/fonts)" cat "$pp/PixelifySans-OFL.txt" echo echo "== Kaplay 3001.0.19 (vendor/kaplay-3001.0.19.mjs, o dist/kaplay.mjs do pacote npm; LICENSE.md)" cat "$pp/kaplay-LICENSE.md" echo } > "$out/licenses.txt" find "$out/dist" -exec touch -t 202611040000 {} + ( cd "$out" && find dist -type f | LC_ALL=C sort > files.txt \ && COPYFILE_DISABLE=1 tar --format=ustar --uid 0 --gid 0 --uname root --gname root -n -cf - -T files.txt \ | gzip -n -9 > "pixel-princess-platformer-${COMMIT:0:7}-dist.tar.gz" && rm files.txt ) du -sh "$out/dist" cd "$out" && rm -rf tree ls -l "$out/pixel-princess-platformer-${COMMIT:0:7}-dist.tar.gz" shasum -a 256 "$out/pixel-princess-platformer-${COMMIT:0:7}-dist.tar.gz" "$out/licenses.txt"