Index: /trunk/src/defs/class_id.h
===================================================================
--- /trunk/src/defs/class_id.h	(revision 7018)
+++ /trunk/src/defs/class_id.h	(revision 7019)
@@ -216,4 +216,5 @@
   CL_BILLBOARD                  =    0x00000514,
   CL_MODEL_ENTITY               =    0x00000515,
+  CL_TEXT_ELEMENT               =    0x00000516, /// TODO MOVE
 
 
Index: /trunk/src/story_entities/simple_game_menu.cc
===================================================================
--- /trunk/src/story_entities/simple_game_menu.cc	(revision 7018)
+++ /trunk/src/story_entities/simple_game_menu.cc	(revision 7019)
@@ -170,31 +170,36 @@
       this->menuSelector->setBindNode((const PNode*)NULL);
     }
-    else if( !strcmp( "StartGame_Menu", (*entity)->getName()))
-    {
-      this->menuStartGame = dynamic_cast<ImageEntity*>(*entity);
+  }
+
+  imageEntityList = ClassList::getList(CL_TEXT_ELEMENT);
+  for (entity = imageEntityList->begin(); entity != imageEntityList->end(); entity++)
+  {
+    if( !strcmp( "StartGame_Menu", (*entity)->getName()))
+    {
+      this->menuStartGame = dynamic_cast<TextElement*>(*entity);
       this->menuStartGame->setBindNode((const PNode*)NULL);
       this->menuStartGame->setRelCoor2D(State::getResX() / 2.0f,
                                         State::getResY() / 2.0f - 60.0f,
                                         0.0f);
-      this->menuLayers[0].menuList.push_back(dynamic_cast<ImageEntity*>(*entity));
+      this->menuLayers[0].menuList.push_back(dynamic_cast<TextElement*>(*entity));
 
     }
     else if( !strcmp( "Multiplayer_Menu", (*entity)->getName()))
     {
-      this->menuStartMultiplayerGame = dynamic_cast<ImageEntity*>(*entity);
+      this->menuStartMultiplayerGame = dynamic_cast<TextElement*>(*entity);
       this->menuStartMultiplayerGame->setBindNode((const PNode*)NULL);
       this->menuStartMultiplayerGame->setRelCoor2D(State::getResX() / 2.0f,
                                                    State::getResY() / 2.0f + ((this->menuLayers[0].menuList.size() -1 ) * 60.0f),
                                                    0.0f);
-      this->menuLayers[0].menuList.push_back(dynamic_cast<ImageEntity*>(*entity));
+      this->menuLayers[0].menuList.push_back(dynamic_cast<TextElement*>(*entity));
     }
     else if( !strcmp( "Quit_Menu", (*entity)->getName()))
     {
-      this->menuQuitGame = dynamic_cast<ImageEntity*>(*entity);
+      this->menuQuitGame = dynamic_cast<TextElement*>(*entity);
       this->menuQuitGame->setBindNode((const PNode*)NULL);
       this->menuQuitGame->setRelCoor2D(State::getResX() / 2.0f,
                                        State::getResY() / 2.0f + ((this->menuLayers[0].menuList.size() -1 )* 60.0f),
                                        0.0f);
-      this->menuLayers[0].menuList.push_back(dynamic_cast<ImageEntity*>(*entity));
+      this->menuLayers[0].menuList.push_back(dynamic_cast<TextElement*>(*entity));
     }
   }
@@ -216,17 +221,15 @@
 
       // generating menu item
+      TextElement* te = new TextElement();
+      te->setVisibility(false);
+      te->setText(se->getName());
+      te->setRelCoor2D(State::getResX() / 2.0f - 200.0f, State::getResY() / 2.0f + ((this->menuLayers[1].menuList.size() - 2.0f) * 60.0f), 0.0f);
+      this->menuLayers[1].menuList.push_back(te);
+
+      // generating screenshoot item
       ImageEntity* ie = new ImageEntity();
-      ie->setTexture(se->getMenuItemImage());
       ie->setVisibility(false);
       ie->setBindNode((const PNode*)NULL);
-      ie->setRelCoor2D(State::getResX() / 2.0f - 200.0f, State::getResY() / 2.0f + ((this->menuLayers[1].menuList.size() - 2.0f) * 60.0f), 0.0f);
-      ie->setSize2D(100.0f, 50.0f);
-      this->menuLayers[1].menuList.push_back(ie);
-
-      // generating screenshoot item
-      ie = new ImageEntity();
       ie->setTexture(se->getMenuScreenshoot());
-      ie->setVisibility(false);
-      ie->setBindNode((const PNode*)NULL);
       ie->setRelCoor2D(State::getResX() / 2.0f + 250.0f, State::getResY() / 2.0f, 0.0f);
       ie->setSize2D(140.0f, 105.0f);
@@ -246,6 +249,12 @@
   for(mit = this->menuLayers.begin(); mit != this->menuLayers.end(); mit++)
   {
-    (*mit).menuList.clear(); //erase((*mit).menuList.begin(), (*mit).menuList.end());
-    (*mit).storyList.clear(); //erase((*mit).storyList.begin(), (*mit).storyList.end());
+    while(!(*mit).menuList.empty())
+    {
+      delete (*mit).menuList.back();
+      (*mit).menuList.pop_back();
+    }
+
+    (*mit).menuList.clear();
+    (*mit).storyList.clear();
     (*mit).screenshootList.clear();
   }
@@ -404,10 +413,13 @@
 
   PRINTF(0)("Removing layer %i\n", layer1);
+  std::vector<TextElement*>::iterator te;
+  // fade old menu
+  for( te = this->menuLayers[layer1].menuList.begin(); te != this->menuLayers[layer1].menuList.end(); te++)
+  {
+    (*te)->setVisibility(false);
+  }
+
   std::vector<ImageEntity*>::iterator it;
-  // fade old menu
-  for( it = this->menuLayers[layer1].menuList.begin(); it != this->menuLayers[layer1].menuList.end(); it++)
-  {
-    (*it)->setVisibility(false);
-  }
+
   //also fade the screenshots if in level choosement mode
   for( it = this->menuLayers[layer1].screenshootList.begin(); it != this->menuLayers[layer1].screenshootList.end(); it++)
@@ -419,7 +431,7 @@
   PRINTF(0)("Showing layer %i\n", layer1);
   // beam here the new menu
-  for( it = this->menuLayers[layer2].menuList.begin(); it != this->menuLayers[layer2].menuList.end(); it++ )
-  {
-    (*it)->setVisibility(true);
+  for( te = this->menuLayers[layer2].menuList.begin(); te != this->menuLayers[layer2].menuList.end(); te++ )
+  {
+    (*te)->setVisibility(true);
   }
 
Index: /trunk/src/story_entities/simple_game_menu.h
===================================================================
--- /trunk/src/story_entities/simple_game_menu.h	(revision 7018)
+++ /trunk/src/story_entities/simple_game_menu.h	(revision 7019)
@@ -15,4 +15,6 @@
 
 
+#include "elements/text_element.h"
+
 class SimpleGameMenuData;
 class TiXmlElement;
@@ -29,5 +31,5 @@
 
   public:
-    std::vector<ImageEntity*>         menuList;                        //!< the list of the menu items
+    std::vector<TextElement*>          menuList;                        //!< the list of the menu items
     std::vector<StoryEntity*>         storyList;                       //!< the list of the StoryEntities for the menu
     std::vector<ImageEntity*>         screenshootList;                 //!< list of the screen shoots FIXME: make a better structure for this stuff
@@ -75,9 +77,9 @@
 
     //std::vector<ImageEntity*>         menuList;                        //!< the list of the menu items
-    ImageEntity*                      menuSelected;                    //!< ref to the selected menu entity
     ImageEntity*                      menuSelector;                    //!< ref to the selector image
-    ImageEntity*                      menuStartGame;
-    ImageEntity*                      menuStartMultiplayerGame;
-    ImageEntity*                      menuQuitGame;
+    TextElement*                      menuSelected;                    //!< ref to the selected menu entity
+    TextElement*                      menuStartGame;
+    TextElement*                      menuStartMultiplayerGame;
+    TextElement*                      menuQuitGame;
     int                               menuSelectedIndex;
 
Index: /trunk/src/world_entities/Makefile.am
===================================================================
--- /trunk/src/world_entities/Makefile.am	(revision 7018)
+++ /trunk/src/world_entities/Makefile.am	(revision 7019)
@@ -63,5 +63,6 @@
                   world_entities/environments/model_entity.cc \
                   \
-                  world_entities/elements/image_entity.cc
+                  world_entities/elements/image_entity.cc \
+                  world_entities/elements/text_element.cc
 
 
Index: /trunk/src/world_entities/elements/text_element.cc
===================================================================
--- /trunk/src/world_entities/elements/text_element.cc	(revision 7019)
+++ /trunk/src/world_entities/elements/text_element.cc	(revision 7019)
@@ -0,0 +1,79 @@
+/*
+   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: Patrick Boenzli
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
+
+#include "text_element.h"
+
+#include "load_param.h"
+#include "factory.h"
+
+#include "graphics_engine.h"
+#include "state.h"
+
+
+using namespace std;
+
+
+CREATE_FACTORY(TextElement, CL_TEXT_ELEMENT);
+
+
+/**
+ * standart constructor
+ */
+TextElement::TextElement (const TiXmlElement* root)
+{
+  this->setClassID(CL_TEXT_ELEMENT, "TextElement");
+  this->setName("TextElement");
+
+  this->setLayer(E2D_LAYER_TOP);
+  this->setSize(GraphicsEngine::getInstance()->getResolutionX()/10.0);
+
+  this->setSize(20);
+  this->setFont("fonts/earth.ttf");
+
+  if(root != NULL)
+    this->loadParams(root);
+}
+
+
+/**
+ * destroys a TextElement
+*/
+TextElement::~TextElement ()
+{
+}
+
+
+void TextElement::loadParams(const TiXmlElement* root)
+{
+  Element2D::loadParams(root);
+
+  LoadParam(root, "size", this, Text, setSize);
+
+  LoadParam(root, "text", this, TextElement, setText);
+
+  LoadParam(root, "font", this, TextElement, setFont);
+}
+
+void TextElement::setText(const char* text)
+{
+  Text::setText(text);
+}
+
+void TextElement::setFont(const char* font)
+{
+  Text::setFont(font, (unsigned int)this->getSizeY2D());
+}
Index: /trunk/src/world_entities/elements/text_element.h
===================================================================
--- /trunk/src/world_entities/elements/text_element.h	(revision 7019)
+++ /trunk/src/world_entities/elements/text_element.h	(revision 7019)
@@ -0,0 +1,38 @@
+/*!
+ * @file text_element.h
+ *  Definition of an TextElement
+ */
+
+#ifndef _TEXT_ELEMENT_H
+#define _TEXT_ELEMENT_H
+
+#include "p_node.h"
+#include "text.h"
+#include "event_listener.h"
+
+#include "vector.h"
+
+
+// FORWARD DECLARATION
+class Model;
+class Material;
+class TiXmlElement;
+
+//! A class that enables the
+class TextElement : public Text {
+
+ public:
+  TextElement(const TiXmlElement* root = NULL);
+  virtual ~TextElement();
+
+  void init();
+  virtual void loadParams(const TiXmlElement* root);
+
+  void setText(const char* text);
+  void setFont(const char* font);
+
+ private:
+
+};
+
+#endif /* _TEXT_ELEMENT_H */
