Index: /orxonox/trunk/src/Makefile.am
===================================================================
--- /orxonox/trunk/src/Makefile.am	(revision 3475)
+++ /orxonox/trunk/src/Makefile.am	(revision 3476)
@@ -5,4 +5,6 @@
 AM_CXXFLAGS+="-I./defs"
 AM_CXXFLAGS+="-I./font"
+AM_CXXFLAGS+="-I./network"
+AM_CXXFLAGS+="-I./glmenu"
 
 AM_LDFLAGS= $(MWINDOWS)
@@ -41,5 +43,5 @@
 		 mathlib/matrix.cc \
 		 mathlib/curve.cc \
-		 glmenu_imagescreen.cc \
+		 glmenu/glmenu_imagescreen.cc \
 		 world_entities/skysphere.cc \
 		 light.cc \
@@ -54,5 +56,5 @@
 		 world_entities/environment.h \
 		 orxonox.h \
-		 synchronisable.h \
+		 network/synchronisable.h \
 		 base_entity.h \
 		 defs/error.h \
@@ -67,8 +69,8 @@
 		 command_node.h \
 		 lib/list.h \
-		 shoot_laser.h \
+		 world_entities/shoot_laser.h \
 		 world_entities/world_entity.h \
 		 message_structures.h \
-		 shoot_rocket.h \
+		 world_entities/shoot_rocket.h \
 		 lib/list_template.h \
 		 story_entities/story_entity.h \
@@ -83,5 +85,5 @@
 		 mathlib/matrix.h \
 		 mathlib/curve.h \
-		 glmenu_imagescreen.h \
+		 glmenu/glmenu_imagescreen.h \
 		 defs/debug.h \
 		 world_entities/skysphere.h \
Index: /orxonox/trunk/src/Makefile.in
===================================================================
--- /orxonox/trunk/src/Makefile.in	(revision 3475)
+++ /orxonox/trunk/src/Makefile.in	(revision 3476)
@@ -214,5 +214,5 @@
 target_os = @target_os@
 target_vendor = @target_vendor@
-AM_CXXFLAGS = "-I./world_entities" "-I./story_entities" "-I./mathlib" "-I./lib" "-I./defs" "-I./font"
+AM_CXXFLAGS = "-I./world_entities" "-I./story_entities" "-I./mathlib" "-I./lib" "-I./defs" "-I./font" "-I./network" "-I./glmenu"
 AM_LDFLAGS = $(MWINDOWS)
 orxonox_SOURCES = orxonox.cc \
@@ -244,5 +244,5 @@
 		 mathlib/matrix.cc \
 		 mathlib/curve.cc \
-		 glmenu_imagescreen.cc \
+		 glmenu/glmenu_imagescreen.cc \
 		 world_entities/skysphere.cc \
 		 light.cc \
@@ -257,5 +257,5 @@
 		 world_entities/environment.h \
 		 orxonox.h \
-		 synchronisable.h \
+		 network/synchronisable.h \
 		 base_entity.h \
 		 defs/error.h \
@@ -270,8 +270,8 @@
 		 command_node.h \
 		 lib/list.h \
-		 shoot_laser.h \
+		 world_entities/shoot_laser.h \
 		 world_entities/world_entity.h \
 		 message_structures.h \
-		 shoot_rocket.h \
+		 world_entities/shoot_rocket.h \
 		 lib/list_template.h \
 		 story_entities/story_entity.h \
@@ -286,5 +286,5 @@
 		 mathlib/matrix.h \
 		 mathlib/curve.h \
-		 glmenu_imagescreen.h \
+		 glmenu/glmenu_imagescreen.h \
 		 defs/debug.h \
 		 world_entities/skysphere.h \
@@ -675,4 +675,20 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o curve.obj `if test -f 'mathlib/curve.cc'; then $(CYGPATH_W) 'mathlib/curve.cc'; else $(CYGPATH_W) '$(srcdir)/mathlib/curve.cc'; fi`
+
+glmenu_imagescreen.o: glmenu/glmenu_imagescreen.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glmenu_imagescreen.o -MD -MP -MF "$(DEPDIR)/glmenu_imagescreen.Tpo" -c -o glmenu_imagescreen.o `test -f 'glmenu/glmenu_imagescreen.cc' || echo '$(srcdir)/'`glmenu/glmenu_imagescreen.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/glmenu_imagescreen.Tpo" "$(DEPDIR)/glmenu_imagescreen.Po"; else rm -f "$(DEPDIR)/glmenu_imagescreen.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='glmenu/glmenu_imagescreen.cc' object='glmenu_imagescreen.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/glmenu_imagescreen.Po' tmpdepfile='$(DEPDIR)/glmenu_imagescreen.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 glmenu_imagescreen.o `test -f 'glmenu/glmenu_imagescreen.cc' || echo '$(srcdir)/'`glmenu/glmenu_imagescreen.cc
+
+glmenu_imagescreen.obj: glmenu/glmenu_imagescreen.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glmenu_imagescreen.obj -MD -MP -MF "$(DEPDIR)/glmenu_imagescreen.Tpo" -c -o glmenu_imagescreen.obj `if test -f 'glmenu/glmenu_imagescreen.cc'; then $(CYGPATH_W) 'glmenu/glmenu_imagescreen.cc'; else $(CYGPATH_W) '$(srcdir)/glmenu/glmenu_imagescreen.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/glmenu_imagescreen.Tpo" "$(DEPDIR)/glmenu_imagescreen.Po"; else rm -f "$(DEPDIR)/glmenu_imagescreen.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='glmenu/glmenu_imagescreen.cc' object='glmenu_imagescreen.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/glmenu_imagescreen.Po' tmpdepfile='$(DEPDIR)/glmenu_imagescreen.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 glmenu_imagescreen.obj `if test -f 'glmenu/glmenu_imagescreen.cc'; then $(CYGPATH_W) 'glmenu/glmenu_imagescreen.cc'; else $(CYGPATH_W) '$(srcdir)/glmenu/glmenu_imagescreen.cc'; fi`
 
 skysphere.o: world_entities/skysphere.cc
@@ -830,5 +846,5 @@
 
 distdir: $(DISTFILES)
-	$(mkdir_p) $(distdir)/defs $(distdir)/font $(distdir)/lib $(distdir)/mathlib $(distdir)/story_entities $(distdir)/world_entities
+	$(mkdir_p) $(distdir)/defs $(distdir)/font $(distdir)/glmenu $(distdir)/lib $(distdir)/mathlib $(distdir)/network $(distdir)/story_entities $(distdir)/world_entities
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
Index: /orxonox/trunk/src/glmenu/glmenu_imagescreen.cc
===================================================================
--- /orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 3476)
+++ /orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 3476)
@@ -0,0 +1,305 @@
+
+
+/* 
+   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: 
+*/
+
+
+#include "glmenu_imagescreen.h"
+
+#include "importer/material.h"
+
+using namespace std;
+
+GLMenuImageScreen* GLMenuImageScreen::singletonRef = 0;
+
+GLMenuImageScreen* GLMenuImageScreen::getInstance()
+{
+  if( singletonRef == NULL)
+    singletonRef = new GLMenuImageScreen ();
+  return singletonRef;
+}
+
+/**
+   \brief standard constructor
+
+   \todo this constructor is not jet implemented - do it
+*/
+GLMenuImageScreen::GLMenuImageScreen () 
+{
+   this->setClassName ("GLMenuImageScreen");
+}
+
+
+/**
+   \brief standard deconstructor
+
+   \todo this deconstructor is not jet implemented - do it
+*/
+GLMenuImageScreen::~GLMenuImageScreen() 
+{
+  if (backMat)
+    delete backMat;
+}
+
+
+/**
+   \brief function to init the screen
+*/
+void GLMenuImageScreen::init ()
+{
+  /*
+  int w = 680;
+  int h = 480;
+
+  glViewport(0,0,w,h);
+  
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity(); 
+  gluPerspective(45.0f,(GLfloat)w/(GLfloat)h, .5f ,150.0f);
+  glMatrixMode(GL_MODELVIEW); 
+
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+  glLoadIdentity();
+  gluLookAt(0, 0, 6,     0, 0, 0,     0, 1, 0);
+
+  // Bind the texture stored at the zero index of g_Texture[]
+  //glBindTexture(GL_TEXTURE_2D, g_Texture[0]);
+  */
+
+  
+  // Select Our VU Meter Background Texture
+  this->backMat = new Material("load_screen");
+  this->backMat->setDiffuseMap("../data/pictures/load_screen.jpg");
+  this->maxValue = 10;
+  this->currentValue = 0;
+
+  // End of Background image code.
+}
+
+
+/**
+   \brief function to innit screen with all attributes set
+   \param name of the background-image file
+   \param height of the ImageScreen
+   \param width of the Image Screen
+   \param x offset from (0, 0)
+   \param y offset from (0, 0)
+
+   GLMenu uses its own coordinating system: upper left corner is (0, 0). x-axis is down=height, 
+   right axis is right direction (=width)
+*/
+void GLMenuImageScreen::init (char* backImageName, float height, float width, 
+			      float offsetX, float offsetY)
+{}
+
+
+/**
+   \brief draws the ImageScreen to the screenbuffer
+*/
+void GLMenuImageScreen::draw ()
+{
+  /*
+  // Display a quad texture to the screen
+  glEnable(GL_TEXTURE_2D);
+  glBegin(GL_QUADS);
+  
+  // Display the top left vertice
+  glTexCoord2f(0.0f, 1.0f);
+  glVertex3f(-2.5, 2.5, 0);
+  
+  // Display the bottom left vertice
+  glTexCoord2f(0.0f, 0.0f);
+  glVertex3f(-2.5, -2.5, 0);
+  
+  // Display the bottom right vertice
+  glTexCoord2f(1.0f, 0.0f);
+  glVertex3f(2.5, -2.5, 0);
+  
+  // Display the top right vertice
+  glTexCoord2f(1.0f, 1.0f);
+  glVertex3f(2.5, 2.5, 0);
+
+  glEnd();
+  glEnable(GL_TEXTURE_2D);  
+  */
+
+  glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+
+  /* screen size */
+  int screenWidth = 640;
+  int screenHeight = 480;
+  
+  /* set image size */
+  int imageWidth = 640;
+  int imageHeight = 480;
+  
+  /* start pos of image */
+  int offsetX = (screenWidth - imageWidth)/2;
+  int offsetY = (screenHeight - imageHeight)/2;
+  
+  /* loadbar pos */
+  int barX = 390;
+  int barY = 50;
+  int barWidth = 230;
+  int barHeight = 30;
+
+  int val = (int)((float)this->currentValue/(float)this->maxValue) * barWidth;
+
+  glMatrixMode(GL_PROJECTION);
+  glPushMatrix();
+  glLoadIdentity();
+  /* set up an ortho screen */
+  glOrtho(0, screenWidth, 0, screenHeight, -1, 1); 
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+  glPushMatrix();
+
+  glEnable(GL_BLEND);
+  glPushAttrib(GL_LIGHTING_BIT | GL_TRANSFORM_BIT);
+  glDisable(GL_LIGHTING);
+
+  backMat->select();
+  glBegin(GL_QUADS);
+  glColor3f(0.96, 0.84, 0.34);
+  glVertex2i(barX, barY);
+  glVertex2i(barX + val, barY);
+  glVertex2i(barX + val, barY + barHeight);
+  glVertex2i(barX, barY + barHeight);
+  glColor3f(1.0, 1.0, 1.0);
+  glEnd();
+
+  glBegin(GL_QUADS);
+  glColor3f(0.0, 0.0, 0.0);
+  glVertex2i(barX, barY);
+  glVertex2i(barX + barWidth, barY);
+  glVertex2i(barX + barWidth, barY + barHeight);
+  glVertex2i(barX, barY + barHeight);
+  glColor3f(1.0, 1.0, 1.0);
+  glEnd();
+
+  /* draw black border */
+  glBegin(GL_QUADS);
+  glColor3f(0.0, 0.0, 0.0);
+  glVertex2i(barX-1, barY-1);
+  glVertex2i(barX + barWidth +1, barY-1);
+  glVertex2i(barX + barWidth+1, barY + barHeight+1);
+  glVertex2i(barX - 1, barY + barHeight +1);
+  glColor3f(1.0, 1.0, 1.0);
+  glEnd();
+
+  /* draw white border */
+  glBegin(GL_QUADS);
+  glColor3f(1.0, 1.0, 1.0);
+  glVertex2i(barX-2, barY-2);
+  glVertex2i(barX + barWidth +2, barY-2);
+  glVertex2i(barX + barWidth+2, barY + barHeight+2);
+  glVertex2i(barX - 2, barY + barHeight +2);
+  glColor3f(1.0, 1.0, 1.0);
+  glEnd();
+
+  glEnable(GL_TEXTURE_2D);
+  glBegin(GL_QUADS);
+  glTexCoord2i(0, 0); glVertex2i(offsetX, offsetY);
+  glTexCoord2i(1, 0); glVertex2i(offsetX + imageWidth, offsetY);
+  glTexCoord2i(1, 1); glVertex2i(offsetX + imageWidth, offsetY + imageHeight);
+  glTexCoord2i(0, 1); glVertex2i(offsetX, offsetY + imageHeight);
+  glEnd();
+  glDisable(GL_TEXTURE_2D);
+
+  glDisable(GL_BLEND);
+  glPopMatrix();
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+  glPopAttrib();
+
+  SDL_GL_SwapBuffers();                    
+}
+ 
+
+/** 
+    \brief sets the background image name
+    \param file name of the backgroun-image
+ */
+void GLMenuImageScreen::setBackImageName (char* backImageName)
+{}
+
+
+/**
+   \brief sets position of the ImageScreen
+   \param x offset from (0, 0)
+   \param y offset from (0, 0)
+*/
+void GLMenuImageScreen::setPosition(float offsetX, float offsetY)
+{}
+
+
+/*
+  \brief sets size of the ImageScreen
+  \param height of the ImageScreen
+  \param width of the Image Screen
+*/
+void GLMenuImageScreen::setSize(float height, float width)
+{}
+
+
+/**
+   \brief set the maximum of countable steps
+   \param maximum of steps
+*/
+void GLMenuImageScreen::setMaximum(int maxValue)
+{
+  this->maxValue = maxValue;
+}
+
+
+/**
+   \brief gets the maximum of countable steps
+*/
+int GLMenuImageScreen::getMaximum()
+{
+  return this->maxValue;
+}
+
+
+/**
+   \brief set current value
+   \param current value
+*/
+void GLMenuImageScreen::setValue(int currentValue)
+{
+  this->currentValue = currentValue;
+  this->draw();
+}
+
+
+/**
+   \brief get the current value
+ */
+int GLMenuImageScreen::getValue()
+{
+  return this->currentValue;
+}
+
+
+/** 
+    \brief call this to trigger a progress event
+    
+    this has to redraw the progress bar and the whole image
+ */
+void GLMenuImageScreen::step ()
+{
+  this->currentValue++;
+  this->draw();
+}
Index: /orxonox/trunk/src/glmenu/glmenu_imagescreen.h
===================================================================
--- /orxonox/trunk/src/glmenu/glmenu_imagescreen.h	(revision 3476)
+++ /orxonox/trunk/src/glmenu/glmenu_imagescreen.h	(revision 3476)
@@ -0,0 +1,52 @@
+/*! 
+    \file glmenu_imagescreen
+    \brief class to display a image
+*/
+
+
+#ifndef _GLMENU_IMAGESCREEN_H
+#define _GLMENU_IMAGESCREEN_H
+
+#include "stdincl.h"
+class Texture;
+class Material;
+
+class GLMenuImageScreen : public BaseObject {
+
+ private:
+  GLMenuImageScreen ();
+
+ public:
+  ~GLMenuImageScreen ();
+
+  static GLMenuImageScreen* getInstance();
+
+  static GLMenuImageScreen* singletonRef;
+
+  void init ();
+  void init (char* backImageName, float height, float width, 
+	     float offsetX, float offsetY);
+
+  void draw ();
+  
+  void setBackImageName (char* backImageName);
+  void setPosition (float offsetX, float offsetY);
+  void setSize (float height, float width);
+  
+  void setMaximum (int maxValue);
+  int getMaximum ();
+  void setValue (int currentValue);
+  int getValue ();
+  void step ();
+
+ private:
+  char* backImageName;       //!< the name of the file of the background image
+  float height, width;       //!< hight and width of the image
+  float offsetX, offsetY;    //!< offset of the image from left and up
+  Material* backMat;         //!< Background Material.
+  int currentValue;          //!< the current count of step() calls fired yet
+  int maxValue;              //!< total count of steps
+
+};
+
+#endif /* _GLMENU_IMAGESCREEN_H */
Index: xonox/trunk/src/glmenu_imagescreen.cc
===================================================================
--- /orxonox/trunk/src/glmenu_imagescreen.cc	(revision 3475)
+++ 	(revision )
@@ -1,305 +1,0 @@
-
-
-/* 
-   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: 
-*/
-
-
-#include "glmenu_imagescreen.h"
-
-#include "importer/material.h"
-
-using namespace std;
-
-GLMenuImageScreen* GLMenuImageScreen::singletonRef = 0;
-
-GLMenuImageScreen* GLMenuImageScreen::getInstance()
-{
-  if( singletonRef == NULL)
-    singletonRef = new GLMenuImageScreen ();
-  return singletonRef;
-}
-
-/**
-   \brief standard constructor
-
-   \todo this constructor is not jet implemented - do it
-*/
-GLMenuImageScreen::GLMenuImageScreen () 
-{
-   this->setClassName ("GLMenuImageScreen");
-}
-
-
-/**
-   \brief standard deconstructor
-
-   \todo this deconstructor is not jet implemented - do it
-*/
-GLMenuImageScreen::~GLMenuImageScreen() 
-{
-  if (backMat)
-    delete backMat;
-}
-
-
-/**
-   \brief function to init the screen
-*/
-void GLMenuImageScreen::init ()
-{
-  /*
-  int w = 680;
-  int h = 480;
-
-  glViewport(0,0,w,h);
-  
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity(); 
-  gluPerspective(45.0f,(GLfloat)w/(GLfloat)h, .5f ,150.0f);
-  glMatrixMode(GL_MODELVIEW); 
-
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-  glLoadIdentity();
-  gluLookAt(0, 0, 6,     0, 0, 0,     0, 1, 0);
-
-  // Bind the texture stored at the zero index of g_Texture[]
-  //glBindTexture(GL_TEXTURE_2D, g_Texture[0]);
-  */
-
-  
-  // Select Our VU Meter Background Texture
-  this->backMat = new Material("load_screen");
-  this->backMat->setDiffuseMap("../data/pictures/load_screen.jpg");
-  this->maxValue = 10;
-  this->currentValue = 0;
-
-  // End of Background image code.
-}
-
-
-/**
-   \brief function to innit screen with all attributes set
-   \param name of the background-image file
-   \param height of the ImageScreen
-   \param width of the Image Screen
-   \param x offset from (0, 0)
-   \param y offset from (0, 0)
-
-   GLMenu uses its own coordinating system: upper left corner is (0, 0). x-axis is down=height, 
-   right axis is right direction (=width)
-*/
-void GLMenuImageScreen::init (char* backImageName, float height, float width, 
-			      float offsetX, float offsetY)
-{}
-
-
-/**
-   \brief draws the ImageScreen to the screenbuffer
-*/
-void GLMenuImageScreen::draw ()
-{
-  /*
-  // Display a quad texture to the screen
-  glEnable(GL_TEXTURE_2D);
-  glBegin(GL_QUADS);
-  
-  // Display the top left vertice
-  glTexCoord2f(0.0f, 1.0f);
-  glVertex3f(-2.5, 2.5, 0);
-  
-  // Display the bottom left vertice
-  glTexCoord2f(0.0f, 0.0f);
-  glVertex3f(-2.5, -2.5, 0);
-  
-  // Display the bottom right vertice
-  glTexCoord2f(1.0f, 0.0f);
-  glVertex3f(2.5, -2.5, 0);
-  
-  // Display the top right vertice
-  glTexCoord2f(1.0f, 1.0f);
-  glVertex3f(2.5, 2.5, 0);
-
-  glEnd();
-  glEnable(GL_TEXTURE_2D);  
-  */
-
-  glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
-
-  /* screen size */
-  int screenWidth = 640;
-  int screenHeight = 480;
-  
-  /* set image size */
-  int imageWidth = 640;
-  int imageHeight = 480;
-  
-  /* start pos of image */
-  int offsetX = (screenWidth - imageWidth)/2;
-  int offsetY = (screenHeight - imageHeight)/2;
-  
-  /* loadbar pos */
-  int barX = 390;
-  int barY = 50;
-  int barWidth = 230;
-  int barHeight = 30;
-
-  int val = (int)((float)this->currentValue/(float)this->maxValue) * barWidth;
-
-  glMatrixMode(GL_PROJECTION);
-  glPushMatrix();
-  glLoadIdentity();
-  /* set up an ortho screen */
-  glOrtho(0, screenWidth, 0, screenHeight, -1, 1); 
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-  glPushMatrix();
-
-  glEnable(GL_BLEND);
-  glPushAttrib(GL_LIGHTING_BIT | GL_TRANSFORM_BIT);
-  glDisable(GL_LIGHTING);
-
-  backMat->select();
-  glBegin(GL_QUADS);
-  glColor3f(0.96, 0.84, 0.34);
-  glVertex2i(barX, barY);
-  glVertex2i(barX + val, barY);
-  glVertex2i(barX + val, barY + barHeight);
-  glVertex2i(barX, barY + barHeight);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  glBegin(GL_QUADS);
-  glColor3f(0.0, 0.0, 0.0);
-  glVertex2i(barX, barY);
-  glVertex2i(barX + barWidth, barY);
-  glVertex2i(barX + barWidth, barY + barHeight);
-  glVertex2i(barX, barY + barHeight);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  /* draw black border */
-  glBegin(GL_QUADS);
-  glColor3f(0.0, 0.0, 0.0);
-  glVertex2i(barX-1, barY-1);
-  glVertex2i(barX + barWidth +1, barY-1);
-  glVertex2i(barX + barWidth+1, barY + barHeight+1);
-  glVertex2i(barX - 1, barY + barHeight +1);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  /* draw white border */
-  glBegin(GL_QUADS);
-  glColor3f(1.0, 1.0, 1.0);
-  glVertex2i(barX-2, barY-2);
-  glVertex2i(barX + barWidth +2, barY-2);
-  glVertex2i(barX + barWidth+2, barY + barHeight+2);
-  glVertex2i(barX - 2, barY + barHeight +2);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  glEnable(GL_TEXTURE_2D);
-  glBegin(GL_QUADS);
-  glTexCoord2i(0, 0); glVertex2i(offsetX, offsetY);
-  glTexCoord2i(1, 0); glVertex2i(offsetX + imageWidth, offsetY);
-  glTexCoord2i(1, 1); glVertex2i(offsetX + imageWidth, offsetY + imageHeight);
-  glTexCoord2i(0, 1); glVertex2i(offsetX, offsetY + imageHeight);
-  glEnd();
-  glDisable(GL_TEXTURE_2D);
-
-  glDisable(GL_BLEND);
-  glPopMatrix();
-  glMatrixMode(GL_PROJECTION);
-  glPopMatrix();
-  glPopAttrib();
-
-  SDL_GL_SwapBuffers();                    
-}
- 
-
-/** 
-    \brief sets the background image name
-    \param file name of the backgroun-image
- */
-void GLMenuImageScreen::setBackImageName (char* backImageName)
-{}
-
-
-/**
-   \brief sets position of the ImageScreen
-   \param x offset from (0, 0)
-   \param y offset from (0, 0)
-*/
-void GLMenuImageScreen::setPosition(float offsetX, float offsetY)
-{}
-
-
-/*
-  \brief sets size of the ImageScreen
-  \param height of the ImageScreen
-  \param width of the Image Screen
-*/
-void GLMenuImageScreen::setSize(float height, float width)
-{}
-
-
-/**
-   \brief set the maximum of countable steps
-   \param maximum of steps
-*/
-void GLMenuImageScreen::setMaximum(int maxValue)
-{
-  this->maxValue = maxValue;
-}
-
-
-/**
-   \brief gets the maximum of countable steps
-*/
-int GLMenuImageScreen::getMaximum()
-{
-  return this->maxValue;
-}
-
-
-/**
-   \brief set current value
-   \param current value
-*/
-void GLMenuImageScreen::setValue(int currentValue)
-{
-  this->currentValue = currentValue;
-  this->draw();
-}
-
-
-/**
-   \brief get the current value
- */
-int GLMenuImageScreen::getValue()
-{
-  return this->currentValue;
-}
-
-
-/** 
-    \brief call this to trigger a progress event
-    
-    this has to redraw the progress bar and the whole image
- */
-void GLMenuImageScreen::step ()
-{
-  this->currentValue++;
-  this->draw();
-}
Index: xonox/trunk/src/glmenu_imagescreen.h
===================================================================
--- /orxonox/trunk/src/glmenu_imagescreen.h	(revision 3475)
+++ 	(revision )
@@ -1,52 +1,0 @@
-/*! 
-    \file glmenu_imagescreen
-    \brief class to display a image
-*/
-
-
-#ifndef _GLMENU_IMAGESCREEN_H
-#define _GLMENU_IMAGESCREEN_H
-
-#include "stdincl.h"
-class Texture;
-class Material;
-
-class GLMenuImageScreen : public BaseObject {
-
- private:
-  GLMenuImageScreen ();
-
- public:
-  ~GLMenuImageScreen ();
-
-  static GLMenuImageScreen* getInstance();
-
-  static GLMenuImageScreen* singletonRef;
-
-  void init ();
-  void init (char* backImageName, float height, float width, 
-	     float offsetX, float offsetY);
-
-  void draw ();
-  
-  void setBackImageName (char* backImageName);
-  void setPosition (float offsetX, float offsetY);
-  void setSize (float height, float width);
-  
-  void setMaximum (int maxValue);
-  int getMaximum ();
-  void setValue (int currentValue);
-  int getValue ();
-  void step ();
-
- private:
-  char* backImageName;       //!< the name of the file of the background image
-  float height, width;       //!< hight and width of the image
-  float offsetX, offsetY;    //!< offset of the image from left and up
-  Material* backMat;         //!< Background Material.
-  int currentValue;          //!< the current count of step() calls fired yet
-  int maxValue;              //!< total count of steps
-
-};
-
-#endif /* _GLMENU_IMAGESCREEN_H */
Index: /orxonox/trunk/src/network/synchronisable.cc
===================================================================
--- /orxonox/trunk/src/network/synchronisable.cc	(revision 3476)
+++ /orxonox/trunk/src/network/synchronisable.cc	(revision 3476)
@@ -0,0 +1,32 @@
+
+
+/* 
+   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: ...
+*/
+
+
+#include "synchronisable.h"
+
+
+using namespace std;
+
+
+
+Synchronisable::Synchronisable () {}
+
+
+
+Synchronisable::~Synchronisable () {}
+
+
Index: /orxonox/trunk/src/network/synchronisable.h
===================================================================
--- /orxonox/trunk/src/network/synchronisable.h	(revision 3476)
+++ /orxonox/trunk/src/network/synchronisable.h	(revision 3476)
@@ -0,0 +1,24 @@
+
+#ifndef _SYNCHRONISABLE_H
+#define _SYNCHRONISABLE_H
+
+#include "data_tank.h"
+
+
+class Synchronisable {
+
+ public:
+  Synchronisable ();
+  ~Synchronisable ();
+
+  struct worldEntityState {
+    /*Vector position; */
+    /*Vector orientation; */
+  };
+
+  worldEntityState* getState();
+  void setState(worldEntityState*);
+
+};
+
+#endif /* _SYNCHRONISABLE_H */
Index: xonox/trunk/src/shoot_laser.cc
===================================================================
--- /orxonox/trunk/src/shoot_laser.cc	(revision 3475)
+++ 	(revision )
@@ -1,153 +1,0 @@
-
-
-/* 
-   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: 
-*/
-
-
-
-
-#include <GL/glut.h>
-#include <iostream>
-
-#include "stdincl.h"
-#include "data_tank.h"
-
-#include "shoot_laser.h"
-
-using namespace std;
-
-
-
-ShootLaser::ShootLaser () 
-{
-  lastShoot = null;
-  step = 1.0;
-  inhibitor = 0;
-}
-
-
-ShootLaser::~ShootLaser () {}
-
-
-void ShootLaser::drawShoot() 
-{
-
-  //cout << "ShootLaser::drawShoot" << endl;
-  /* now draw all the shoots (many) */
-  shoot* tmpShoot = lastShoot;
-  shoot* lastRef = null;
-  while( tmpShoot != null )
-    {
-      glPushMatrix(); 
-      glTranslatef(tmpShoot->xCor, tmpShoot->yCor, tmpShoot->zCor);
-      tmpShoot->xCor+=tmpShoot->xVel;
-      tmpShoot->yCor+=tmpShoot->yVel;
-      glScalef(0.1, 0.1, 0.1);
-      glutWireCube(1.0);
-      glPopMatrix();
-
-      /* garbage collection: look if shoot is outside world */
-      /* fix1: weak boundaries check all four sides */
-      /* fix2: conditions, that a struct tree can be cut off */
-      /* fix3: more efficent and nicer please */
-      if (tmpShoot->yCor - DataTank::yOffset > 20) 
-	{
-	  /* normal case: delete one element, link the others */
-	  if (lastRef != null) 
-	    {
-	      //cout << "garbage collection" << endl;
-	      lastRef->next = tmpShoot->next;
-	      delete tmpShoot;
-	      tmpShoot = lastRef->next;
-	      //cout << "garbage collection left" << endl;
-	    }
-	  else
-	    {
-	      /* special case: first element to be processed */
-	      //cout << "garbage collecton: first el in queue" << endl;
-	      lastRef = tmpShoot->next;
-	      delete tmpShoot;
-	      tmpShoot = lastRef;
-	      lastShoot = tmpShoot;
-	      if (tmpShoot != null) 
-		{
-		  tmpShoot = tmpShoot->next;
-		  //cout << "noch nich null" << endl;
-		}
-	      else 
-		{
-		  lastRef = null;
-		  tmpShoot = null;
-		  lastShoot = null;
-		  //cout << "endl null" << endl;
-		}
-	      
-	      //cout << "garbage collection: firtst el in queue left" << endl;
-	    }
-	}
-      else 
-	{
-	  lastRef = tmpShoot;
-	  tmpShoot = tmpShoot->next;
-	}
-    }
-  //cout << "ShootLaser::drawShoot - finished" << endl;
-}
-
-
-void ShootLaser::addShoot(shoot* sh) 
-{
-  sh->next = null;
-  lastShoot = sh;
-}
-
-void ShootLaser::addShoot(float x, float y, float z)
-{
-  //cout << "ShootLaser::addShoot" << endl;
-  shoot* sh = new shoot;
-  sh->xCor = x; sh->yCor = y; sh->zCor = z;
-  sh->xVel = 0; sh->yVel = .4/step; sh->zVel = 0;
-  sh->next = lastShoot;
-  lastShoot = sh;
-}
-
-void ShootLaser::addShootExt(float x, float y, float z, 
-			     float xVel, float yVel, float zVel)
-{
-  //cout << "ShootLaser::addShootExtended" << endl;
-  shoot* sh = new shoot;
-  sh->xCor = x; sh->yCor = y; sh->zCor = z;
-  sh->xVel = xVel/step; sh->yVel = yVel/step; sh->zVel = zVel/step;
-  sh->next = lastShoot;
-  lastShoot = sh;
-}
-
-void ShootLaser::setShootStep(float step) 
-{
-  cout << "ShootLaser::setShootStep to " << step << endl;
-  this->step = step;
-  cout << "ShootLaser::setShootStep end " << step << endl;
-}
-
-
-/* Exterminate shoot from game, implement this method  */
-/* if you like to add animatiion */
-void ShootLaser::removeShoot(shoot* sh)
-{
-  glPushMatrix(); 
-  glTranslatef(sh->xCor, sh->yCor, sh->zCor);
-  glutWireCube(1.0);
-  glPopMatrix();
-}
Index: xonox/trunk/src/shoot_laser.h
===================================================================
--- /orxonox/trunk/src/shoot_laser.h	(revision 3475)
+++ 	(revision )
@@ -1,42 +1,0 @@
-
-#ifndef _SHOOT_LASER_H
-#define _SHOOT_LASER_H
-
-
-class ShootLaser {
-
- public:
-  
-  /* a list of all shoot-amental objects */
-  struct shoot {
-    shoot *next;
-    float xCor;
-    float yCor;
-    float zCor;    
-    float xVel;
-    float yVel;
-    float zVel;
-    float collisionRadius;
-  };
-  shoot* lastShoot;
-
-  ShootLaser ();
-  ~ShootLaser ();
-
-  int inhibitor;
-
-  void drawShoot(void);
-  void addShoot(shoot* sh);
-  void addShoot(float x, float y, float z);
-  void addShootExt(float x, float y, float z, float xVel, float yVel, float zVel);
-  void setShootStep(float step);
-  void removeShoot(shoot* sh);
-
-
- private:
-
-  float step;
-
-};
-
-#endif /* _SHOOT_LASER_H */
Index: xonox/trunk/src/shoot_rocket.cc
===================================================================
--- /orxonox/trunk/src/shoot_rocket.cc	(revision 3475)
+++ 	(revision )
@@ -1,220 +1,0 @@
-
-
-/* 
-   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:  Benjamin Grauer
-*/
-
-
-#include <iostream>
-#include <math.h>
-#include <GL/glut.h>
-
-#include "stdincl.h"
-#include "data_tank.h"
-#include "npc.h"
-
-#include "shoot_rocket.h"
-
-using namespace std;
-
-
-
-ShootRocket::ShootRocket ()
-{
-  lastShoot = null;
-  step = 1.0;
-  inhibitor =0;
-  rotateAngle = 0.0;
-}
-
-
-ShootRocket::~ShootRocket () {}
-
-
-void ShootRocket::drawShoot() 
-{
-
-  //cout << "ShootRocket::drawShoot" << endl;
-  /* now draw all the shoots (many) */
-  shoot* tmpShoot = lastShoot;
-  shoot* lastRef = null;
-  while( tmpShoot != null )
-    {
-      glPushMatrix(); 
-      glTranslatef(tmpShoot->xCor, tmpShoot->yCor, tmpShoot->zCor);
-      tmpShoot->age+=step;
-      switch (tmpShoot->type)
-	{
-	case BACKPARABLE:
-	  tmpShoot->xCor+=tmpShoot->xVel;
-	  tmpShoot->yCor+=tmpShoot->yVel;
-	  tmpShoot->xVel+=tmpShoot->xAcc;
-	  tmpShoot->yVel+=tmpShoot->yAcc;
-	  break;
-	
-	case SIDEACC:
-	  if (tmpShoot->xVel >= .01 || tmpShoot->xVel <= -.01)
-	    {
-	      tmpShoot->xCor+=tmpShoot->xVel;
-	      tmpShoot->yCor+=tmpShoot->yVel;
-	      tmpShoot->xVel*=tmpShoot->xAcc;
-	    }
-	  else
-	    {
-	      tmpShoot->xCor+=tmpShoot->xVel;
-	      tmpShoot->yCor+=tmpShoot->yVel;
-	      tmpShoot->yVel+=tmpShoot->yVel*tmpShoot->yAcc;
-	    }
-	  break;
-	
-	case ROTATER:
-	  tmpShoot->xCor+=tmpShoot->xVel;
-	  tmpShoot->yCor+=tmpShoot->yVel;
-	  tmpShoot->zCor+=tmpShoot->zVel;
-	  break;
-	
-	}
-      
-      glScalef(0.1, 0.1, 0.1);
-      glutWireCube(1.0);
-      glPopMatrix();
-
-      /* garbage collection: look if shoot is outside world */
-      /* fix1: weak boundaries check all four sides */
-      /* fix2: conditions, that a struct tree can be cut off */
-      /* fix3: more efficent and nicer please */
-      if (tmpShoot->age > tmpShoot->lifetime) 
-	{
-	  /* normal case: delete one element, link the others */
-	  if (lastRef != null) 
-	    {
-	      //cout << "garbage collection" << endl;
-	      lastRef->next = tmpShoot->next;
-	      delete tmpShoot;
-	      tmpShoot = lastRef->next;
-	      //cout << "garbage collection left" << endl;
-	    }
-	  else
-	    {
-	      /* special case: first element to be processed */
-	      //cout << "garbage collecton: first el in queue" << endl;
-	      lastRef = tmpShoot->next;
-	      delete tmpShoot;
-	      tmpShoot = lastRef;
-	      lastShoot = tmpShoot;
-	      if (tmpShoot != null) 
-		{
-		  tmpShoot = tmpShoot->next;
-		  //cout << "noch nich null" << endl;
-		}
-	      else 
-		{
-		  lastRef = null;
-		  tmpShoot = null;
-		  lastShoot = null;
-		  //cout << "endl null" << endl;
-		}
-	      
-	      //cout << "garbage collection: firtst el in queue left" << endl;
-	    }
-	}
-      else 
-	{
-	  lastRef = tmpShoot;
-	  tmpShoot = tmpShoot->next;
-	}
-    }
-  //cout << "ShootRocket::drawShoot - finished" << endl;
-}
-
-
-void ShootRocket::addShoot(shoot* sh) 
-{
-  sh->next = null;
-  lastShoot = sh;
-}
-
-void ShootRocket::addBackParable(float x, float y, float z)
-{
-  
-  //cout << "ShootRocket::addShoot" << endl;
-  shoot* sh = new shoot;
-  sh->type = BACKPARABLE;
-  sh->xCor = x; sh->yCor = y; sh->zCor = z;
-  sh->xVel = (-1+(float)rand() / 1000000000/step)/5; 
-  sh->yVel = -.3;
-  sh->zVel = (1-(float)rand() / 1000000000/step)/5;
-  sh->xAcc = 0; sh->yAcc = .01/step; sh->zAcc = 0;
-  sh->age=0;
-  sh->lifetime=5; 
-  sh->next = lastShoot;
-  lastShoot = sh;
-  }
-void ShootRocket::addSideAcc(float x, float y, float z, enum RocketDirection direction)
-{
-  //cout << "ShootRocket::addShoot" << endl;
-  shoot* sh = new shoot;
-  sh->type = SIDEACC;
-  sh->xCor = x; sh->yCor = y; sh->zCor = z;
-  switch (direction)
-    {
-    case LEFT:
-      sh->xVel = -.5; sh->yVel = .05; sh->zVel = 0;
-      break;
-    case RIGHT:
-      sh->xVel = .5; sh->yVel = .05; sh->zVel = 0;
-      break;
-    }
-  sh->xAcc = .9; sh->yAcc = .02; sh->zAcc = 0;
-  sh->age=0;
-  sh->lifetime=10; 
-  sh->next = lastShoot;
-  lastShoot = sh;
-}
-
-void ShootRocket::addRotater(float x, float y, float z)
-{
-  
-  static float radius = 2;
-  rotateAngle+=.1;
-  //cout << "ShootRocket::addShoot" << endl;
-  shoot* sh = new shoot;
-  sh->type = ROTATER;
-  sh->xCor = x+radius*sin(rotateAngle); sh->yCor = y; sh->zCor = z+radius*cos(rotateAngle);
-  sh->xVel = 1*cos(rotateAngle)*step;
-  sh->yVel = 4*step;
-  sh->zVel = 1*sin(rotateAngle)*step;
-  sh->xAcc = 1.01; sh->yAcc = 1- step; sh->zAcc = 1.01;
-  sh->age=0;
-  sh->lifetime=10; 
-  sh->next = lastShoot;
-  lastShoot = sh;
-}
-
-void ShootRocket::setShootStep(float step) 
-{
-  cout << "ShootRocket::setShootStep to " << step << endl;
-  this->step = step;
-}
-
-
-/* Exterminate shoot from game, implement this method  */
-/* if you like to add animatiion */
-void ShootRocket::removeShoot(shoot* sh)
-{
-  glPushMatrix(); 
-  glTranslatef(sh->xCor, sh->yCor, sh->zCor);
-  glutWireCube(1.0);
-  glPopMatrix();
-}
Index: xonox/trunk/src/shoot_rocket.h
===================================================================
--- /orxonox/trunk/src/shoot_rocket.h	(revision 3475)
+++ 	(revision )
@@ -1,56 +1,0 @@
-
-#ifndef _SHOOT_ROCKET_H
-#define _SHOOT_ROCKET_H
-
-
-
-enum RocketType { HOMING, SIDEACC, BACKPARABLE, ROTATER};
-enum RocketDirection {LEFT, RIGHT, UP, DOWN};
-
-
-class ShootRocket {
-
- public:
-  
-  /* a list of all shoot-amental objects */
-  struct shoot {
-    enum RocketType type;
-    shoot *next;
-    float xCor;
-    float yCor;
-    float zCor;    
-    float xVel;
-    float yVel;
-    float zVel;
-    float xAcc;
-    float yAcc;
-    float zAcc;
-    float age;
-    float lifetime;
-    float collisionRadius;
-  };
-  shoot* lastShoot;
-  
-  ShootRocket ();
-  ~ShootRocket ();
-  
-  int inhibitor;
-  float rotateAngle;
-
-  void drawShoot(void);
-  void addShoot(shoot* sh);
-  void addBackParable(float x, float y, float z);
-  void addSideAcc(float x, float y, float z, enum RocketDirection direction);
-  void addRotater(float x, float y, float z);
-
-  void setShootStep(float step);
-  void removeShoot(shoot* sh);
-
-
- private:
-
-  float step;
-
-};
-
-#endif /* _SHOOT_ROCKET_H */
Index: xonox/trunk/src/synchronisable.cc
===================================================================
--- /orxonox/trunk/src/synchronisable.cc	(revision 3475)
+++ 	(revision )
@@ -1,32 +1,0 @@
-
-
-/* 
-   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: ...
-*/
-
-
-#include "synchronisable.h"
-
-
-using namespace std;
-
-
-
-Synchronisable::Synchronisable () {}
-
-
-
-Synchronisable::~Synchronisable () {}
-
-
Index: xonox/trunk/src/synchronisable.h
===================================================================
--- /orxonox/trunk/src/synchronisable.h	(revision 3475)
+++ 	(revision )
@@ -1,24 +1,0 @@
-
-#ifndef _SYNCHRONISABLE_H
-#define _SYNCHRONISABLE_H
-
-#include "data_tank.h"
-
-
-class Synchronisable {
-
- public:
-  Synchronisable ();
-  ~Synchronisable ();
-
-  struct worldEntityState {
-    /*Vector position; */
-    /*Vector orientation; */
-  };
-
-  worldEntityState* getState();
-  void setState(worldEntityState*);
-
-};
-
-#endif /* _SYNCHRONISABLE_H */
Index: /orxonox/trunk/src/world_entities/shoot_laser.cc
===================================================================
--- /orxonox/trunk/src/world_entities/shoot_laser.cc	(revision 3476)
+++ /orxonox/trunk/src/world_entities/shoot_laser.cc	(revision 3476)
@@ -0,0 +1,153 @@
+
+
+/* 
+   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: 
+*/
+
+
+
+
+#include <GL/glut.h>
+#include <iostream>
+
+#include "stdincl.h"
+#include "data_tank.h"
+
+#include "shoot_laser.h"
+
+using namespace std;
+
+
+
+ShootLaser::ShootLaser () 
+{
+  lastShoot = null;
+  step = 1.0;
+  inhibitor = 0;
+}
+
+
+ShootLaser::~ShootLaser () {}
+
+
+void ShootLaser::drawShoot() 
+{
+
+  //cout << "ShootLaser::drawShoot" << endl;
+  /* now draw all the shoots (many) */
+  shoot* tmpShoot = lastShoot;
+  shoot* lastRef = null;
+  while( tmpShoot != null )
+    {
+      glPushMatrix(); 
+      glTranslatef(tmpShoot->xCor, tmpShoot->yCor, tmpShoot->zCor);
+      tmpShoot->xCor+=tmpShoot->xVel;
+      tmpShoot->yCor+=tmpShoot->yVel;
+      glScalef(0.1, 0.1, 0.1);
+      glutWireCube(1.0);
+      glPopMatrix();
+
+      /* garbage collection: look if shoot is outside world */
+      /* fix1: weak boundaries check all four sides */
+      /* fix2: conditions, that a struct tree can be cut off */
+      /* fix3: more efficent and nicer please */
+      if (tmpShoot->yCor - DataTank::yOffset > 20) 
+	{
+	  /* normal case: delete one element, link the others */
+	  if (lastRef != null) 
+	    {
+	      //cout << "garbage collection" << endl;
+	      lastRef->next = tmpShoot->next;
+	      delete tmpShoot;
+	      tmpShoot = lastRef->next;
+	      //cout << "garbage collection left" << endl;
+	    }
+	  else
+	    {
+	      /* special case: first element to be processed */
+	      //cout << "garbage collecton: first el in queue" << endl;
+	      lastRef = tmpShoot->next;
+	      delete tmpShoot;
+	      tmpShoot = lastRef;
+	      lastShoot = tmpShoot;
+	      if (tmpShoot != null) 
+		{
+		  tmpShoot = tmpShoot->next;
+		  //cout << "noch nich null" << endl;
+		}
+	      else 
+		{
+		  lastRef = null;
+		  tmpShoot = null;
+		  lastShoot = null;
+		  //cout << "endl null" << endl;
+		}
+	      
+	      //cout << "garbage collection: firtst el in queue left" << endl;
+	    }
+	}
+      else 
+	{
+	  lastRef = tmpShoot;
+	  tmpShoot = tmpShoot->next;
+	}
+    }
+  //cout << "ShootLaser::drawShoot - finished" << endl;
+}
+
+
+void ShootLaser::addShoot(shoot* sh) 
+{
+  sh->next = null;
+  lastShoot = sh;
+}
+
+void ShootLaser::addShoot(float x, float y, float z)
+{
+  //cout << "ShootLaser::addShoot" << endl;
+  shoot* sh = new shoot;
+  sh->xCor = x; sh->yCor = y; sh->zCor = z;
+  sh->xVel = 0; sh->yVel = .4/step; sh->zVel = 0;
+  sh->next = lastShoot;
+  lastShoot = sh;
+}
+
+void ShootLaser::addShootExt(float x, float y, float z, 
+			     float xVel, float yVel, float zVel)
+{
+  //cout << "ShootLaser::addShootExtended" << endl;
+  shoot* sh = new shoot;
+  sh->xCor = x; sh->yCor = y; sh->zCor = z;
+  sh->xVel = xVel/step; sh->yVel = yVel/step; sh->zVel = zVel/step;
+  sh->next = lastShoot;
+  lastShoot = sh;
+}
+
+void ShootLaser::setShootStep(float step) 
+{
+  cout << "ShootLaser::setShootStep to " << step << endl;
+  this->step = step;
+  cout << "ShootLaser::setShootStep end " << step << endl;
+}
+
+
+/* Exterminate shoot from game, implement this method  */
+/* if you like to add animatiion */
+void ShootLaser::removeShoot(shoot* sh)
+{
+  glPushMatrix(); 
+  glTranslatef(sh->xCor, sh->yCor, sh->zCor);
+  glutWireCube(1.0);
+  glPopMatrix();
+}
Index: /orxonox/trunk/src/world_entities/shoot_laser.h
===================================================================
--- /orxonox/trunk/src/world_entities/shoot_laser.h	(revision 3476)
+++ /orxonox/trunk/src/world_entities/shoot_laser.h	(revision 3476)
@@ -0,0 +1,42 @@
+
+#ifndef _SHOOT_LASER_H
+#define _SHOOT_LASER_H
+
+
+class ShootLaser {
+
+ public:
+  
+  /* a list of all shoot-amental objects */
+  struct shoot {
+    shoot *next;
+    float xCor;
+    float yCor;
+    float zCor;    
+    float xVel;
+    float yVel;
+    float zVel;
+    float collisionRadius;
+  };
+  shoot* lastShoot;
+
+  ShootLaser ();
+  ~ShootLaser ();
+
+  int inhibitor;
+
+  void drawShoot(void);
+  void addShoot(shoot* sh);
+  void addShoot(float x, float y, float z);
+  void addShootExt(float x, float y, float z, float xVel, float yVel, float zVel);
+  void setShootStep(float step);
+  void removeShoot(shoot* sh);
+
+
+ private:
+
+  float step;
+
+};
+
+#endif /* _SHOOT_LASER_H */
Index: /orxonox/trunk/src/world_entities/shoot_rocket.cc
===================================================================
--- /orxonox/trunk/src/world_entities/shoot_rocket.cc	(revision 3476)
+++ /orxonox/trunk/src/world_entities/shoot_rocket.cc	(revision 3476)
@@ -0,0 +1,220 @@
+
+
+/* 
+   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:  Benjamin Grauer
+*/
+
+
+#include <iostream>
+#include <math.h>
+#include <GL/glut.h>
+
+#include "stdincl.h"
+#include "data_tank.h"
+#include "npc.h"
+
+#include "shoot_rocket.h"
+
+using namespace std;
+
+
+
+ShootRocket::ShootRocket ()
+{
+  lastShoot = null;
+  step = 1.0;
+  inhibitor =0;
+  rotateAngle = 0.0;
+}
+
+
+ShootRocket::~ShootRocket () {}
+
+
+void ShootRocket::drawShoot() 
+{
+
+  //cout << "ShootRocket::drawShoot" << endl;
+  /* now draw all the shoots (many) */
+  shoot* tmpShoot = lastShoot;
+  shoot* lastRef = null;
+  while( tmpShoot != null )
+    {
+      glPushMatrix(); 
+      glTranslatef(tmpShoot->xCor, tmpShoot->yCor, tmpShoot->zCor);
+      tmpShoot->age+=step;
+      switch (tmpShoot->type)
+	{
+	case BACKPARABLE:
+	  tmpShoot->xCor+=tmpShoot->xVel;
+	  tmpShoot->yCor+=tmpShoot->yVel;
+	  tmpShoot->xVel+=tmpShoot->xAcc;
+	  tmpShoot->yVel+=tmpShoot->yAcc;
+	  break;
+	
+	case SIDEACC:
+	  if (tmpShoot->xVel >= .01 || tmpShoot->xVel <= -.01)
+	    {
+	      tmpShoot->xCor+=tmpShoot->xVel;
+	      tmpShoot->yCor+=tmpShoot->yVel;
+	      tmpShoot->xVel*=tmpShoot->xAcc;
+	    }
+	  else
+	    {
+	      tmpShoot->xCor+=tmpShoot->xVel;
+	      tmpShoot->yCor+=tmpShoot->yVel;
+	      tmpShoot->yVel+=tmpShoot->yVel*tmpShoot->yAcc;
+	    }
+	  break;
+	
+	case ROTATER:
+	  tmpShoot->xCor+=tmpShoot->xVel;
+	  tmpShoot->yCor+=tmpShoot->yVel;
+	  tmpShoot->zCor+=tmpShoot->zVel;
+	  break;
+	
+	}
+      
+      glScalef(0.1, 0.1, 0.1);
+      glutWireCube(1.0);
+      glPopMatrix();
+
+      /* garbage collection: look if shoot is outside world */
+      /* fix1: weak boundaries check all four sides */
+      /* fix2: conditions, that a struct tree can be cut off */
+      /* fix3: more efficent and nicer please */
+      if (tmpShoot->age > tmpShoot->lifetime) 
+	{
+	  /* normal case: delete one element, link the others */
+	  if (lastRef != null) 
+	    {
+	      //cout << "garbage collection" << endl;
+	      lastRef->next = tmpShoot->next;
+	      delete tmpShoot;
+	      tmpShoot = lastRef->next;
+	      //cout << "garbage collection left" << endl;
+	    }
+	  else
+	    {
+	      /* special case: first element to be processed */
+	      //cout << "garbage collecton: first el in queue" << endl;
+	      lastRef = tmpShoot->next;
+	      delete tmpShoot;
+	      tmpShoot = lastRef;
+	      lastShoot = tmpShoot;
+	      if (tmpShoot != null) 
+		{
+		  tmpShoot = tmpShoot->next;
+		  //cout << "noch nich null" << endl;
+		}
+	      else 
+		{
+		  lastRef = null;
+		  tmpShoot = null;
+		  lastShoot = null;
+		  //cout << "endl null" << endl;
+		}
+	      
+	      //cout << "garbage collection: firtst el in queue left" << endl;
+	    }
+	}
+      else 
+	{
+	  lastRef = tmpShoot;
+	  tmpShoot = tmpShoot->next;
+	}
+    }
+  //cout << "ShootRocket::drawShoot - finished" << endl;
+}
+
+
+void ShootRocket::addShoot(shoot* sh) 
+{
+  sh->next = null;
+  lastShoot = sh;
+}
+
+void ShootRocket::addBackParable(float x, float y, float z)
+{
+  
+  //cout << "ShootRocket::addShoot" << endl;
+  shoot* sh = new shoot;
+  sh->type = BACKPARABLE;
+  sh->xCor = x; sh->yCor = y; sh->zCor = z;
+  sh->xVel = (-1+(float)rand() / 1000000000/step)/5; 
+  sh->yVel = -.3;
+  sh->zVel = (1-(float)rand() / 1000000000/step)/5;
+  sh->xAcc = 0; sh->yAcc = .01/step; sh->zAcc = 0;
+  sh->age=0;
+  sh->lifetime=5; 
+  sh->next = lastShoot;
+  lastShoot = sh;
+  }
+void ShootRocket::addSideAcc(float x, float y, float z, enum RocketDirection direction)
+{
+  //cout << "ShootRocket::addShoot" << endl;
+  shoot* sh = new shoot;
+  sh->type = SIDEACC;
+  sh->xCor = x; sh->yCor = y; sh->zCor = z;
+  switch (direction)
+    {
+    case LEFT:
+      sh->xVel = -.5; sh->yVel = .05; sh->zVel = 0;
+      break;
+    case RIGHT:
+      sh->xVel = .5; sh->yVel = .05; sh->zVel = 0;
+      break;
+    }
+  sh->xAcc = .9; sh->yAcc = .02; sh->zAcc = 0;
+  sh->age=0;
+  sh->lifetime=10; 
+  sh->next = lastShoot;
+  lastShoot = sh;
+}
+
+void ShootRocket::addRotater(float x, float y, float z)
+{
+  
+  static float radius = 2;
+  rotateAngle+=.1;
+  //cout << "ShootRocket::addShoot" << endl;
+  shoot* sh = new shoot;
+  sh->type = ROTATER;
+  sh->xCor = x+radius*sin(rotateAngle); sh->yCor = y; sh->zCor = z+radius*cos(rotateAngle);
+  sh->xVel = 1*cos(rotateAngle)*step;
+  sh->yVel = 4*step;
+  sh->zVel = 1*sin(rotateAngle)*step;
+  sh->xAcc = 1.01; sh->yAcc = 1- step; sh->zAcc = 1.01;
+  sh->age=0;
+  sh->lifetime=10; 
+  sh->next = lastShoot;
+  lastShoot = sh;
+}
+
+void ShootRocket::setShootStep(float step) 
+{
+  cout << "ShootRocket::setShootStep to " << step << endl;
+  this->step = step;
+}
+
+
+/* Exterminate shoot from game, implement this method  */
+/* if you like to add animatiion */
+void ShootRocket::removeShoot(shoot* sh)
+{
+  glPushMatrix(); 
+  glTranslatef(sh->xCor, sh->yCor, sh->zCor);
+  glutWireCube(1.0);
+  glPopMatrix();
+}
Index: /orxonox/trunk/src/world_entities/shoot_rocket.h
===================================================================
--- /orxonox/trunk/src/world_entities/shoot_rocket.h	(revision 3476)
+++ /orxonox/trunk/src/world_entities/shoot_rocket.h	(revision 3476)
@@ -0,0 +1,56 @@
+
+#ifndef _SHOOT_ROCKET_H
+#define _SHOOT_ROCKET_H
+
+
+
+enum RocketType { HOMING, SIDEACC, BACKPARABLE, ROTATER};
+enum RocketDirection {LEFT, RIGHT, UP, DOWN};
+
+
+class ShootRocket {
+
+ public:
+  
+  /* a list of all shoot-amental objects */
+  struct shoot {
+    enum RocketType type;
+    shoot *next;
+    float xCor;
+    float yCor;
+    float zCor;    
+    float xVel;
+    float yVel;
+    float zVel;
+    float xAcc;
+    float yAcc;
+    float zAcc;
+    float age;
+    float lifetime;
+    float collisionRadius;
+  };
+  shoot* lastShoot;
+  
+  ShootRocket ();
+  ~ShootRocket ();
+  
+  int inhibitor;
+  float rotateAngle;
+
+  void drawShoot(void);
+  void addShoot(shoot* sh);
+  void addBackParable(float x, float y, float z);
+  void addSideAcc(float x, float y, float z, enum RocketDirection direction);
+  void addRotater(float x, float y, float z);
+
+  void setShootStep(float step);
+  void removeShoot(shoot* sh);
+
+
+ private:
+
+  float step;
+
+};
+
+#endif /* _SHOOT_ROCKET_H */
