#!/bin/sh # Startet "Ein Königreich für ein Lama" (Disney/Argonaut, 2000) unter Wine. # # Beim ersten Start wird ein eigenes 32-Bit-Wine-Prefix angelegt. Bei jedem # Start werden Laufwerk L: (Spiel-CD), Registry und Fenstergröße gesetzt. # # Einstellungen (optional) in ~/.config/ein-koenigreich-fuer-ein-lama.conf: # WIDTH=1920 # Fensterbreite (Standard: Breite des Hauptmonitors) # HEIGHT=1080 # Fensterhöhe (Standard: Arbeitsbereich - Titelleiste) # TITLEBAR=28 # Höhe der Fenster-Titelleiste in Pixeln # WINEPREFIX=... # anderes Prefix (Standard: ~/.wine-lama) set -e DATA=/opt/ein-koenigreich-fuer-ein-lama CONF="${XDG_CONFIG_HOME:-$HOME/.config}/ein-koenigreich-fuer-ein-lama.conf" TITLEBAR=28 WIDTH= HEIGHT= [ -f "$CONF" ] && . "$CONF" export WINEPREFIX="${WINEPREFIX:-$HOME/.wine-lama}" export WINEARCH=win32 export WINEDEBUG="${WINEDEBUG:--all}" GAMEDIR="$WINEPREFIX/drive_c/Program Files/Disney Interactive/Ein Koenigreich fuer ein Lama" WINGAME='C:\Program Files\Disney Interactive\Ein Koenigreich fuer ein Lama' # --- Prefix anlegen -------------------------------------------------------- if [ ! -f "$WINEPREFIX/system.reg" ]; then echo "Lege Wine-Prefix in $WINEPREFIX an ..." wineboot -i >/dev/null 2>&1 wineserver -w fi # --- Programmdateien (Festplatten-Teil der Installation) ------------------- # Programmdateien werden verlinkt; Spielstände (*.ksv) werden kopiert, da das # Spiel sie im Programmverzeichnis überschreibt. mkdir -p "$GAMEDIR/music" for f in "$DATA"/hd/* "$DATA"/hd/music/*; do [ -f "$f" ] || continue rel="${f#"$DATA"/hd/}" case "$f" in *.ksv) [ -e "$GAMEDIR/$rel" ] || { cp "$f" "$GAMEDIR/$rel"; chmod u+w "$GAMEDIR/$rel"; } ;; *) ln -sfn "$f" "$GAMEDIR/$rel" ;; esac done # --- Spiel-CD als Laufwerk L: ---------------------------------------------- # Mit aktiven Mods (lama-mod an) zeigt L: auf das Overlay. if [ -d "$WINEPREFIX/cd-overlay" ]; then ln -sfn "$WINEPREFIX/cd-overlay" "$WINEPREFIX/dosdevices/l:" else ln -sfn "$DATA/cd" "$WINEPREFIX/dosdevices/l:" fi # --- Fenstergröße bestimmen ------------------------------------------------ if [ -z "$WIDTH" ] || [ -z "$HEIGHT" ]; then geo=$(xrandr --current 2>/dev/null | awk ' / connected/ { for (i = 1; i <= NF; i++) if ($i ~ /^[0-9]+x[0-9]+\+/) { if ($0 ~ / primary /) { print $i; found = 1; exit } if (!first) first = $i } } END { if (!found && first) print first }') mw=${geo%%x*} mh=${geo#*x}; mh=${mh%%+*} wa=$(xprop -root _NET_WORKAREA 2>/dev/null | sed -n 's/.*= *//p' | cut -d, -f4 | tr -d ' ') case "$mw$mh" in ''|*[!0-9]*) mw=1024; mh=768 ;; esac h=$mh case "$wa" in ''|*[!0-9]*) ;; *) [ "$wa" -lt "$h" ] && h=$wa ;; esac h=$((h - TITLEBAR)) : "${WIDTH:=$mw}" : "${HEIGHT:=$h}" fi # --- Registry -------------------------------------------------------------- REG=$(mktemp --suffix=.reg) trap 'rm -f "$REG"' EXIT cat > "$REG" </dev/null 2>&1 # --- Start ----------------------------------------------------------------- # Das Spiel legt Spielstände im aktuellen Verzeichnis an. cd "$GAMEDIR" wine "$WINGAME\\groove.exe" "$@"