Index: /orxonox/trunk/src/Makefile.am
===================================================================
--- /orxonox/trunk/src/Makefile.am	(revision 3455)
+++ /orxonox/trunk/src/Makefile.am	(revision 3456)
@@ -39,5 +39,5 @@
 		 skysphere.cc \
 		 light.cc \
-		 sfont/cone3dfont.cc 
+		 sfont/fontset.cc 
 
 noinst_HEADERS = ability.h \
@@ -82,5 +82,6 @@
 		 debug.h \
 		 skysphere.h \
-		 light.h
+		 light.h \
+		 sfont/fontset.h
 
 ## orxonox.conf will be used from home-dir instead.
Index: /orxonox/trunk/src/Makefile.in
===================================================================
--- /orxonox/trunk/src/Makefile.in	(revision 3455)
+++ /orxonox/trunk/src/Makefile.in	(revision 3456)
@@ -64,5 +64,5 @@
 	helper_parent.$(OBJEXT) track_manager.$(OBJEXT) \
 	matrix.$(OBJEXT) curve.$(OBJEXT) glmenu_imagescreen.$(OBJEXT) \
-	skysphere.$(OBJEXT) light.$(OBJEXT) cone3dfont.$(OBJEXT)
+	skysphere.$(OBJEXT) light.$(OBJEXT) fontset.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
 orxonox_LDADD = $(LDADD)
@@ -74,8 +74,7 @@
 @AMDEP_TRUE@	./$(DEPDIR)/base_object.Po ./$(DEPDIR)/camera.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/campaign.Po ./$(DEPDIR)/collision.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/command_node.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/cone3dfont.Po ./$(DEPDIR)/curve.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/command_node.Po ./$(DEPDIR)/curve.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/data_tank.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/environment.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/environment.Po ./$(DEPDIR)/fontset.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/game_loader.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/glmenu_imagescreen.Po \
@@ -250,5 +249,5 @@
 		 skysphere.cc \
 		 light.cc \
-		 sfont/cone3dfont.cc 
+		 sfont/fontset.cc 
 
 noinst_HEADERS = ability.h \
@@ -293,5 +292,6 @@
 		 debug.h \
 		 skysphere.h \
-		 light.h
+		 light.h \
+		 sfont/fontset.h
 
 EXTRA_DIST = orxonox.conf
@@ -381,8 +381,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command_node.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cone3dfont.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curve.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_tank.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/environment.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontset.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/game_loader.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glmenu_imagescreen.Po@am__quote@
@@ -504,19 +504,19 @@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o texture.obj `if test -f 'importer/texture.cc'; then $(CYGPATH_W) 'importer/texture.cc'; else $(CYGPATH_W) '$(srcdir)/importer/texture.cc'; fi`
 
-cone3dfont.o: sfont/cone3dfont.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cone3dfont.o -MD -MP -MF "$(DEPDIR)/cone3dfont.Tpo" -c -o cone3dfont.o `test -f 'sfont/cone3dfont.cc' || echo '$(srcdir)/'`sfont/cone3dfont.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/cone3dfont.Tpo" "$(DEPDIR)/cone3dfont.Po"; else rm -f "$(DEPDIR)/cone3dfont.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='sfont/cone3dfont.cc' object='cone3dfont.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/cone3dfont.Po' tmpdepfile='$(DEPDIR)/cone3dfont.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cone3dfont.o `test -f 'sfont/cone3dfont.cc' || echo '$(srcdir)/'`sfont/cone3dfont.cc
-
-cone3dfont.obj: sfont/cone3dfont.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cone3dfont.obj -MD -MP -MF "$(DEPDIR)/cone3dfont.Tpo" -c -o cone3dfont.obj `if test -f 'sfont/cone3dfont.cc'; then $(CYGPATH_W) 'sfont/cone3dfont.cc'; else $(CYGPATH_W) '$(srcdir)/sfont/cone3dfont.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/cone3dfont.Tpo" "$(DEPDIR)/cone3dfont.Po"; else rm -f "$(DEPDIR)/cone3dfont.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='sfont/cone3dfont.cc' object='cone3dfont.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/cone3dfont.Po' tmpdepfile='$(DEPDIR)/cone3dfont.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cone3dfont.obj `if test -f 'sfont/cone3dfont.cc'; then $(CYGPATH_W) 'sfont/cone3dfont.cc'; else $(CYGPATH_W) '$(srcdir)/sfont/cone3dfont.cc'; fi`
+fontset.o: sfont/fontset.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fontset.o -MD -MP -MF "$(DEPDIR)/fontset.Tpo" -c -o fontset.o `test -f 'sfont/fontset.cc' || echo '$(srcdir)/'`sfont/fontset.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/fontset.Tpo" "$(DEPDIR)/fontset.Po"; else rm -f "$(DEPDIR)/fontset.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='sfont/fontset.cc' object='fontset.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/fontset.Po' tmpdepfile='$(DEPDIR)/fontset.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fontset.o `test -f 'sfont/fontset.cc' || echo '$(srcdir)/'`sfont/fontset.cc
+
+fontset.obj: sfont/fontset.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fontset.obj -MD -MP -MF "$(DEPDIR)/fontset.Tpo" -c -o fontset.obj `if test -f 'sfont/fontset.cc'; then $(CYGPATH_W) 'sfont/fontset.cc'; else $(CYGPATH_W) '$(srcdir)/sfont/fontset.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/fontset.Tpo" "$(DEPDIR)/fontset.Po"; else rm -f "$(DEPDIR)/fontset.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='sfont/fontset.cc' object='fontset.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/fontset.Po' tmpdepfile='$(DEPDIR)/fontset.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fontset.obj `if test -f 'sfont/fontset.cc'; then $(CYGPATH_W) 'sfont/fontset.cc'; else $(CYGPATH_W) '$(srcdir)/sfont/fontset.cc'; fi`
 uninstall-info-am:
 
@@ -642,4 +642,5 @@
 
 distdir: $(DISTFILES)
+	$(mkdir_p) $(distdir)/sfont
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
Index: xonox/trunk/src/sfont/cone3dfont.cc
===================================================================
--- /orxonox/trunk/src/sfont/cone3dfont.cc	(revision 3455)
+++ 	(revision )
@@ -1,145 +1,0 @@
-/***************************************************************************
-                          cone3dfont.cpp  -  description
-                             -------------------
-    copyright            : (C) 2001 by Marius Andra aka Cone3D
-    email                : marius@hot.ee
-    ICQ                  : 43999510
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program 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.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#include "cone3dfont.h"
-#include <stdarg.h>
-
-#include "../importer/texture.h"
-
-int Cone3DFont::SetSize(float x, float y)       // Set the size of the font
-{
-  sizex=x;
-  sizey=y;
-  
-  return 1;
-}
-
-int Cone3DFont::BuildFont(char *file)          // Build Our Font Display List
-{
-  int loop1;
-  float cx, cy;
-  
-  font = new Texture();
-  font->loadImage(file);
-  
-  base=glGenLists(256);                          // Creating 256 Display Lists
-  glBindTexture(GL_TEXTURE_2D, font->getTexture()); // Select Our Font Texture
-  for (loop1=0; loop1<256; loop1++)              // Loop Through All 256 Lists
-    {
-      cx=(float)(loop1%16)/16.0f;                  // X Position Of Current Character
-      cy=(float)(loop1/16)/16.0f;                  // Y Position Of Current Character
-      
-      glNewList(base+loop1,GL_COMPILE);            // Start Building A List
-      glBegin(GL_QUADS);                           // Use A Quad For Each Character
-      glTexCoord2f(cx,1.0f-cy-0.0625f);          // Texture Coord (Bottom Left)
-      glVertex2d(0,16);                          // Vertex Coord (Bottom Left)
-      glTexCoord2f(cx+0.0625f,1.0f-cy-0.0625f);  // Texture Coord (Bottom Right)
-      glVertex2i(16,16);                         // Vertex Coord (Bottom Right)
-      glTexCoord2f(cx+0.0625f,1.0f-cy-0.001f);   // Texture Coord (Top Right)
-      glVertex2i(16,0);                          // Vertex Coord (Top Right)
-      glTexCoord2f(cx,1.0f-cy-0.001f);           // Texture Coord (Top Left)
-      glVertex2i(0,0);                           // Vertex Coord (Top Left)
-      glEnd();                                     // Done Building Our Quad (Character)
-      glTranslated(12,0,0);                        // Move To The Right Of The Character
-      glEndList();                                 // Done Building The Display List
-    }                                              // Loop Until All 256 Are Built
-  return 1;
-}
-
-int Cone3DFont::KillFont(GLvoid)                          // Delete The Font From Memory
-{
-  glDeleteLists(base,256);                       // Delete All 256 Display Lists
-  return 1;
-}
-
-int Cone3DFont::PrintText(GLint x, GLint y, char type, char *fmt,...)// Where The Printing Happens
-{
-  char    text[1024];                            // Holds Our String
-  int blendOn,scissorOn,textureOn,lightOn;  // Holds the previous GL settings
-  int depthOn,matrixMode,screenStats[4],blendSrc,blendDst;
-  char typ=type;
-
-  va_list ap;                                    // Pointer To List Of Arguments
-
-  if (fmt == NULL)                               // If There's No Text
-    return 1;                                      // Do Nothing
-  
-  va_start(ap, fmt);                             // Parses The String For Variables
-  vsprintf(text, fmt, ap);                       // And Converts Symbols To Actual Numbers
-  va_end(ap);                                    // Results Are Stored In Text
-  
-  if (type>3)                                     // Did User Choose An Invalid Character Set?
-    type=3;                                       // If So, Select Set 2 (Italic)
-  
-  textureOn = glIsEnabled(GL_TEXTURE_2D); // Were textures enabled?
-  depthOn = glIsEnabled(GL_DEPTH_TEST);  // Was GL_DEPTH_TEST enabled?
-  lightOn = glIsEnabled(GL_LIGHTING); // Was GL_LIGHTING enabled?
-  scissorOn = glIsEnabled(GL_SCISSOR_TEST);  // etc.
-  glGetIntegerv(GL_MATRIX_MODE, &matrixMode);
-  glGetIntegerv(GL_VIEWPORT, screenStats);
-  blendOn= glIsEnabled(GL_BLEND);
-  glGetIntegerv(GL_BLEND_SRC, &blendSrc);
-  glGetIntegerv(GL_BLEND_DST, &blendDst);
-  
-  if (depthOn) glDisable(GL_DEPTH_TEST);  // If they were enabled/disabled
-  if (!textureOn) glEnable(GL_TEXTURE_2D); // then enable/disable them
-  if (!blendOn) glEnable(GL_BLEND);
-  if (!scissorOn) glEnable(GL_SCISSOR_TEST);
-  if (lightOn) glDisable(GL_LIGHTING);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Set the correct blending mode
-  
-  glMatrixMode(GL_PROJECTION); // and initalize Ortho mode
-  glPushMatrix();
-  glLoadIdentity();
-  glOrtho(0.0f,screenStats[2],screenStats[3],0.0f,-1.0f,1.0f);
-  glMatrixMode(GL_MODELVIEW);
-  glPushMatrix();
-  glBindTexture(GL_TEXTURE_2D, font->getTexture());
-
-  if(type>1) typ=typ-2;
-  glLoadIdentity();
-  glTranslated(x,y,0);
-  glListBase(base-32+(128*typ));
-  glScalef(sizex,sizey,1.0f);
-  glCallLists(strlen(text),GL_UNSIGNED_BYTE, text); // Write The Text To The Screen
-  
-  if(type>1)
-    {
-      glLoadIdentity();
-      glTranslated(x+1,y,0);
-      glListBase(base-32+(128*(type-2)));
-      glScalef(sizex,sizey,1.0f);
-      glCallLists(strlen(text),GL_UNSIGNED_BYTE, text); // Write The Text To The Screen
-    }
-
-  glBindTexture(GL_TEXTURE_2D, 0); // Fix everything up
-  glMatrixMode(GL_PROJECTION);
-  glPopMatrix();
-  glMatrixMode(GL_MODELVIEW);
-  glPopMatrix();
-
-  if (depthOn) glEnable(GL_DEPTH_TEST);
-  if (!textureOn) glDisable(GL_TEXTURE_2D);
-  if (!blendOn) glDisable(GL_BLEND);
-  if (!scissorOn) glDisable(GL_SCISSOR_TEST);
-  if (lightOn) glEnable(GL_LIGHTING);
-
-  glBlendFunc(blendSrc, blendDst);
-  glMatrixMode(matrixMode);
-
-  return 1;
-}
Index: xonox/trunk/src/sfont/cone3dfont.h
===================================================================
--- /orxonox/trunk/src/sfont/cone3dfont.h	(revision 3455)
+++ 	(revision )
@@ -1,42 +1,0 @@
-/***************************************************************************
-                          cone3dfont.h  -  description
-                             -------------------
-    copyright            : (C) 2001 by Marius Andra aka Cone3D
-    email                : marius@hot.ee
-    ICQ                  : 43999510
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program 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.                                   *
- *                                                                         *
- ***************************************************************************/
-/*
-  This file is extended to the needs of the orxonox-project.
-  The main difference to the version of Marius is, that textures get 
-  loaded by orxonox Texture-class
-*/
-
-class Texture;
-
-
-class Cone3DFont
-{
-public:
-  Cone3DFont() {sizex=1.0f; sizey=1.0f;};
-	~Cone3DFont() {KillFont();};
-  int BuildFont(char *file);
-  int PrintText(int x, int y, char type, char *fmt, ...);
-  int KillFont();
-  int SetSize(float x, float y);
-
-  //  Cone3DTGA font;
-private:
-  int base;
-  float sizex,sizey;
-  Texture* font;
-
-};
Index: /orxonox/trunk/src/sfont/fontset.cc
===================================================================
--- /orxonox/trunk/src/sfont/fontset.cc	(revision 3456)
+++ /orxonox/trunk/src/sfont/fontset.cc	(revision 3456)
@@ -0,0 +1,226 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program 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, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+
+   ***
+   * This file is extended to the needs of the orxonox-project.         *
+   * The main difference to the version of Marius is, that textures get *
+   * loaded by orxonox Texture-class, and that the comments are set up, *
+   * in doxygen style                                                   *
+   * the Copyright of the original file is below this copyright, and we *
+   * hope not to offend Marius through this.                            *
+                                                                      ***
+
+*/
+
+/***************************************************************************
+                          cone3dfont.cpp  -  description
+                             -------------------
+    copyright            : (C) 2001 by Marius Andra aka Cone3D
+    email                : marius@hot.ee
+    ICQ                  : 43999510
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program 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.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+
+#include "fontset.h"
+#include <stdarg.h>
+
+#include "../importer/texture.h"
+
+/** 
+    \brief initializes a new fontset
+*/
+FontSet::FontSet()
+{
+  this->sizex=1.0f;
+  this->sizey=1.0f;
+  this->font = NULL;
+}
+
+/** 
+    \brief initializes a new fontset with a texture for the font
+    \param fontFile The fontfile to load
+*/
+FontSet::FontSet(char* fontFile)
+{
+  this->sizex=1.0f;
+  this->sizey=1.0f;
+  this->font = NULL;
+  
+}
+
+/**
+   \brief deletes the Fontset by freeing all allocated space
+   and then deleting the Texture.
+*/
+FontSet::~FontSet()
+{
+  killFont();
+  // delete the texture;
+  delete font;
+}
+
+/**
+   \brief sets the size of the font
+   \param x the width of the font
+   \param y the height of the font
+*/
+int FontSet::setSize(float x, float y)
+{
+  sizex=x;
+  sizey=y;
+  
+  return 1;
+}
+
+/**
+   \brief builds the fontset
+   \param file the name of the file to get the fontset from.
+*/
+int FontSet::buildFont(char *file)
+{
+  int loop1;
+  float cx, cy;
+  
+  if (!font)
+    delete font;
+  font = new Texture();
+  font->loadImage(file);
+  
+  base=glGenLists(256);                          // Creating 256 Display Lists
+  glBindTexture(GL_TEXTURE_2D, font->getTexture()); // Select Our Font Texture
+  for (loop1=0; loop1<256; loop1++)              // Loop Through All 256 Lists
+    {
+      cx=(float)(loop1%16)/16.0f;                  // X Position Of Current Character
+      cy=(float)(loop1/16)/16.0f;                  // Y Position Of Current Character
+      
+      glNewList(base+loop1,GL_COMPILE);            // Start Building A List
+      glBegin(GL_QUADS);                           // Use A Quad For Each Character
+      glTexCoord2f(cx,1.0f-cy-0.0625f);          // Texture Coord (Bottom Left)
+      glVertex2d(0,16);                          // Vertex Coord (Bottom Left)
+      glTexCoord2f(cx+0.0625f,1.0f-cy-0.0625f);  // Texture Coord (Bottom Right)
+      glVertex2i(16,16);                         // Vertex Coord (Bottom Right)
+      glTexCoord2f(cx+0.0625f,1.0f-cy-0.001f);   // Texture Coord (Top Right)
+      glVertex2i(16,0);                          // Vertex Coord (Top Right)
+      glTexCoord2f(cx,1.0f-cy-0.001f);           // Texture Coord (Top Left)
+      glVertex2i(0,0);                           // Vertex Coord (Top Left)
+      glEnd();                                     // Done Building Our Quad (Character)
+      glTranslated(12,0,0);                        // Move To The Right Of The Character
+      glEndList();                                 // Done Building The Display List
+    }                                              // Loop Until All 256 Are Built
+  return 1;
+}
+
+/**
+   \brief deletes the display lists.
+*/
+int FontSet::killFont(void)                          // Delete The Font From Memory
+{
+  glDeleteLists(base,256);                       // Delete All 256 Display Lists
+  return 1;
+}
+
+/**
+   \brief prints out some text
+   \param x most left coordinate of the text.
+   \param y the top coordinate of the text
+   \param type Type of text
+   \param fmt The text to display
+   \param ... more text
+*/
+int FontSet::printText(int x, int y, char type, char *fmt,...)// Where The Printing Happens
+{
+  char    text[1024];                            // Holds Our String
+  int blendOn,scissorOn,textureOn,lightOn;  // Holds the previous GL settings
+  int depthOn,matrixMode,screenStats[4],blendSrc,blendDst;
+  char typ=type;
+
+  va_list ap;                                    // Pointer To List Of Arguments
+
+  if (fmt == NULL)                               // If There's No Text
+    return 1;                                      // Do Nothing
+  
+  va_start(ap, fmt);                             // Parses The String For Variables
+  vsprintf(text, fmt, ap);                       // And Converts Symbols To Actual Numbers
+  va_end(ap);                                    // Results Are Stored In Text
+  
+  if (type>3)                                     // Did User Choose An Invalid Character Set?
+    type=3;                                       // If So, Select Set 2 (Italic)
+  
+  textureOn = glIsEnabled(GL_TEXTURE_2D); // Were textures enabled?
+  depthOn = glIsEnabled(GL_DEPTH_TEST);  // Was GL_DEPTH_TEST enabled?
+  lightOn = glIsEnabled(GL_LIGHTING); // Was GL_LIGHTING enabled?
+  scissorOn = glIsEnabled(GL_SCISSOR_TEST);  // etc.
+  glGetIntegerv(GL_MATRIX_MODE, &matrixMode);
+  glGetIntegerv(GL_VIEWPORT, screenStats);
+  blendOn= glIsEnabled(GL_BLEND);
+  glGetIntegerv(GL_BLEND_SRC, &blendSrc);
+  glGetIntegerv(GL_BLEND_DST, &blendDst);
+  
+  if (depthOn) glDisable(GL_DEPTH_TEST);  // If they were enabled/disabled
+  if (!textureOn) glEnable(GL_TEXTURE_2D); // then enable/disable them
+  if (!blendOn) glEnable(GL_BLEND);
+  if (!scissorOn) glEnable(GL_SCISSOR_TEST);
+  if (lightOn) glDisable(GL_LIGHTING);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Set the correct blending mode
+  
+  glMatrixMode(GL_PROJECTION); // and initalize Ortho mode
+  glPushMatrix();
+  glLoadIdentity();
+  glOrtho(0.0f,screenStats[2],screenStats[3],0.0f,-1.0f,1.0f);
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glBindTexture(GL_TEXTURE_2D, font->getTexture());
+
+  if(type>1) typ=typ-2;
+  glLoadIdentity();
+  glTranslated(x,y,0);
+  glListBase(base-32+(128*typ));
+  glScalef(sizex,sizey,1.0f);
+  glCallLists(strlen(text),GL_UNSIGNED_BYTE, text); // Write The Text To The Screen
+  
+  if(type>1)
+    {
+      glLoadIdentity();
+      glTranslated(x+1,y,0);
+      glListBase(base-32+(128*(type-2)));
+      glScalef(sizex,sizey,1.0f);
+      glCallLists(strlen(text),GL_UNSIGNED_BYTE, text); // Write The Text To The Screen
+    }
+
+  glBindTexture(GL_TEXTURE_2D, 0); // Fix everything up
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+  glMatrixMode(GL_MODELVIEW);
+  glPopMatrix();
+
+  if (depthOn) glEnable(GL_DEPTH_TEST);
+  if (!textureOn) glDisable(GL_TEXTURE_2D);
+  if (!blendOn) glDisable(GL_BLEND);
+  if (!scissorOn) glDisable(GL_SCISSOR_TEST);
+  if (lightOn) glEnable(GL_LIGHTING);
+
+  glBlendFunc(blendSrc, blendDst);
+  glMatrixMode(matrixMode);
+
+  return 1;
+}
Index: /orxonox/trunk/src/sfont/fontset.h
===================================================================
--- /orxonox/trunk/src/sfont/fontset.h	(revision 3456)
+++ /orxonox/trunk/src/sfont/fontset.h	(revision 3456)
@@ -0,0 +1,46 @@
+/*! 
+    \file fontset.h
+    \brief Handles the display of Text.
+*/
+
+/**
+  This file is extended to the needs of the orxonox-project.
+  The main difference to the version of Marius is, that textures get 
+  loaded by orxonox Texture-class
+*/
+
+class Texture;
+
+//! A class to handle a FontSet.
+/**
+   A fontset is an entire Alphabet (256 entries) of one font.
+   It is made by creating a file containing a matrix with 256
+   little pictures in it, displaying the letters of this alphabet.
+   Then these letters are projected onto Quads, which can be aranged
+   in a sorted order, to display some text
+
+   usage:
+   1. initialize the Class by loading the source-font-picture
+   2. set the size
+   3. write some text with printText
+   4. delete the class again.
+*/ 
+class FontSet
+{
+ public:
+  FontSet();
+  FontSet(char *file);
+  ~FontSet();
+  
+  int buildFont(char* fontFile);
+  int printText(int x, int y, char type, char *fmt, ...);
+  int killFont(void);
+  int setSize(float x, float y);
+  
+ private:
+  int base;          //!< Save the glLists here.
+  float sizex;       //!< the width of the text.
+  float sizey;       //!< the height of the text.
+  Texture* font;     //!< texture of the font.
+
+};
Index: /orxonox/trunk/src/world.cc
===================================================================
--- /orxonox/trunk/src/world.cc	(revision 3455)
+++ /orxonox/trunk/src/world.cc	(revision 3456)
@@ -29,5 +29,5 @@
 #include "skysphere.h"
 #include "light.h"
-#include "sfont/cone3dfont.h"
+#include "sfont/fontset.h"
 
 using namespace std;
@@ -205,6 +205,6 @@
     {
       // initializing Font
-      testFont = new Cone3DFont();
-      testFont->BuildFont("../data/pictures/font.tga");
+      testFont = new FontSet();
+      testFont->buildFont("../data/pictures/font.tga");
 
       // initializing the TrackManager
@@ -660,5 +660,5 @@
   skySphere->draw();
 
-  testFont->PrintText(10, 10, 1, "orxonox_" PACKAGE_VERSION);
+  testFont->printText(0, 0, 1, "orxonox_" PACKAGE_VERSION);
 
 }
Index: /orxonox/trunk/src/world.h
===================================================================
--- /orxonox/trunk/src/world.h	(revision 3455)
+++ /orxonox/trunk/src/world.h	(revision 3456)
@@ -18,5 +18,5 @@
 class Skysphere;
 class Light;
-class Cone3DFont;
+class FontSet;
 
 //! The game world
@@ -73,5 +73,5 @@
   bool bPause;                  //!< pause mode
 
-  Cone3DFont* testFont;         //!< A test Font. \todo fix this, so it is for real.
+  FontSet* testFont;            //!< A test Font. \todo fix this, so it is for real.
   GLMenuImageScreen* glmis;     //!< The Level-Loader Display
 
