Index: orxonox/trunk/src/Makefile.am
===================================================================
--- orxonox/trunk/src/Makefile.am	(revision 2035)
+++ orxonox/trunk/src/Makefile.am	(revision 2036)
@@ -6,5 +6,5 @@
 
 bin_PROGRAMS=orxonox
-orxonox_SOURCES=orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc
+orxonox_SOURCES=orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc world_entity.cc synchronisable.cc list.cc
 
 #  uncomment the following if bencoder requires the math library
Index: orxonox/trunk/src/Makefile.in
===================================================================
--- orxonox/trunk/src/Makefile.in	(revision 2035)
+++ orxonox/trunk/src/Makefile.in	(revision 2036)
@@ -117,5 +117,5 @@
 #"-O3 -pedantic -fPIC -ffast-math -I/usr/X11R6/include"
 bin_PROGRAMS = orxonox
-orxonox_SOURCES = orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc
+orxonox_SOURCES = orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc world_entity.cc synchronisable.cc list.cc
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -129,5 +129,6 @@
 	environment.$(OBJEXT) player.$(OBJEXT) npc.$(OBJEXT) \
 	input_output.$(OBJEXT) data_tank.$(OBJEXT) ai.$(OBJEXT) \
-	shoot_laser.$(OBJEXT) shoot_rocket.$(OBJEXT)
+	shoot_laser.$(OBJEXT) shoot_rocket.$(OBJEXT) \
+	world_entity.$(OBJEXT) synchronisable.$(OBJEXT) list.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
 orxonox_LDADD = $(LDADD)
@@ -140,8 +141,10 @@
 @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ai.Po ./$(DEPDIR)/data_tank.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/environment.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/input_output.Po ./$(DEPDIR)/npc.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox.Po ./$(DEPDIR)/player.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/shoot_laser.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/shoot_rocket.Po ./$(DEPDIR)/world.Po
+@AMDEP_TRUE@	./$(DEPDIR)/input_output.Po ./$(DEPDIR)/list.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/npc.Po ./$(DEPDIR)/orxonox.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/player.Po ./$(DEPDIR)/shoot_laser.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/shoot_rocket.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/synchronisable.Po ./$(DEPDIR)/world.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/world_entity.Po
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -200,4 +203,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/environment.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_output.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/npc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox.Po@am__quote@
@@ -205,5 +209,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shoot_laser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shoot_rocket.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synchronisable.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/world.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/world_entity.Po@am__quote@
 
 .cc.o:
Index: orxonox/trunk/src/environment.cc
===================================================================
--- orxonox/trunk/src/environment.cc	(revision 2035)
+++ orxonox/trunk/src/environment.cc	(revision 2036)
@@ -11,39 +11,47 @@
    any later version.
 
-   ### File Specific:
-   main-programmer: ...
-   co-programmer: ...
+   ### File Specific
+   main-programmer: Patrick Boenzli
+   co-programmer: 
 */
 
+#include <iostream>
+#include <GL/glut.h>
+#include <stdlib.h>
+
+#include "data_tank.h"
 
 #include "environment.h"
-#include <iostream>
-
 
 using namespace std;
 
 
+//Sorry Bensch
+#define LEVEL_LENGTH 500
 
 Environment::Environment () 
+  : WorldEntity()
 {
 
-
-  for (int x = 0; x < 10; x++)
+  /*
+  //Sorry Bensch: x,y = 10
+  for (int x = 0; x < 50; x++)
     {
-      for (int y = 0; y < 10; y++)
+      for (int y = 0; y < 50; y++)
 	{
-	  mountainTest[x][y] = 0;
+	  mountainTest[x][y] =0;
 	                                         
 	}
     }
-
-  for (int x = 1; x < 9; x++)
+  //Sorry Bensch: x,y = 9
+  for (int x = 1; x < LEVEL_LENGTH; x++)
     {
-      for (int y = 1; y < 9; y++)
+      for (int y = 1; y < LEVEL_LENGTH; y++)
 	{
-	  mountainTest[x][y] = (float)rand() / 900000000;
-	                                         
+	  //mountainTest[x][y] = (float)random() / 900000000;
+	  mountainTest[x][y] = (float)(random() % 4);                                       
 	}
     }
+  */
 }
 
@@ -53,7 +61,7 @@
 
 
-
-void Environment::drawEnvironment() 
+void Environment::paint()
 {
+  /*
   glPushMatrix();
   //glScalef(0.5, 0.5, 1.0);
@@ -64,7 +72,7 @@
   
   glBegin(GL_LINES);
-  for (int x = 0; x < 9; x += 1)
+  for (int x = 0; x < LEVEL_LENGTH; x += 1)
     {
-      for (int y = 0; y < 9; y += 1)
+      for (int y = 0; y < 190; y += 1)
 	{
 	  glVertex3f((float)(2*x), (float)(2*y), mountainTest[x][y]);
@@ -76,7 +84,7 @@
   
   glBegin(GL_LINES);
-  for (int y = 0; y < 9; y += 1)
+  for (int y = 0; y < LEVEL_LENGTH; y += 1)
     {
-      for (int x = 0; x < 9; x += 1)
+      for (int x = 0; x < 90; x += 1)
 	{
 	  glVertex3f((float)(2*x), (float)(2*y), mountainTest[x][y]);
@@ -87,4 +95,10 @@
   
   glPopMatrix();
+  */
 }
 
+void Environment::drawEnvironment() 
+{
+
+}
+
Index: orxonox/trunk/src/environment.h
===================================================================
--- orxonox/trunk/src/environment.h	(revision 2035)
+++ orxonox/trunk/src/environment.h	(revision 2036)
@@ -1,12 +1,12 @@
 
-#include <GL/glut.h>
-#include <stdlib.h>
+
 
 #ifndef ENVIRONEMENT_H
 #define ENVIRONEMENT_H
 
-#include "data_tank.h"
 
-class Environment {
+#include "world_entity.h"
+
+class Environment : public WorldEntity {
 
  private:
@@ -21,4 +21,5 @@
   ~Environment ();
 
+  void paint(void);
   void drawEnvironment(void);
   void setEnvPosition(void);
Index: orxonox/trunk/src/input_output.cc
===================================================================
--- orxonox/trunk/src/input_output.cc	(revision 2035)
+++ orxonox/trunk/src/input_output.cc	(revision 2036)
@@ -16,7 +16,11 @@
 */
 
+#include <iostream>
+
+#include "world.h"
+#include "input_output.h"
+#include "player.h"
 
 #include "input_output.h"
-#include <iostream>
 
 using namespace std;
Index: orxonox/trunk/src/input_output.h
===================================================================
--- orxonox/trunk/src/input_output.h	(revision 2035)
+++ orxonox/trunk/src/input_output.h	(revision 2036)
@@ -5,9 +5,10 @@
 #define INPUT_OUTPUT_H
 
-#include "world.h"
-#include "input_output.h"
-#include "player.h"
+
 
 #include "data_tank.h"
+
+class World;
+class Player;
 
 class InputOutput {
Index: orxonox/trunk/src/list.cc
===================================================================
--- orxonox/trunk/src/list.cc	(revision 2036)
+++ orxonox/trunk/src/list.cc	(revision 2036)
@@ -0,0 +1,74 @@
+
+
+/* 
+   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 "world_entity.h"
+#include "stdincl.h"
+
+#include "list.h"
+
+using namespace std;
+
+
+
+List::List () 
+{
+  lastElement = null;
+  listSize = 0;
+}
+
+List::~List () 
+{}
+
+
+void List::addElement(WorldEntity* we) 
+{
+  listElement* newElement = new listElement;
+  newElement->we = we;
+  newElement->next = lastElement;
+  newElement->prev = null;
+  lastElement = newElement;
+  listSize++;
+}
+
+
+void List::removeElement(WorldEntity* we) 
+{
+  listElement* element = lastElement;
+  while(element->we != we)
+    {
+      element = element->next;
+    }
+  element->prev->next = element->next;
+  element->next->prev = element->prev;
+  delete element->we;
+}
+
+
+WorldEntity* List::getElement(int number) 
+{}
+
+int List::getNrOfElement(WorldEntity* we) 
+{}
+
+void List::defragment() 
+{}
+
+void List::flushList() 
+{}
+
+void List::killList() 
+{}
Index: orxonox/trunk/src/list.h
===================================================================
--- orxonox/trunk/src/list.h	(revision 2036)
+++ orxonox/trunk/src/list.h	(revision 2036)
@@ -0,0 +1,35 @@
+
+#ifndef LIST_H
+#define LIST_H
+
+#include "list.h"
+
+class WorldEntity;
+
+class List {
+
+ public:
+  List ();
+  ~List ();
+
+  void addElement(WorldEntity* we);
+  void removeElement(WorldEntity* we);
+  WorldEntity* getElement(int number);
+  int getNrOfElement(WorldEntity* we);
+  void defragment();
+  void flushList();
+  void killList();
+  
+ private:
+  struct listElement {
+    WorldEntity* we;
+    listElement* next;
+    listElement* prev;
+  };
+  listElement* lastElement;
+  int listSize;
+
+
+};
+
+#endif
Index: orxonox/trunk/src/npc.cc
===================================================================
--- orxonox/trunk/src/npc.cc	(revision 2035)
+++ orxonox/trunk/src/npc.cc	(revision 2036)
@@ -16,14 +16,17 @@
 */
 
+#include <iostream>
+#include <GL/glut.h>
+
+#include "ai.h"
+#include "data_tank.h"
 
 #include "npc.h"
-
-#include <iostream>
-
 
 using namespace std;
 
 
-NPC::NPC () 
+NPC::NPC()
+  : WorldEntity()
 {
   hasDied = 0;
@@ -57,10 +60,9 @@
 
 void NPC::addAI(AI* ai)
+{}
+
+void NPC::paint()
 {
-
-}
-
-void NPC::drawNPC(void) 
-{
+  //cout << "WorldEntity::WorldEntity();" << endl;  
   /* fix: died flag approach is very stupid, just to show @ convention */
   if( hasDied == 0 ) {
@@ -73,4 +75,9 @@
 }
 
+void NPC::drawNPC() 
+{
+
+}
+
 
 /* define the reaction, if the ship is been hit */
@@ -81,4 +88,5 @@
 }
 
+
 void NPC::die()
 {
Index: orxonox/trunk/src/npc.h
===================================================================
--- orxonox/trunk/src/npc.h	(revision 2035)
+++ orxonox/trunk/src/npc.h	(revision 2036)
@@ -3,11 +3,9 @@
 #define NPC_H
 
-/* openGL Headers */
-#include <GL/glut.h>
+#include "world_entity.h"
 
-#include "ai.h"
-#include "data_tank.h"
+class AI;
 
-class NPC {
+class NPC : public WorldEntity {
 
  public:
@@ -23,4 +21,5 @@
 
   void drawNPC(void);
+  void paint(void);
   void setPosition(float x, float y, float z);
   void getPosition(float* x, float* y, float* z);
Index: orxonox/trunk/src/orxonox.cc
===================================================================
--- orxonox/trunk/src/orxonox.cc	(revision 2035)
+++ orxonox/trunk/src/orxonox.cc	(revision 2036)
@@ -24,12 +24,22 @@
 */
 
-/* class definition header */
+#include <iostream>
+#include <cstdio>
+#include <GL/glut.h>
+
+#include "environment.h"
+#include "world.h"
+#include "input_output.h"
+#include "data_tank.h"
+#include "stdincl.h"
+#include "player.h"
+#include "npc.h"
+#include "shoot_laser.h"
+
 #include "orxonox.h"
 
-
 using namespace std;
 
 
-
 Orxonox::Orxonox () 
 {
@@ -40,7 +50,5 @@
 
 Orxonox::~Orxonox () 
-{
-  glutSetKeyRepeat(GLUT_KEY_REPEAT_ON);
-}
+{}
 
 
@@ -63,4 +71,5 @@
 //int Orxonox::offsetY = 0;
 
+
 Orxonox* Orxonox::getInstance (void)
 {
@@ -79,5 +88,5 @@
   //glutFullScreen();
   glutInitWindowPosition(100, 100);
-  glutCreateWindow("orxOnox");
+  glutCreateWindow("OrxonoX");
   glShadeModel(GL_FLAT);
   /* window event dispatchers */
@@ -138,5 +147,4 @@
   io->setPlayerStep(19.2/fps); /* set player to propper speed */
   localPlayer->shootLaser->setShootStep(20.0/fps); /* set shoot speed */
-  localPlayer->shootRocket->setShootStep(20.0/fps); /* set shoot speed */
   world->setWorldStep(7.0/fps); /* set the speed of the terrain moving away */
   fps = 0;
Index: orxonox/trunk/src/orxonox.h
===================================================================
--- orxonox/trunk/src/orxonox.h	(revision 2035)
+++ orxonox/trunk/src/orxonox.h	(revision 2036)
@@ -1,22 +1,9 @@
-
-
 
 #ifndef ORXONOX_H
 #define ORXONOX_H
 
-/* standard headers */
-#include <iostream>
-#include <cstdio>
-
-/* openGL Headers */
-#include <GL/glut.h>
-
-
-#include "environment.h"
-#include "world.h"
-#include "input_output.h"
-#include "data_tank.h"
-#include "stdincl.h"
-#include "player.h"
+class World;
+class InputOutput;
+class Player;
 
 
@@ -47,5 +34,4 @@
 
  public:
-
   static Orxonox* getInstance (void);
 
Index: orxonox/trunk/src/player.cc
===================================================================
--- orxonox/trunk/src/player.cc	(revision 2035)
+++ orxonox/trunk/src/player.cc	(revision 2036)
@@ -16,15 +16,20 @@
 */
 
+#include <iostream>
+#include <stdlib.h>
+#include <GL/glut.h>
+
+#include "shoot_laser.h"
+#include "shoot_rocket.h"
+#include "data_tank.h"
 
 #include "player.h"
-#include <iostream>
-#include <stdlib.h>
-
 
 using namespace std;
 
 
-Player::Player () {
-  // cout << "Player::Player" << endl;
+Player::Player() 
+   : WorldEntity() {
+  //cout << "Player::Player" << endl;
   xCor = yCor = zCor = 0;
   shootLaser = new ShootLaser;
@@ -58,5 +63,4 @@
 void Player::goX(float x) 
 {
-  //cout << "Player::goX" << endl;
   xCor += x;
 }
@@ -73,25 +77,36 @@
 }
 
+
+
 void Player::shoot(int n) 
 {
+
   //  if (shootLaser->inhibitor++ <= 100)
-    shootLaser->addShoot(xCor, yCor, zCor);
-    // else if (shootLaser->inhibitor++ <= 200)
-    shootLaser->addShootExt(xCor, yCor, zCor, .1, .4, .0);
-    //  else if (shootLaser->inhibitor++ <= 300)
-    shootLaser->addShootExt(xCor, yCor, zCor, -0.1, .4, .0);
-    //  else
-    shootLaser->inhibitor =0;
+  shootLaser->addShoot(xCor, yCor, zCor);
+  // else if (shootLaser->inhibitor++ <= 200)
+  shootLaser->addShootExt(xCor, yCor, zCor, .1, .4, .0);
+  //  else if (shootLaser->inhibitor++ <= 300)
+  shootLaser->addShootExt(xCor, yCor, zCor, -0.1, .4, .0);
+  //  else
+  shootLaser->inhibitor =0;
   
-    //  if (shootRocket->inhibitor++ >=80)
-    {
-      shootRocket->addBackParable(xCor, yCor, zCor);
-      shootRocket->addSideAcc(xCor, yCor, zCor, RIGHT);
-      shootRocket->addSideAcc(xCor, yCor, zCor, LEFT);
-      shootRocket->addRotater(xCor, yCor, zCor);
-      //  if (shootRocket->inhibitor >=90)
-      //	shootRocket->inhibitor =0;
-    }
+  //  if (shootRocket->inhibitor++ >=80)
+  {
+    shootRocket->addBackParable(xCor, yCor, zCor);
+    shootRocket->addSideAcc(xCor, yCor, zCor, RIGHT);
+    shootRocket->addSideAcc(xCor, yCor, zCor, LEFT);
+    shootRocket->addRotater(xCor, yCor, zCor);
+    //  if (shootRocket->inhibitor >=90)
+    //        shootRocket->inhibitor =0;
+  }
   //cout << "Player::shoot" << endl;
+  
+  /*
+  shootLaser->addShoot(xCor, yCor, zCor);
+  shootLaser->addShootExt(xCor, yCor, zCor, .1, .4, .0);
+  shootLaser->addShootExt(xCor, yCor, zCor, -0.1, .4, .0);
+  //shootRocket->addShoot(xCor, yCor, zCor);
+  //cout << "Player::shoot" << endl;
+  */
 }
 
@@ -100,6 +115,7 @@
 
 
-void Player::drawPlayer(void) 
+void Player::paint() 
 {
+  //cout << "Player::drawPlayer" << endl;
   glPushMatrix();
   glTranslatef(xCor, yCor, 3.0);
@@ -110,5 +126,5 @@
   shootLaser->drawShoot();
   shootRocket->drawShoot();
-  //cout << "Player::drawPlayer" << endl;
+  //cout << "Player::drawPlayer, end" << endl;
 }
 
Index: orxonox/trunk/src/player.h
===================================================================
--- orxonox/trunk/src/player.h	(revision 2035)
+++ orxonox/trunk/src/player.h	(revision 2036)
@@ -3,12 +3,12 @@
 #define PLAYER_H
 
-/* openGL Headers */
-#include <GL/glut.h>
+#include "world_entity.h"
 
-#include "shoot_laser.h"
-#include "shoot_rocket.h"
-#include "data_tank.h"
+class ShootLaser;
+class ShootRocket;
 
-class Player {
+
+class Player : public WorldEntity 
+{
 
  public:
@@ -23,4 +23,5 @@
   float collisionRadius;
 
+
   /* this player wanna shoot? so include a ref to ShootLaser */
   ShootLaser* shootLaser;
@@ -30,4 +31,5 @@
   void getPosition(float* x, float* y, float* z);
   void setCollisionRadius(float radius);
+  void paint();
   void goX(float x);
   void goY(float y);
Index: orxonox/trunk/src/proto_class.h
===================================================================
--- orxonox/trunk/src/proto_class.h	(revision 2035)
+++ orxonox/trunk/src/proto_class.h	(revision 2036)
@@ -4,4 +4,5 @@
 
 #include "data_tank.h"
+
 
 class ProtoClass {
Index: orxonox/trunk/src/shoot_laser.cc
===================================================================
--- orxonox/trunk/src/shoot_laser.cc	(revision 2035)
+++ orxonox/trunk/src/shoot_laser.cc	(revision 2036)
@@ -17,8 +17,13 @@
 
 
-#include "shoot_laser.h"
 
+
+#include <GL/glut.h>
 #include <iostream>
 
+#include "stdincl.h"
+#include "data_tank.h"
+
+#include "shoot_laser.h"
 
 using namespace std;
@@ -134,4 +139,5 @@
   cout << "ShootLaser::setShootStep to " << step << endl;
   this->step = step;
+  cout << "ShootLaser::setShootStep end " << step << endl;
 }
 
Index: orxonox/trunk/src/shoot_laser.h
===================================================================
--- orxonox/trunk/src/shoot_laser.h	(revision 2035)
+++ orxonox/trunk/src/shoot_laser.h	(revision 2036)
@@ -3,12 +3,6 @@
 #define SHOOT_LASER_H
 
-/* openGL Headers */
-#include <GL/glut.h>
-
-#include "stdincl.h"
-#include "data_tank.h"
 
 class ShootLaser {
-
 
  public:
Index: orxonox/trunk/src/shoot_rocket.cc
===================================================================
--- orxonox/trunk/src/shoot_rocket.cc	(revision 2035)
+++ orxonox/trunk/src/shoot_rocket.cc	(revision 2036)
@@ -17,8 +17,13 @@
 
 
+#include <iostream>
+#include <math.h>
+#include <GL/glut.h>
+
+#include "stdincl.h"
+#include "data_tank.h"
+#include "npc.h"
+
 #include "shoot_rocket.h"
-
-#include <iostream>
-
 
 using namespace std;
Index: orxonox/trunk/src/shoot_rocket.h
===================================================================
--- orxonox/trunk/src/shoot_rocket.h	(revision 2035)
+++ orxonox/trunk/src/shoot_rocket.h	(revision 2036)
@@ -3,17 +3,11 @@
 #define SHOOT_ROCKET_H
 
-/* openGL Headers */
-#include <GL/glut.h>
-#include <math.h>
 
-#include "stdincl.h"
-#include "data_tank.h"
-#include "npc.h"
 
 enum RocketType { HOMING, SIDEACC, BACKPARABLE, ROTATER};
 enum RocketDirection {LEFT, RIGHT, UP, DOWN};
 
+
 class ShootRocket {
-
 
  public:
Index: orxonox/trunk/src/synchronisable.cc
===================================================================
--- orxonox/trunk/src/synchronisable.cc	(revision 2036)
+++ orxonox/trunk/src/synchronisable.cc	(revision 2036)
@@ -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/synchronisable.h
===================================================================
--- orxonox/trunk/src/synchronisable.h	(revision 2036)
+++ orxonox/trunk/src/synchronisable.h	(revision 2036)
@@ -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
Index: orxonox/trunk/src/world.cc
===================================================================
--- orxonox/trunk/src/world.cc	(revision 2035)
+++ orxonox/trunk/src/world.cc	(revision 2036)
@@ -15,8 +15,19 @@
 */
 
+#include <iostream>
+#include <stdlib.h>
+#include <cmath>
+#include <GL/glut.h>
+
+#include "npc.h"
+#include "player.h"
+#include "environment.h"
+#include "shoot_laser.h"
+#include "shoot_rocket.h"
+#include "stdincl.h"
+#include "data_tank.h"
 
 #include "world.h"
 
-#include <iostream>
 
 using namespace std;
@@ -174,4 +185,5 @@
 void World::drawWorld(void) 
 {
+
   glLoadIdentity();
   gluLookAt(0.0, -14.0 + DataTank::yOffset, 15.0, 0.0, 0.0 + DataTank::yOffset, 0.0, 0.0, 1.0, 0.0);
@@ -181,5 +193,5 @@
   while( tmpPlayer != null ) 
     {
-      (*tmpPlayer->player).drawPlayer();
+      tmpPlayer->player->paint();
       tmpPlayer = tmpPlayer->next;
     }
@@ -188,5 +200,5 @@
   while( tmpNPC != null )
     {
-      (*tmpNPC->npc).drawNPC();
+      (*tmpNPC->npc).paint();
       tmpNPC = tmpNPC->next;
     }
@@ -235,5 +247,5 @@
     }
 
-  
+
 }
 
@@ -254,6 +266,7 @@
 void World::setWorldStep(float step)
 {
+  //cout << "World::setWorldStep(" << step << ");" << endl;
   this->step = step;
-  cout << "setting speed to " << step << endl;
+  //cout << "setting speed to " << step << endl;
 }
 
Index: orxonox/trunk/src/world.h
===================================================================
--- orxonox/trunk/src/world.h	(revision 2035)
+++ orxonox/trunk/src/world.h	(revision 2036)
@@ -1,18 +1,10 @@
-
-
 
 #ifndef WORLD_H
 #define WORLD_H
 
-#include <stdlib.h>
-#include <cmath>
+class Player;
+class NPC;
+class Environment;
 
-#include "npc.h"
-#include "player.h"
-#include "environment.h"
-#include "shoot_laser.h"
-#include "shoot_rocket.h"
-#include "stdincl.h"
-#include "data_tank.h"
 
 class World {
Index: orxonox/trunk/src/world_entity.cc
===================================================================
--- orxonox/trunk/src/world_entity.cc	(revision 2036)
+++ orxonox/trunk/src/world_entity.cc	(revision 2036)
@@ -0,0 +1,78 @@
+
+
+/* 
+   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 <iostream>
+
+#include "world_entity.h"
+
+using namespace std;
+
+
+WorldEntity::WorldEntity () 
+{
+  health = 100;
+  speed = 0;
+}
+
+
+WorldEntity::~WorldEntity () {}
+
+
+/*void WorldEntity::setPosition( Vector position ) {} */
+/* Vector*  void getPosition() {} */
+
+void WorldEntity::setOrientation(/* Vector orientation*/) {}
+/* Vector* */ void WorldEntity::getOrientation() {}
+
+void WorldEntity::setSpeed(float speed)
+{
+  this->speed = speed;
+}
+
+float WorldEntity::getSpeed()
+{
+  return speed;
+}
+
+void WorldEntity::setHealth(float health)
+{
+  this->health = health;
+}
+
+float WorldEntity::getHealth()
+{
+  return health;
+}
+
+
+void WorldEntity::tick(float dt) 
+{}
+
+void WorldEntity::paint() 
+{
+  cout << "WorldEntity::paint()" << endl;
+}
+
+/* virtual void WorldEntity::actionEvent(Event* event); */
+void WorldEntity::collide(WorldEntity* we /*, Vector n */) 
+{}
+
+void WorldEntity::hurt() 
+{}
+
+void WorldEntity::destroy() 
+{}
Index: orxonox/trunk/src/world_entity.h
===================================================================
--- orxonox/trunk/src/world_entity.h	(revision 2036)
+++ orxonox/trunk/src/world_entity.h	(revision 2036)
@@ -0,0 +1,44 @@
+
+#ifndef WORLD_ENTITY_H
+#define WORLD_ENTITY_H
+
+#include "data_tank.h"
+
+
+class WorldEntity {
+
+ public:
+  WorldEntity ();
+  ~WorldEntity ();
+
+
+  /*void setPosition( Vector position );*/
+  /* Vector*  void getPosition();*/
+  void setOrientation(/* Vector orientation*/);
+  /* Vector* */ void getOrientation();
+  void setSpeed(float speed);
+  float getSpeed();
+  void setHealth(float health);
+  float getHealth();
+
+  void addAbility();
+  void removeAbility();
+
+  virtual void tick(float dt);
+  virtual void paint();
+  /* virtual void actionEvent(Event* event); */
+  virtual void collide(WorldEntity* we /*, Vector n */);
+  virtual void hurt();
+  virtual void destroy();
+
+ private:
+  /* Vector* position; */
+  /* Vector* orientation; */
+  /* List of abilities */ 
+  float health;
+  float speed;
+  
+
+};
+
+#endif
