    This program is a game with a partly randomized scenery
    Copyright (C) 2002   Stefan Ziegler
    This file is part of RandomXmas v1.14.

    RandomXmas v1.14 is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    RandomXmas v1.14 is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy (gpl.txt) of the GNU General Public
    License along with RandomXmas v1.14; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

While executing the program, you get the license text by pressing the key 'l'.
E-mail address: stefan.ziegler@s1998.tu-chemnitz.de
For additional and/or more actual information see file COPYING in the root
directory of this package.
-------------------------
			  	History:

21.12.2000: erste Beta-Version, einige kleinere Macken, aber keine schweren
		Fehler, spielbar

22.12.2000: v1.00 Erste nahezu fehlerfreie Version

25.12.2000: v1.01 -Anzeige der Geschenke ausschaltbar,
		  -eine schon vorhandene Ebene wird nicht neu angelegt, wenn in
		   sie gewechselt wird (sonst Speicher belegt, der nicht
		   wieder freigegeben werden kann)
		  -Readme mit History
		  -Versionsnummern eingefuehrt.

05.01.2001: v1.02 Punktanzeige korrigiert, jetzt FELDEINHEIT ueberall
		  Mass fuer Abstand, statt MAXFELDHOEHE zwischen grossen und
		  kleinen Geschenken.

06.01.2001: v1.03 Zeitausgabe am Ende umprogrammiert auf gettimeofday. und ohne
		  doppeltes Newline
		  Makefile erweitert auf alle X-Libs

09.11.2001: v1.10 - Punkteanzeige mit Ziffern, Schriftverwendung,
		  - Highscorefile-Verarbeitung/Anzeige,
		  - Punktesammeln erweitert,
		  - globales Licht in Szene und entsprechende Farben,
		  - Joystickfunktion eingebaut aber nicht getestet,
		  - Aufteilen des Codes in Files mit den entsprechende Klassen,
		  - Standard-Sicht veraendert.
		  - ToDoList eingefuegt in readme

23.12.2001: v1.11 - Sprunghoehe abhaengig von MAXFELDHOEHE
		  - Quadrics geloescht bei Ebenenwechsel
		  - Schriftanzeige deutlicher, von 64 auf ca. 128 Zeichen
		  - auch bei Highscore X-Drehung(vorher nur Y/Z) moeglich
		  - Highscore zeigt jetzt auch beliebiges File ohne Probleme 
		    an (bei Readonly-Rechten auch nicht veraendert)
		  - Filelaenge beliebig durch Nutzung von Listen
		  - Scrolling bei Highscore-Dateianzeige.
		  - Displaylisten in extra Programmstueck ausprobiert
		  - Detaillevel einstellbar fuer Baeume/Huegel
		  - Klassen-Beschreibung eingefuehrt in Readme.txt

09.01.2002: v1.12 - Tabulator in Grafikausgabe korrigiert, 1 als erste Position
		  - Displaylisten und Texturen vollstaendig in Ebene/Feld,
		    auch ungerade Anzahl in MAXFELD unterstuetzt
		  - Mann mit Texturen, auf eigenen Blickwinkel umschaltbar,
		    bei Bedarf auch mit DETAILS anpassbar, Displaylist
		  - nur noch 6 verschiedene Buchstaben zum Punktesammeln
		  - Klasse Texturen, kann sie auch selber darstellen
		  - Klasse Stringlist geaendert, nur noch strlen in FindText
		    abhaengig von Grundtyp char-Feld.
		  - Readme mit Inhalt, Abschnitte Texturen, Lizenz,
		    Teile in Englisch.
		  - Vier Textur-Dateien mitgeliefert, Makefile neu geschrieben
		  - Darstellung von Mann/Ebene/Feld weniger Push-/Popmatrix,
		    beschleunigt
		  - Double-Buffer eingefuehrt gegen Flimmern beim Neu-Zeichnen

06.05.2002: v1.13 - Warnings bei Uebersetzung aufgeloest
   (allgemein)    - einige System-Header-Files hinzugefuegt
		    (sont manchmal Probleme beim Uebersetzen)
		  - readme.txt angepasst, Englische Version extra
		  - neue Texturen, alte verbessert, in Unterverzeichnis.

   (ebenefeld)    - Ebenenummer und Text in extra Funktion, extra Fensterbereich
		    und unabhaengig von MAXFELD (jetzt feste Groessen)
		  - Ebene Bodenflaeche ohne GEN_TEXTUR(ausgeschaltet),
		    alle anderen jetzt mit GEN_TEXTUR	

   (geschenke)	  - TriggerPunktAnz gibt keinen Wert mehr zurueck
		  - Punktanzeige auf fester Position (ohne MAXFELD)

   (grafikausg)	  - Funktion DrawGlutChar zeichnet mit GLUT-Strich-Schrift
		  - Diese nur genutzt bei gesetzter Konstante USE_GLUT_FONT
		  - Fuer Groesse nur noch positive Werte angenommen
		  - bei Divisionen float Werte als Divisor(Teiler)

   (highsboard)   - ausgegliedert aus Datei spiel.cpp
		  - Uebergabe Punkte, Name, Dateiname an Konstruktor
		  - CloseSublist, GetListLine extra Funktion, vereinfacht
		    Readfile, Writefile -> keine doppelten Zeilen drin
		  - Variablen uebersetzt/umbenannt ins Englische
		  - Fehler bei Punktzahl -1 speichern entfernt (-2 als Abbruch)

   (konstanten.h) - Farb-, Licht- und Materialwerte dorthin
		  - Unterteilt in 4 Abschnitte -> umgeordnet
		  - einige (v.a. boolesche) Variablen als char statt short
		  - neu: MANN_NUMBER, MANN_CAP, USE_GLUT_FONT, MOUSE_SENSE,
			 USE_TEXTURES 

   (makefile)	  - neue Regeln fuer highsboard, spielraum
		  - SPIELOBJ aufgeteilt
		  - Regel zum Kompilieren von C-Files (inkl. CLFAGS)

   (mann)	  - extra Funktion DrawPunkte fuer Punktausgabe in extra Bereich
		  - Blickwinkel des Spielers in extra Prozedur und verbessert
		  - Fuer Klasse spielraum angepasst, Ebenegenerierung dort
		  - in Addpos neue x- und y-Position zusammengelegt
		  - bekommt Punkte des Feldes von spielraum  
		  - Kopf-Sphere richtig gedreht, damit Textur richtig liegt
		  - durch MANN_CAP mit/ohne Muetze zeichnen

   (spiel.cpp)	  - Winkelneuberechnung bei Drehen in negativer Richtung
  		    korrigiert (und in neue DoRotate)
		  - Mausunterstuetzung fuer Bewegung der Spielfigur,
		    und Drehen/verschieben/Scrollen -> mousemodifmodes
		    MOUSE_SENSE in konstanten.h zur Sensibilitaet
		  - Maus-Menue, entspr. Funktionen damit wie Tastatur
		  - Joystick-Funktion wie MouseMotion angepasst,
		    (Joystick erst ab GLUT API 4, Win unterstuetzt), wird mit
		    dieser Bearbeitungsfunktion wohl falsch arbeiten (unab-
		    haengig von Unterstuetzung)
		  - Winkel, Verschiebungen in 2 Felder fuer je 3 Achsen
		    modifmodekey statt 3 Variablen -> Var.zahl verkleinert
		  - Name schon bei Uebergabe zusammengesetzt, so an highscore
		  - Mehrere Spielfiguren (Feld weihmann, Zeiger weihmann_id)
		    (CreateFigure, SwitchFigure)
		  - Punktlichter vorn und hinten(Pos) -> eigene AMB, DIF, SPEC,
		    in extra Funktion bei Draw da manchmal verstellt
		  - an Nutzung von Klasse spielraum angepasst
		  - InitHighscore aus display ausgelagert, mit Menue-Anpassung
		    in display auch gleich Darstellung -> ohne Taste druecken
		  - Funktion DrawGameScreen ausgelagert aus display, zwei
		    Fensterbereiche ->Viewport, LookAt, Perspective
		  - bei Reshape bei Blick Mann nicht LookAt veraendert
		  - Funktionen DoRotate, DoTranslate aus Eingabebehandlung
		    heraus (nicht mehr doppelt bei Maus, Joystick, Tastatur)
		    beide umgeschrieben,
		  - DoMove genauso ausgelagert aus Eingabebehandlung, total 
		    umgeschrieben (nur noch eine statt 15 lokalen Variablen)
		  - bei Tastaturbehandlung (void key(...) ) grosse/kleine 
		    Achsenangabe nur durch mult unterschieden

   (spielraum)	  - ausgegliedert aus ebenefeld, mann, spiel.cpp
		  - aus Struktur Klasse gemacht -> Methoden fuer Variablen
		  - Variablen umbenannt/uebersetzt
		  - Switchlevel: umschalten in andere Ebene, aus Mann heraus
		  - GetContent, GetAbove statt direkter Abfrage der Ebene
		  - SwitchEnd: umschalten auf highscore/Spielende zentral
		  - uebernimmt Laden der Texturen von spiel.cpp
		  - TriggerViewMann uebernimmt rueckschalten von spiel.cpp
		  - Draw-Funktionen fuer Zugriff auf entspr. Ebene-Fkt.

   (texturen)	  - neue Funktion Test_print_error zur Fehlerausgabe
		  - diese mit entspr. Fehlertexten eingefuegt
		  - 24-bit BMP: Farbreihenfolge umgedreht entspr. xv-Erzeugung
		  - Textur-Koordinaten generieren einschalten (OBJECT_LINEAR)
		  - Ausgabe auf Ebene: ohne Generierung; umgebaut

29.11.2002: v1.14 - neue Verzeichnisstruktur (mit bin, src, objects, include)
   (allgemein)    - Veroeffentlichung unter GPL
		  - makefile angepat an neue Klassen und Verzeichnisse
		  - history.txt aus readme.txt heraus
		  - viele Aenderungen Richtung C++
		  - language.h mit allen Strings zur Sprachanpassung
		  - Readme und GPL aus Spiel heraus lesbar
		  - eigene neue Ansicht fuer Zeilenmodus
		  - wirklich unabhaengige Spielfiguren
		  - kein Ueberlauf mehr bei langen Namen als Startargument

     (/doc)	  - readme.html und readme_EN.html

   (ebenefeld)    - Feld & Ebene arbeitet mit neuer Klasse Feldpunkte statt int
		  - Texture* texarray mit const da nicht veraendert
		  - ohne char textoben[]
		  - Bedeutung der Buchstaben darueber in Ebene festgelegt

   (geschenke)    - neue Grundklasse Punkte, abstrakte Basisklasse
		    mit klein, gross, kleinmult, grossmult
		  - Klasse Feldpunkte, abgeleitet von Punkte, mit Operator = 
		  - Geschenke abgeleitet von Punkte, virtueller Destruktor,
		    angepat an Basisklasse, Calcpunkte() statt Punkte()
		  - int-Zuweisungs-Operator von Grafikausgabe genutzt
		  - Geschenke mit += Operator -> Geschenke addierbar 
 
   (grafikausg)   - private Methode Compare und public Vergleichsoperatoren 
		  - const-Rueckgaben bei GetColor, GetText
		  - Zuweisung mit Grafikausgabe, int und char moeglich
		  - Operatoren *=, +=, -=, +, *, -
		  - const DrawGlutChar/DrawChar-Funktion, const *text 

   (highsboard)   - neue Klasse Fileviewer, als Basisklasse von Highscore
		  - Fileviewer liest nur, macht Ausgabe; Highscore schreibt
		    in Dateien
		  - Objpointerlist<string> genutzt statt Stringlist
		  - Kopf- und Fuzeilen frei belegbar
		  - mit C++-Streamklassen gearbeitet
		  - zu langer Spielername abgeschnitten

   (listen)	  - Simplelist mit const-Argumenten, konstante Klassen moeglich
		  - neue Template-Klasse Objpointerlist statt stringlist,
		    nimmt Pointer beliebiger Typen auf
		  - Stream-Operatoren <<, >> in Objpointerlist
		  - Doublelist, Obkpointerlist mit const-Argumenten
		  - teilweise const-Funktionen (nicht vollstaendig)
		  - listencheck angepat, mit const Simplelist

   (konstanten.h) - bool-Typ statt char dort wo es sinnvoll ist
		  - GLOBAL_VIEW-Konstantenfeld als Blick auf Spielfeld
		  - Fuer Sommer und Winter unterschiedliche Belegungen
		    (mit/ohne Muetze, Texturen, Farben, Material)

   (mann)	  - mit Levelnummer fuer Ebenenzuordnung (unabh. Spielfiguren)
		  - Texture* *texarray als const
		  - angepat an neue Klasse Feldpunkte, geaenderte Geschenke,
		    geaenderte Klasse Ebene

 (read_constants) - Vorschlag, wie man Konstantenfile einlesen koennte

   (spiel.cpp)    - Programm-Modi game, fileview, highscore (entspr. Klassen)
		  - savedangle, savedtrans speichert Ansicht(View) des Spiels,
		    bleibt erhalten, auch wenn in fileview veraendert
		  - nutzt Fileviewer fuer Darstellung von GPL, Readme
		  - Levelnummer der Spielfigur beachtet
		  - neue Funktionen: InitShowFileview(), SwitchToGame() v.a.  
		    von Fileview aus noetig, ShowFile(), BuildSubMenus
		  - InitHighscore angepat an geaenderte Klasse Highscoreboard
		  - neue Menuepunkte, unterschiedliche in Spiel und Fileview
		  - eigener, veraenderter View (Ansicht) bei Fileview/Highscore
		  - Nutzung der GLOBAL_VIEW-Konstante
		  - Tastaturkommandos fuer GPL (l), Readme (h)
		  - Menuetexte u.a. aus language.h
		  - Scrolling vertikal mit Maus abhaengig von sense
		  - Scrolling links/rechts mit Maus/Tastatur
		  - Ausgabe Lizenzkommentare zum Programmbeginn
		   
   (spielraum)	  - angepat an neue Klasse Feldpunkte
		  - Texarray als const herausgegeben (unveraenderbar)
		  - short SwitchLevel(int) da short MAXEBENEN
		  - GLOBALVIEW-Konstante eingesetzt

   (testtexturen) - includ <stdlib.h>

   (texturen)	  - void DrawTexture() const statt ohne const
		  - void GetTextNumber() const statt ohne const
		  - (auch) angepat an language.h

