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_zst@gmx.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 angepaßt 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, angepaßt 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 genutzt statt Stringlist - Kopf- und Fußzeilen 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 angepaßt, 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 - angepaßt 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 angepaßt 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) - angepaßt an neue Klasse Feldpunkte - Texarray als const herausgegeben (unveraenderbar) - short SwitchLevel(int) da short MAXEBENEN - GLOBALVIEW-Konstante eingesetzt (testtexturen) - includ (texturen) - void DrawTexture() const statt ohne const - void GetTextNumber() const statt ohne const - (auch) angepaßt an language.h