#!/bin/sh # Mods für "Ein Königreich für ein Lama" ein- und ausschalten. # # lama-mod an Mods aus ~/.wine-lama/mods/*/ aktivieren # lama-mod aus Originalzustand (L: = unveränderte CD-Daten) # lama-mod status # # Eine Mod ist ein Ordner, dessen Dateien so liegen wie auf der CD unter # Setup/Eng/Cd (z. B. wads/T1L9M001.wad, T191.COR, movies/191INTRO.DAT). # Aktiviert wird über ein Overlay aus Symlinks: Originaldateien bleiben # unangetastet, Mod-Dateien kommen dazu bzw. ersetzen gleichnamige. set -e export WINEPREFIX="${WINEPREFIX:-$HOME/.wine-lama}" MODS="$WINEPREFIX/mods" OVL="$WINEPREFIX/cd-overlay" if [ -d /opt/ein-koenigreich-fuer-ein-lama/cd ]; then BASE=/opt/ein-koenigreich-fuer-ein-lama/cd else BASE="$WINEPREFIX/iso-dk/Setup/Eng/Cd" fi case "${1:-status}" in an|on) rm -rf "$OVL" mkdir -p "$OVL" (cd "$BASE" && find . -type d) | while IFS= read -r d; do mkdir -p "$OVL/$d"; done (cd "$BASE" && find . -type f) | while IFS= read -r f; do ln -s "$BASE/$f" "$OVL/$f"; done for m in "$MODS"/*/; do [ -d "$m" ] || continue echo "Mod: $(basename "$m")" (cd "$m" && find . -path ./src -prune -o \( -type f -o -type l \) -print) | while IFS= read -r f; do # vorhandene Datei gleichen Namens (Groß-/Kleinschreibung egal) ersetzen dir=$(dirname "$f"); name=$(basename "$f") mkdir -p "$OVL/$dir" find "$OVL/$dir" -maxdepth 1 -iname "$name" -exec rm -f {} + ln -s "$m/$f" "$OVL/$f" echo " + $f" done done ln -sfn "$OVL" "$WINEPREFIX/dosdevices/l:" echo "Mods aktiv (L: -> $OVL)" ;; aus|off) ln -sfn "$BASE" "$WINEPREFIX/dosdevices/l:" rm -rf "$OVL" echo "Originalzustand (L: -> $BASE)" ;; status) echo "L: -> $(readlink "$WINEPREFIX/dosdevices/l:")" ls -1 "$MODS" 2>/dev/null | sed 's/^/installierte Mod: /' ;; *) sed -n '2,12p' "$0"; exit 1 ;; esac