scopedvr-map-editor/tools/sync_terrain_tex.sh

47 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# Terrain-Textur-Sync (Karte t_ab408127): terrain_arrays.res + Thumbnails aus
# dem Client-Klon in den Map-Editor spiegeln (analog tools/sync_models.sh).
# Die CC0-Texturen leben EINMAL im Client-Repo; der Editor lädt sie via
# res://assets/textures/terrain/ (Muster: models/-Ordner mit .gdignore).
#
# Aufruf: aus dem Map-Editor-Repo → tools/sync_terrain_tex.sh [--check]
set -u
MODE="sync"
if [ "${1:-}" = "--check" ]; then MODE="check"; fi
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CLIENT="${SCOPEDVR_CLIENT_DIR:-}"
for k in "$DIR/../scopedvr-client" "$DIR/../../scopedvr-client"; do
[ -d "$k/assets/textures/terrain" ] && CLIENT="$(cd "$k" && pwd)" && break
done
if [ -z "$CLIENT" ]; then
echo "FEHLER: Client-Klon mit assets/textures/terrain nicht gefunden."
echo " SCOPEDVR_CLIENT_DIR=/pfad/zum/client setzen oder Klon nach ../scopedvr-client."
exit 1
fi
DST="$DIR/assets/textures/terrain"
mkdir -p "$DST"
touch "$DST/.gdignore" # Godot soll die Rohdateien NICHT importieren
changed=0
for f in terrain_arrays.res terrain_thumbs.png terrain_thumbs.json; do
if ! cmp -s "$CLIENT/assets/textures/terrain/$f" "$DST/$f" 2>/dev/null; then
if [ "$MODE" = "check" ]; then
echo "ABWEICHUNG: $f"
changed=1
else
cp -f "$CLIENT/assets/textures/terrain/$f" "$DST/$f"
echo "kopiert: $f"
changed=1
fi
fi
done
if [ "$MODE" = "check" ]; then
[ "$changed" -eq 0 ] && echo "--check: terrain-Texturen aktuell (Exit 0)." && exit 0
echo "--check: terrain-Texturen weichen ab (Exit 1)."
exit 1
fi
echo "Sync fertig: $DST"
exit 0