Installation
============

0. Installation fuer die Ungeduldigen
-------------------------------------
- das tar file entpacken in z.B. /usr/lib/X11
- cd patience-1.8
- entweder: - ./install.tcl
- oder:     - Makfile editieren und die Zeilen 10, 11 und 20 ueberpruefen
            - make install

1. Installation des ausfuehrbaren Tcl-Programms
-----------------------------------------------

Die Entscheidung, unter welchem Pfad das ausfuehrbare Pragramm und die
Library-Directory fuer die Patience angelegt werden, ist vom
persoenlichen Geschmack abhaengig. Mir fallen da als moegliche
Kandidatenkombinationen die im folgenden dargestellten ein.

 Ausfuehrbares Programm     	 Library-Directory
 ----------------------		 -----------------
 /usr/games/patience        	 /usr/games/lib/patience-1.8
 /usr/bin/X11/patience      	 /usr/lib/X11/patience-1.8
 /usr/local/bin/patience    	 /usr/local/lib/patience-1.8
 /home/krischan/bin/patience	 /home/krischan/patience-1.8

Wer immer jetzt die Patience einspielt, muss schreibberechtigt fuer
die beiden ausgewaehlten Directories sein. Dann kann die Patience durch
die folgenden Schritte installiert werden, wobei <binDir> und <libDir>
die beiden obigen Directories bezeichnen.

- In die der Library-Directory uebergeordneten Directory wechseln mit z.B.
    cd /usr/local/lib
- Die Installationsdiskette entpacken mit 'tar xvzf /dev/fd0'.
  Also zumindests funktioniert das so auf meinem Rechner. Evtl. muss
  auch ein anderer Name wie /dev/floppy oder /dev/rfd0H1440ds angegeben
  werden. Falls sich die Installation bereits auf der Platte oder einer CD
  befindet, kann sie mit 'tar xvzf /tmp/patience-1.8.tgz' (z.B.) entpackt
  werden.
  Wer ein tar besitzt, das die z-Option zum Entkomprimieren nicht versteht,
  muss den folgenden Fingerbrecher benutzen, um die Patience zu entpacken:
  'gzip -cd /cdrom/langerPfad/patience-1.8.tgz | tar xvf -'
- In die soeben erzeugte Directory wechseln: 'cd patience-1.8'.
- Wer einen wish der Version 4 besitzt, kann jetzt das
  Installationsprogramm install.tcl aufrufen. Es ist ein
  englischsprachiges Tk-Programm, das die folgenden Schritte als
  Menuepunkte anbietet. Nachdem im Menue Configure die
  angebotenen Einstellungen gemacht wurden, kann im Menue Make
  durch '(Make then) Start' die Patience erzeugt und aufgerufen,
  bzw. durch 'Make Installation' das erzeugt Programm in die
  entsprechenden Directories kopiert werden.

  Falls noch kein neuer wish zur Verfuegung steht oder kein
  X-Display in der Naehe ist oder sonstige Gruende gegen eine graphische
  Oberflaeche sprechen, wird gemaess der naechsten drei Punkte dieser Liste
  installiert.
- Mit dem Editor der Wahl das 'Makefile' editieren und im
  zweiten Teil (also so ungefaehr ab Zeile 10) die folgenden Variablen
  den Gegebenheiten auf der aktuellen Maschine und/oder den persoenlichen
  Vorlieben anpassen.
  = WISH: Dieser Variable wird der vollstaendige Pfadname des
          Tcl/Tk-Interpreters zugeordnet. Er kann (im Bourne-, Korn- oder
          aehnlichen Shell) erfragt werden durch einen Aufruf von
          'type wish'. Bei mir lautet die Zeile deshalb zur Zeit
          'WISH = /usr/bin/wish'.
          Um die Funktionalitaeten in einer Streitpatience
          auch ueber Rechnergrenzen hinweg nutzen zu koennen,
          muss hier der Name eines Interpreter-Shells angegeben werden,
          der die Tcl-DP Prozeduren enthaelt. Dieser Shell heisst in der
          Regel 'dpwish'. Das Tar-Archiv mit der Distribution heisst
          'tcl-dp3.2.tar.Z' und ist u.a. erhaeltlich am FTP-Rechner
          'mm-ftp.cs.berkeley.edu' in der Directory '/pub/multimedia/Tcl-DP'.

  = LIB_DIR: Hier wird die vorhin ausgesuchte <libDir> eingetragen, bei mir
             lautet die Zeile z.Z. 'PAT_PATH = /usr/lib/X11/patience-1.8'.
  = BIN_DIR: Hier wird die vorhin ausgesuchte <binDir> eingetragen, bei mir
             lautet die Zeile z.Z. 'PAT_PATH = /usr/bin/X11/patience-1.8'.
  = CFLAGS: Fuer die Uebersetzung des erweiterten Patience-Interpreters
            'patsh' kann es wichtig sein, diese Variable korrekt zu setzen,
            falls sich die Tcl-Includedateien an einem ungewoenlichen Ort
            befinden.
- Dann 'make patience' aufrufen; nach spaetestens fuenf bis zehn Sekunden
  sollte alles fertig zum Losspielen sein. Im Programm ist deutsch als
  Defaultsprache eingestellt; wer diese Beschreibung bis hierher durchgelesen
  hat, sollte ruhig den Defaultwert belassen. Die Sprache kann durch eine
  Resource gesetzt werden (siehe Abschnitt 4. X-Resourcen).
- Ein Probespiel kann jetzt bereits mit './patience' aufgerufen werden.
  Damit es spaeter von ueberall her nur durch Nennung des Namens aufgerufen
  werden kann, muss noch der Befehl 'make install' ausgefuehrt werden.

2. Der erweiterte Interpreter
-----------------------------

Wer Lust hat, kann noch ein C-Programm 'patsh.c' uebersetzen; das
geschieht mit Hilfe des Makefiles und einem Aufruf von 'make patc'.
Anschliessend wird das erzeugte ausfuehrbare Programm installiert durch
'make installc'.

Durch obigen Aufruf wird neben dem Programm noch ein
Patience-Interpreter  'patsh' erzeugt; er entspricht dem normalen
Tk-Interpreter 'wish', ist aber erweitert um eine Prozedur zum
Mischen sowie einige zentrale Prueffunktionen und damit etwas schneller.

3. Starten unter anderem Namen
------------------------------

Wenn das Programm den Namen einer bekannten Patienceregel besitzt,
wird bei Programmstart sofort ein Spiel mit den entsprechenden Regeln
gestartet. Wer also mag, kann nach Ausfuehrung der folgenden zwei
Befehle das Programm gleich mit der Kleinen Harfe oder Canfield
aufrufen:
  ln -s patience canfield
  ln -s patience klHarfe
Das gelingt natuerlich auch mit den internen Namen von anderen,
selbstkonstruierten Regelsaetzen.

Der gewuenschte Name kann auch als Parameter mit uebergeben
werden. Die Streitpatience ist daher auch direkt spielbar durch
  patience -name streit

Es ist also z.B. moeglich, im Rootmenue des Windowmanagers ein Untermenue
Patience zu erzeugen, dass die Patience mit der jeweiligen Spielregel
startet. In der Initialisierungsdatei ~.fvwmrc des
fvwm-Windowmananger sieht das wie folgt aus:

Popup "Patience 1.7"
  Exec "Standard"  exec patience &
  Exec "Kl. Harfe" exec patience -name klHarfe  &
  Exec "Canfield"  exec patience -name canfield &
  Exec "Spinne"    exec patience -name spider   &
  Exec "Streit"    exec patience -name streit   &
  Exec "Seehafen"  exec patience -name seehaven &
EndPopup

4. X-Resourcen
--------------

Das Programm greift auf einige Resourcevariablen zurueck, die das
aeussere Erscheinungsbild aendern. In der folgenden Tabelle
sind die Namen, die Defaultwerte und ihre Bedeutung aufgelistet.

Resource      Defaultwert    Bedeutung
warteZeit     10	     Vorgabe der Wartezeit bei der Pfeildarstellung
rot           IndianRed4     Rote Farbe der Karo- und Herzkarten
grau          gray80	     Graue Hintergrundfarbe der Stoecke
weiss         gary95	     Weisse Hintergrundfarbe der Karten
xlogo         /usr/include/X11/bitmaps/xlogo11
                             Bitmap oben links in Menueleiste
sprPath       <libDir>/spiel nach Spielregeln zu durchsuchende Directories
mitMischComic True	     Vorgabe von Mit Comics/Verteilen
mitBewegComic True	     Vorgabe von Mit Comics/Kartenbewegen
schatten      5              Vorgabe der Schattenhoehe
mitStreitbar  False   	     Vorgabe von Patience/Streitbereit
kartenFont    normal	     Vorgabe des Kartenfonts
sprache       deutsch	     die Sprache (deutsch oder english)
daemonPort    4567           Portnummer des Patience-Daemons

Die Farbresourcen rot, weiss und grau haben
nur Auswirkungen auf durch Bitmaps dargestellte Karten; bei
Darstellung der Karten durch Pixmaps oder Gif-Photos werden sie
ignoriert.

Die Resourcen werden nacheinander an den folgenden Orten mit
aufsteigender Prioritaet gesucht:
- die vom Programm vorgegebenen Defaultwerte, wie in obiger Tabelle
  beschrieben;
- in der systemweit installierten Resourcedatei <libDir>/app-default;
- in der von der Spielerin konfigurierten Resourcedatei ~/.Xdefaults;
- in den durch 'xrdb -merge' definierten Resourcen.

In den Resourcedateien hat die Zuordnung eines Wertes zu einer
Resource den folgenden Aufbau:
  *patience.<Resourcename>: <Wert>
Beispielsweise wird der Schwarz/Weiss-Font als Vorgabe fuer die
Kartendarstellung gesetzt durch:
  *patience.kartenFont: sw

5. Bekannte Fehler
------------------
- Der Pfeil hat bei komprimierten Stapeln eine falsche Y-Koordinate.

6. Ausstehende Verbesserungen
-----------------------------
- Alle nicht sichtbaren Karten (auf Stock, Talon und Strafstapel)
  sollten von der Bildflaeche geloescht werden, damit das Geben und der
  Verteilcomic schneller gehen.

