changeset 21:e8ef7e6f62b5

=worldobject und serverwobject gemergt
author wuha
date Sat, 04 Oct 2008 11:14:54 +0000
parents 2917d63a5f91
children 69249e61d03f
files src/Makefile.objs src/core/creature.cpp src/core/creature.h src/core/damage.cpp src/core/damage.h src/core/dmgprojectile.cpp src/core/dmgprojectile.h src/core/document.cpp src/core/fixedobject.cpp src/core/fixedobject.h src/core/gridunit.cpp src/core/gridunit.h src/core/monster.cpp src/core/monster.h src/core/objectfactory.cpp src/core/objectfactory.h src/core/player.cpp src/core/player.h src/core/region.cpp src/core/region.h src/core/spawnpoint.cpp src/core/spawnpoint.h src/core/world.cpp src/core/world.h src/core/worldobject.cpp src/core/worldobject.h src/gl_gui/window_main_gl.cpp src/gui/mainwindow.cpp src/gui/scene.cpp src/gui/scene.h
diffstat 30 files changed, 517 insertions(+), 314 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile.objs	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/Makefile.objs	Sat Oct 04 11:14:54 2008 +0000
@@ -17,7 +17,6 @@
 ./core/creature.o
 ./core/pathfind.o
 ./core/fixedobject.o
-./core/serverwobject.o
 ./core/player.o
 ./core/warrior.o
 ./core/monster.o
--- a/src/core/creature.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/creature.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -20,7 +20,7 @@
 #include <sys/time.h>
 
 //Constructors/Destructors
-Creature::Creature(World* world, unsigned int id) : ServerWObject(world, id)
+Creature::Creature(World* world, unsigned int id) : WorldObject(world, id)
 {
 	if (!Creature::init())
 	{
@@ -146,7 +146,7 @@
 
 	DEBUG5("destroy");
 
-	ServerWObject::destroy();
+	WorldObject::destroy();
     return true;
 }
 
@@ -405,7 +405,7 @@
 		DEBUG5("critical point %f %f %f",p1,pct,p2);
 
 		// Zielobjekt der Aktion
-		ServerWObject* goal =0;
+		WorldObject* goal =0;
 
 		float goalx =  m_action.m_goal_coordinate_x;
 		float goaly =  m_action.m_goal_coordinate_y;
@@ -538,7 +538,7 @@
 
 }
 
-void Creature::performActionCritPart(float goalx, float goaly, ServerWObject* goal)
+void Creature::performActionCritPart(float goalx, float goaly, WorldObject* goal)
 {
 	// Zielobjekt als Creature* pointer
 	// null, wenn das Objekt kein Lebewesen ist
@@ -566,9 +566,9 @@
 
 
 
-	list<ServerWObject*> res;
+	list<WorldObject*> res;
 	res.clear();
-	list<ServerWObject*>::iterator it;
+	list<WorldObject*>::iterator it;
 
 	// Koordinaten das ausfuehrenden Objektes
 	float x = getGeometry()->m_shape.m_coordinate_x;
@@ -1427,7 +1427,7 @@
 	float ynew = getGeometry()->m_shape.m_coordinate_y+getMoveInfo()->m_speed_y * time;
 
 	// Kreis um den Zielpunkt
-	list<ServerWObject*> result;
+	list<WorldObject*> result;
 	Shape scopy;
 	scopy.m_radius = getGeometry()->m_shape.m_radius*1.05;
 	scopy.m_coordinate_x = xnew;
@@ -1444,7 +1444,7 @@
 	{
 		// es gibt kollidierende Objekte
 		DEBUG5("aktuelle Koordinaten %f %f",getGeometry()->m_shape.m_coordinate_x,getGeometry()->m_shape.m_coordinate_y);
-		list<ServerWObject*>::iterator i;
+		list<WorldObject*>::iterator i;
 
 		Shape* s2;
         // Liste der kollidierenden Objekte durchgehen
@@ -1692,7 +1692,7 @@
 	m_action.m_goal_coordinate_y = goaly;
 
 	// Zeiger auf das Zielobjekt
-	ServerWObject* goal=0;
+	WorldObject* goal=0;
 
 	// eigene Position
 	float x = getGeometry()->m_shape.m_coordinate_x;
@@ -1953,9 +1953,9 @@
 		s.m_coordinate_y =y;
 		s.m_type = Shape::CIRCLE;
 		s.m_radius = getGeometry()->m_shape.m_radius;
-		ServerWObject* wo =0;
-		list<ServerWObject*> res;
-		list<ServerWObject*>::iterator it;
+		WorldObject* wo =0;
+		list<WorldObject*> res;
+		list<WorldObject*>::iterator it;
 
 		// ermitteln der Objekte mit denen bei der Bewegung kollidiert wird
 		getWorld()->getSWObjectsInShape(&s,getGridLocation()->m_region,&res,Geometry::LAYER_AIR,CREATURE | FIXED,this);
@@ -2031,8 +2031,8 @@
 		s.m_radius =8;
 		s.m_coordinate_x = x;
 		s.m_coordinate_y = y;
-		list<ServerWObject*> res;
-		list<ServerWObject*>::iterator i;
+		list<WorldObject*> res;
+		list<WorldObject*>::iterator i;
 		res.clear();
 
 		// Suchen aller Objekte im Kreis
@@ -2093,7 +2093,7 @@
 	}
 }
 
-void Creature::calcWalkDir(float goalx,float goaly,ServerWObject* goal)
+void Creature::calcWalkDir(float goalx,float goaly,WorldObject* goal)
 {
 	// eigene Position
 	float x = getGeometry()->m_shape.m_coordinate_x;
@@ -2386,9 +2386,9 @@
 			d.m_multiplier[Damage::FIRE]=1;
 			d.m_attacker_fraction = getTypeInfo()->m_fraction;
 	
-			list<ServerWObject*> res;
+			list<WorldObject*> res;
 			res.clear();
-			list<ServerWObject*>::iterator it;
+			list<WorldObject*>::iterator it;
 	
 			// Kreis um eigenen Mittelpunkt mit Radius eigener Radius plus 1
 			Shape s;
@@ -2560,7 +2560,7 @@
 	{
 		// Es existiert bislang kein Handel
 		DEBUG5("Handelsinitialisierung starten");
-		ServerWObject* wo = getWorld()->getWorldObject(id);
+		WorldObject* wo = getWorld()->getWorldObject(id);
 		// Wenn das Ziel nicht existiert Aktion beenden
 		if (wo ==0 || wo->getObjectType().getObjectType()==OBJECTTYPE_FIXED_OBJECT)
 		{
--- a/src/core/creature.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/creature.h	Sat Oct 04 11:14:54 2008 +0000
@@ -33,7 +33,7 @@
 #include <list>
 #include <algorithm>
 #include "world.h"
-#include "serverwobject.h"
+#include "worldobject.h"
 #include "action.h"
 #include "command.h"
 #include "damage.h"
@@ -57,7 +57,7 @@
  * \fn class Creature
  * \brief Klasse fuer Lebewesen
  */
-class Creature : public ServerWObject 
+class Creature : public WorldObject 
  {
 //Public stuff
 public:
@@ -276,13 +276,13 @@
 	
 		
 	/**
-	 * \fn void calcWalkDir(float goalx,goaly,ServerWObject* goal)
+	 * \fn void calcWalkDir(float goalx,goaly,WorldObject* goal)
 	 * \brief Sucht den Weg zu einem Punkt und setzt die Bewegungsgeschwindigkeit entspechend
 	 * \param goalx x-Koordinate des Zieles
 	 * \param goaly y-Koordinate des Zieles
 	 * \param goal Zeiger auf das Zielobject
 	 */
-	void calcWalkDir(float goalx,float goaly,ServerWObject* goal);
+	void calcWalkDir(float goalx,float goaly,WorldObject* goal);
 	
 	/**
 	 * \fn void toString(CharConv* cv)
@@ -407,7 +407,7 @@
 	 * \param goaly x-Koordinate des Zieles
 	 * \param goal Zeiger auf der Zielobjekt, ist NULL wenn kein Zielobjekt existiert
 	 */
-	virtual void performActionCritPart(float goalx, float goaly, ServerWObject* goal);
+	virtual void performActionCritPart(float goalx, float goaly, WorldObject* goal);
 	
 	/**
 	 * \fn virtual void die()
--- a/src/core/damage.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/damage.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -152,7 +152,7 @@
 
 std::string Damage::getDamageString(Damage::Usage usage)
 {
-	ostringstream out_stream;
+	std::ostringstream out_stream;
 	out_stream.str("");
 	bool first = true;
 	int i;
--- a/src/core/damage.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/damage.h	Sat Oct 04 11:14:54 2008 +0000
@@ -5,7 +5,6 @@
 #include "worldobject.h"
 #include <stdlib.h>
 #include <string>
-#include <string.h>
 
 #define NR_STATUS_MODS 8
 
--- a/src/core/dmgprojectile.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/dmgprojectile.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -111,9 +111,9 @@
 	// true, wenn Timer die Grenze erreicht
 	bool lim = false;
 	// Liste der getroffenen Objekte
-	list<ServerWObject*> hitobj;
-	list<ServerWObject*>::iterator i;
-	ServerWObject* hit;
+	list<WorldObject*> hitobj;
+	list<WorldObject*>::iterator i;
+	WorldObject* hit;
 
 	// aktuelle Position
 	float x;
@@ -303,9 +303,9 @@
 
 void DmgProjectile::handleFlying(float dtime)
 {
-	list<ServerWObject*> hitobj;
-	list<ServerWObject*>::iterator i;
-	ServerWObject* hit;
+	list<WorldObject*> hitobj;
+	list<WorldObject*>::iterator i;
+	WorldObject* hit;
 	float x;
 	float y;
 	float xnew, ynew;
@@ -675,9 +675,9 @@
 
 void DmgProjectile::handleGrowing(float dtime)
 {
-	list<ServerWObject*> hitobj;
-	list<ServerWObject*>::iterator i;
-	ServerWObject* hit;
+	list<WorldObject*> hitobj;
+	list<WorldObject*>::iterator i;
+	WorldObject* hit;
 	float x;
 	float y;
 	float xnew, ynew;
@@ -770,9 +770,9 @@
 void DmgProjectile::handleStable(float dtime)
 {
 
-	list<ServerWObject*> hitobj;
-	list<ServerWObject*>::iterator i;
-	ServerWObject* hit;
+	list<WorldObject*> hitobj;
+	list<WorldObject*>::iterator i;
+	WorldObject* hit;
 
 	// aktuelle Position
 	float x;
--- a/src/core/dmgprojectile.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/dmgprojectile.h	Sat Oct 04 11:14:54 2008 +0000
@@ -10,7 +10,7 @@
 #include "event.h"
 
 class World;
-class ServerWObject;
+class WorldObject;
 
 /**
  * \class DmgProjectile
@@ -265,7 +265,7 @@
 };
 
 
-#include "serverwobject.h"
+#include "worldobject.h"
 #include "world.h"
 
 
--- a/src/core/document.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/document.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -503,7 +503,7 @@
 int Document::getObjectAt(float x,float y)
 {
 	// der lokale Spieler
-	ServerWObject* pl = m_world->getLocalPlayer();
+	WorldObject* pl = m_world->getLocalPlayer();
 	if (pl==0)
 		return 0;
 
@@ -512,7 +512,7 @@
 	if (reg ==0)
 		return 0;
 
-	ServerWObject* obj = reg->getSWObjectAt(x,y);
+	WorldObject* obj = reg->getSWObjectAt(x,y);
 	if (obj != 0)
 		return obj->getId();
 
--- a/src/core/fixedobject.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/fixedobject.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -20,7 +20,7 @@
 #include "fixedobject.h"
 
 //Constructors/Destructors
-FixedObject::FixedObject(World* world, int id) : ServerWObject(world, id)
+FixedObject::FixedObject(World* world, int id) : WorldObject(world, id)
 {
 	bool tmp=FixedObject::init();
 	if (!tmp)
@@ -31,7 +31,7 @@
 
 
 
-FixedObject::FixedObject(World* world, int id,  TypeInfo::ObjectSubtype object_subtype)  : ServerWObject(world, id)
+FixedObject::FixedObject(World* world, int id,  TypeInfo::ObjectSubtype object_subtype)  : WorldObject(world, id)
 {
 	getTypeInfo()->m_subtype = object_subtype;
 	bool tmp=FixedObject::init();
--- a/src/core/fixedobject.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/fixedobject.h	Sat Oct 04 11:14:54 2008 +0000
@@ -31,13 +31,13 @@
 #define FIXEDOBJECT_H
 #include <string>
 
-#include "serverwobject.h"
+#include "worldobject.h"
 
 /**
  * \class FixedObject
  * \brief Dieses Objekt stellt ein fixes Objekt dar. Es kann seine Position in der Welt nicht ver&auml;ndern.
  */
-class FixedObject : public ServerWObject {
+class FixedObject : public WorldObject {
 /**
  * Public stuff
  */
--- a/src/core/gridunit.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/gridunit.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -10,13 +10,13 @@
 
 }
 
-bool Gridunit::insertObject(ServerWObject* object)
+bool Gridunit::insertObject(WorldObject* object)
 {
 	// Ebene in der das Objekt eingeordnet wird
 	WorldObject::Group g = getObjectGroup(object);
 
 	// Zeiger auf Array in das eingefuegt wird
-	ServerWObject ** arr = getObjects(g);
+	WorldObject ** arr = getObjects(g);
 	
 	// Zeiger auf Anzahl der Objekte in der Ebene
 	short &  np = getObjectsNr(g);
@@ -94,14 +94,14 @@
 	*/
 }
 
-bool  Gridunit::moveObject(ServerWObject* object,WorldObject::Group group )
+bool  Gridunit::moveObject(WorldObject* object,WorldObject::Group group )
 {
 	bool ret = deleteObject(object);
 	if (ret==false)
 		return false;
 	
 	// Zeiger auf Array in das eingefuegt wird
-	ServerWObject ** arr = getObjects(group);
+	WorldObject ** arr = getObjects(group);
 	
 	// Zeiger auf Anzahl der Objekte in der Ebene
 	short &  np = getObjectsNr(group);
@@ -120,13 +120,13 @@
 	}
 }
 
-bool Gridunit::deleteObject(ServerWObject* object, short index)
+bool Gridunit::deleteObject(WorldObject* object, short index)
 {
 	// Ebene aus der geloescht werden soll
 	WorldObject::Group g = getObjectGroup(object);
 	
 	// Zeiger auf Array aus dem geloescht wird
-	ServerWObject ** arr = getObjects(g);
+	WorldObject ** arr = getObjects(g);
 	
 	// Zeiger auf Anzahl der Objekte in der Ebene
 	short &  np = getObjectsNr(g);
--- a/src/core/gridunit.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/gridunit.h	Sat Oct 04 11:14:54 2008 +0000
@@ -1,7 +1,7 @@
 #ifndef GRIDUNIT_H
 #define GRIDUNIT_H
 
-#include "serverwobject.h"
+#include "worldobject.h"
 #include <list>
 #include <map>
 #include "dropitem.h"
@@ -23,7 +23,7 @@
 	 * \var m_dead[20]
 	 * \brief Liste der toten Spieler auf dem Feld
 	 */
-	ServerWObject* m_dead[MAX_GRIDUNIT_OBJ];
+	WorldObject* m_dead[MAX_GRIDUNIT_OBJ];
 
 	/**
 	 * \var m_nr_dead
@@ -36,7 +36,7 @@
 	 * \brief Liste der festen Objekte auf dem Feld
 	 */
 
-	ServerWObject* m_fixed[MAX_GRIDUNIT_OBJ];
+	WorldObject* m_fixed[MAX_GRIDUNIT_OBJ];
 
 	/**
 	 * \var m_nr_fixed
@@ -48,7 +48,7 @@
 	 * \var m_creature
 	 * \brief Liste der Kreaturen auf dem Feld
 	 */
-	ServerWObject* m_creature[MAX_GRIDUNIT_OBJ];
+	WorldObject* m_creature[MAX_GRIDUNIT_OBJ];
 
 	/**
 	 * \var m_nr_creature
@@ -104,7 +104,7 @@
 		 * \param layer Schicht, deren Objekte ausgegeben werden sollen. Muss eines der folgenden sein: LAYER_FIXED, LAYER_CREATURE,LAYER_DEAD
 		 * \return Array mit Zeigern auf die Objekte
 		 */
-		ServerWObject** getObjects(WorldObject::Group group)
+		WorldObject** getObjects(WorldObject::Group group)
 		{
 			if (group == WorldObject::CREATURE) return m_creature;
 			else if (group == WorldObject::FIXED) return m_fixed;
@@ -113,29 +113,29 @@
 		}
 
 		/**
-		 * \fn bool insertObject(ServerWObject* object)
+		 * \fn bool insertObject(WorldObject* object)
 		 * \brief Fuegt das angegebenen Objekt in das Feld ein
 		 * \param object einzufuegendes Objekt
 		 * return gibt an, ob die Operation erfolgreich war
 		 */
-		bool insertObject(ServerWObject* object);
+		bool insertObject(WorldObject* object);
 
 		/**
-		 * \fn deleteObject(ServerWObject* object, short index=-1)
+		 * \fn deleteObject(WorldObject* object, short index=-1)
 		 * \brief Loescht das angegebene Objekt aus dem Feld
 		 * \param object zu loeschendes Objekt
 		 * \param index Index des Objektes im Array. Angabe beschleunigt die Funktion, ist aber optional
 		 * \return gibt an, ob die Operation erfolgreich war
 		 */
-		bool deleteObject(ServerWObject* object, short index=-1);
+		bool deleteObject(WorldObject* object, short index=-1);
 
 		/**
-		 * \fn bool moveObject(ServerWObject* object,WorldObject::Group group )
+		 * \fn bool moveObject(WorldObject* object,WorldObject::Group group )
 		 * \brief verschiebt das Objekt in die angegebene Gruppe
 		 * \param object das zu verschiebende Objekt
 		 * \param group Gruppe in die das Objekt verschoben wird
 		 */
-		bool moveObject(ServerWObject* object,WorldObject::Group group );
+		bool moveObject(WorldObject* object,WorldObject::Group group );
 		
 
 };
--- a/src/core/monster.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/monster.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -50,8 +50,8 @@
 	getGeometry()->m_layer = data.m_layer;
 	getGeometry()->m_angle =0;
 
-	m_ai.m_goals = new list<pair<ServerWObject*,float> >;
-	m_ai.m_visible_goals = new list<pair<ServerWObject*,float> >;
+	m_ai.m_goals = new list<pair<WorldObject*,float> >;
+	m_ai.m_visible_goals = new list<pair<WorldObject*,float> >;
 	m_ai.m_state = Ai::INACTIVE;
 	calcBaseAttrMod();
 }
@@ -71,8 +71,8 @@
 bool Monster::init()
 {
 	//eigene Initialisierung
-	m_ai.m_goals = new list<pair<ServerWObject*,float> >;
-	m_ai.m_visible_goals = new list<pair<ServerWObject*,float> >;
+	m_ai.m_goals = new list<pair<WorldObject*,float> >;
+	m_ai.m_visible_goals = new list<pair<WorldObject*,float> >;
 
 	// Basistyp setzen
 	getTypeInfo()->m_type = TypeInfo::TYPE_MONSTER;
@@ -122,14 +122,14 @@
 	// moegliche Ziele ermitteln
 
 	// Liste der Spieler
-	map<int,ServerWObject*>* players = getRegion()->getPlayers();
-	list<ServerWObject*> ret;
+	map<int,WorldObject*>* players = getRegion()->getPlayers();
+	list<WorldObject*> ret;
 
-	ServerWObject* pl;
+	WorldObject* pl;
 
 	// Entfernungen und Sichtbarkeit der Ziele ermitteln
 	float dist;
-	for (map<int,ServerWObject*>::iterator it = players->begin(); it!=players->end(); ++it)
+	for (map<int,WorldObject*>::iterator it = players->begin(); it!=players->end(); ++it)
 	{
 		pl = it->second;
 		dist = World::getDistance(getGeometry()->m_shape, pl->getGeometry()->m_shape);
@@ -234,8 +234,8 @@
 
 void Monster::evalCommand(Action::ActionType act)
 {
-	list<pair<ServerWObject*,float> >::iterator it;
-	list<pair<ServerWObject*,float> >* goal_list;
+	list<pair<WorldObject*,float> >::iterator it;
+	list<pair<WorldObject*,float> >* goal_list;
 	Creature* cgoal=0;
 
 	float dist;
@@ -352,7 +352,7 @@
 		//schauen ob dieser noch lebt, wenn ja gainExperience bei ihm aufrufen mit der _experience dieser Instanz
 	
 		// Object per ID von der World holen
-		ServerWObject* object;
+		WorldObject* object;
 		object = getWorld()->getSWObject(id,getGridLocation()->m_region);
 	
 		if (object!=0)
@@ -368,7 +368,7 @@
 	
 				pl->gainExperience((int) ceil(pow(1.5,min(pl->getBaseAttrMod()->m_level,getBaseAttr()->m_level)-1)*2));
 	
-				list<ServerWObject*> ret;
+				list<WorldObject*> ret;
 				Shape s;
 				s.m_type = Shape::CIRCLE;
 				s.m_radius = 20;
@@ -377,7 +377,7 @@
 	
 				getWorld()->getSWObjectsInShape(&s, getGridLocation()->m_region, &ret, Geometry::LAYER_AIR, CREATURE);
 	
-				list<ServerWObject*>::iterator i;
+				list<WorldObject*>::iterator i;
 				
 				for (i=ret.begin();i!=ret.end();i++)
 				{
--- a/src/core/monster.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/monster.h	Sat Oct 04 11:14:54 2008 +0000
@@ -59,16 +59,16 @@
 	float m_sight_range;
 	
 	/**
-	 * \var list<ServerWObject*>* m_goals
+	 * \var list<WorldObject*>* m_goals
 	 * \brief Liste der moeglichen Ziele
 	 */
-	list<pair<ServerWObject*,float> >* m_goals;
+	list<pair<WorldObject*,float> >* m_goals;
 	
 	/**
-	 * \var list<ServerWObject*>* m_visible_goals
+	 * \var list<WorldObject*>* m_visible_goals
 	 * \brief Liste der sichtbaren Ziele
 	 */
-	list< pair<ServerWObject*,float> >* m_visible_goals;
+	list< pair<WorldObject*,float> >* m_visible_goals;
 	
 	/**
 	 * \var float m_command_value
--- a/src/core/objectfactory.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/objectfactory.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -220,10 +220,10 @@
 	registerMonster("gob_dog",mdata);
 }
 
-ServerWObject* ObjectFactory::createObject(WorldObject::TypeInfo::ObjectType type, WorldObject::TypeInfo::ObjectSubtype subtype, int id)
+WorldObject* ObjectFactory::createObject(WorldObject::TypeInfo::ObjectType type, WorldObject::TypeInfo::ObjectSubtype subtype, int id)
 {
 	// Zeiger auf erzeugtes Objekt
-	ServerWObject* ret=0;
+	WorldObject* ret=0;
 
 	// ID des Objektes
 	if (id ==0)
--- a/src/core/objectfactory.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/objectfactory.h	Sat Oct 04 11:14:54 2008 +0000
@@ -16,20 +16,20 @@
 
 /**
  * \class ObjectFactory
- * \brief Erzeugt Objekte vom Typ ServerWObject
+ * \brief Erzeugt Objekte vom Typ WorldObject
  */
 class ObjectFactory
 {
 	public:
 		
 	/**
-	 * \fn static ServerWObject* createObject(WorldObject::TypeInfo::ObjectType type, WorldObject::TypeInfo::ObjectSubtype subtype, int id=0)
+	 * \fn static WorldObject* createObject(WorldObject::TypeInfo::ObjectType type, WorldObject::TypeInfo::ObjectSubtype subtype, int id=0)
 	 * \brief Erzeugt ein Objekt des angefordertens Typs/Subtyps
 	 * \param type Typ des Objektes
 	 * \param subtype Subtyp des Objektes
 	 * \param id ID des Objektes. Wenn id==0 wird eine neue ID generiert
 	 */
-		static ServerWObject* createObject(WorldObject::TypeInfo::ObjectType type, WorldObject::TypeInfo::ObjectSubtype subtype, int id=0);
+	static WorldObject* createObject(WorldObject::TypeInfo::ObjectType type, WorldObject::TypeInfo::ObjectSubtype subtype, int id=0);
 	
 	/**
 	 * \var static World* m_world
--- a/src/core/player.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/player.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -99,7 +99,7 @@
 	int dist;
 	bool meleedir = false;
 	Party* p, *p2;
-	ServerWObject* wo;
+	WorldObject* wo;
 	WorldObject::Relation rel;
 
 	// Actionen auf self brauchen kein Zielobjekt
@@ -761,7 +761,7 @@
 	DEBUG5("Kommando (%f %f) button: %i id: %i action: %i",command->m_coordinate_x,command->m_coordinate_y,command->m_button,command->m_id, command->m_action);
 
 	Party* p, *p2;
-	ServerWObject* wo;
+	WorldObject* wo;
 
 	Item* si;
 	DropSlot ds;
@@ -1292,7 +1292,7 @@
 	return true;
 }
 
-void Player::performActionCritPart(float goalx, float goaly, ServerWObject* goal)
+void Player::performActionCritPart(float goalx, float goaly, WorldObject* goal)
 {
 	if (getAction()->m_type == Action::TAKE_ITEM)
 	{
@@ -1345,7 +1345,7 @@
 	CharConv cv;
 	//DEBUG5("packed bytes: %i bytes",cv.getBitStream()->GetNumberOfBitsUsed());
 	
-	list<ServerWObject*> wobjs;
+	list<WorldObject*> wobjs;
 	wobjs.clear();
 
 	// Ausschnitt der Welt, der fuer den Spieler sichtbar ist
@@ -1365,7 +1365,7 @@
 	
 	
 	// Objekte einpacken
-	for( list<ServerWObject*>::iterator i=wobjs.begin() ; i!=wobjs.end() ; )
+	for( list<WorldObject*>::iterator i=wobjs.begin() ; i!=wobjs.end() ; )
 	{
 		// Objekt in das Paket packen
 		obj = (WorldObject*) (*i);
@@ -1411,7 +1411,7 @@
 
 
 	// Objekte einpacken
-	for( list<ServerWObject*>::iterator i=wobjs.begin() ; i!=wobjs.end() ; ++i)
+	for( list<WorldObject*>::iterator i=wobjs.begin() ; i!=wobjs.end() ; ++i)
 	{
 		// Objekt in das Paket packen
 		obj = (WorldObject*) (*i);
--- a/src/core/player.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/player.h	Sat Oct 04 11:14:54 2008 +0000
@@ -415,7 +415,7 @@
  * \param goaly x-Koordinate des Zieles
  * \param goal Zeiger auf der Zielobjekt, ist NULL wenn kein Zielobjekt existiert
 	 */
-	virtual void performActionCritPart(float goalx, float goaly, ServerWObject* goal);
+	virtual void performActionCritPart(float goalx, float goaly, WorldObject* goal);
 	
 	/**
 	 * \var std::string m_name
--- a/src/core/region.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/region.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -12,11 +12,11 @@
 	m_tiles = new Matrix2d<char>(dimx*2,dimy*2);
 	m_tiles->clear();
 	
-	// Binärbaum fuer ServerWObjects anlegen
-	m_objects = new map<int,ServerWObject*>;
-	m_static_objects = new map<int,ServerWObject*>;
+	// Binärbaum fuer WorldObjects anlegen
+	m_objects = new map<int,WorldObject*>;
+	m_static_objects = new map<int,WorldObject*>;
 	
-	m_players = new map<int,ServerWObject*>;
+	m_players = new map<int,WorldObject*>;
 	
 	// Baum fuer Projektile anlegen
 	m_projectiles = new map<int,DmgProjectile*>;
@@ -36,7 +36,7 @@
 
 Region::~Region()
 {
-	map<int,ServerWObject*>::iterator i;
+	map<int,WorldObject*>::iterator i;
 	for (i=m_objects->begin(); i!=m_objects->end();i++)
 	{
 		delete i->second;
@@ -74,9 +74,9 @@
 	
 }
 
-ServerWObject* Region::getSWObject ( int id)
+WorldObject* Region::getSWObject ( int id)
 {
-	map<int,ServerWObject*>::iterator iter;
+	map<int,WorldObject*>::iterator iter;
 	
 	// Objekt im Binärbaum suchen
 	iter = m_objects->find(id);
@@ -133,7 +133,7 @@
 	Shape s;
 	memcpy(&s,shape,sizeof(Shape));
 	
-	list<ServerWObject*> res;
+	list<WorldObject*> res;
 	res.clear();
 	
 	// eine Stelle suchen an der das Objekt passt
@@ -177,7 +177,7 @@
 		}
 		else
 		{
-			ServerWObject* obs = *(res.begin());
+			WorldObject* obs = *(res.begin());
 			DEBUG5("obstacle is %s at %f %f",obs->getNameId().c_str(), obs->getGeometry()->m_shape.m_coordinate_x,obs->getGeometry()->m_shape.m_coordinate_y);
 			// Stelle ist besetzt
 			tfields.insert(i);
@@ -228,10 +228,10 @@
 	
 }
 
-bool  Region::addObjectsInShapeFromGridunit(Shape* shape, Gridunit* gu, list<ServerWObject*>* result, short layer, short group,ServerWObject* omit, bool empty_test )
+bool  Region::addObjectsInShapeFromGridunit(Shape* shape, Gridunit* gu, list<WorldObject*>* result, short layer, short group,WorldObject* omit, bool empty_test )
 {
-	ServerWObject* wo=0;
-	ServerWObject** arr=0;
+	WorldObject* wo=0;
+	WorldObject** arr=0;
 	WorldObject::Geometry* wob=0;
 	Shape* s=0;
 	arr = gu->getObjects((WorldObject::Group) group);
@@ -267,10 +267,10 @@
 	return true;
 }
 
-bool Region::addObjectsOnLineFromGridunit(float xstart, float ystart, float xend,float yend, Gridunit* gu, list<ServerWObject*>* result, short layer, short group ,ServerWObject* omit, bool empty_test )
+bool Region::addObjectsOnLineFromGridunit(float xstart, float ystart, float xend,float yend, Gridunit* gu, list<WorldObject*>* result, short layer, short group ,WorldObject* omit, bool empty_test )
 {
-	ServerWObject* wo=0;
-	ServerWObject** arr=0;
+	WorldObject* wo=0;
+	WorldObject** arr=0;
 	WorldObject::Geometry* wob=0;
 	Shape* s=0;
 	arr = gu->getObjects((WorldObject::Group) group);
@@ -307,7 +307,7 @@
 }
 
 
-bool Region::getSWObjectsInShape( Shape* shape,  list<ServerWObject*>* result,short layer, short group, ServerWObject* omit, bool empty_test)
+bool Region::getSWObjectsInShape( Shape* shape,  list<WorldObject*>* result,short layer, short group, WorldObject* omit, bool empty_test)
 {
 	
 	DEBUG5("shape %f %f %f",shape->m_coordinate_x,shape->m_coordinate_y,shape->m_radius);
@@ -336,7 +336,7 @@
 		// TODO: Player umbenennen, einbauen
 		for (i=m_players->begin();i!=m_player->end();++i)
 		{
-		wo= (ServerWObject*) *i;
+		wo= (WorldObject*) *i;
 		s = &(wo->getGeometry()->m_shape);
 		if (World::intersect(shape,s ))
 		{
@@ -425,7 +425,7 @@
 }
 
 
-ServerWObject* Region::getSWObjectAt(float x_coordinate, float y_coordinate, short layer, short group)
+WorldObject* Region::getSWObjectAt(float x_coordinate, float y_coordinate, short layer, short group)
 {
 	Shape s;
 	s.m_type = Shape::CIRCLE;
@@ -433,7 +433,7 @@
 	s.m_coordinate_x=x_coordinate;
 	s.m_coordinate_y=y_coordinate;
 	
-	list<ServerWObject*> l;
+	list<WorldObject*> l;
 	l.clear();
 	getSWObjectsInShape ( &s, &l,layer,group );
 	if (l.empty())
@@ -448,11 +448,11 @@
 
 
 
-void Region::getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  list<ServerWObject*>* result,short layer, short group , ServerWObject* omit)
+void Region::getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  list<WorldObject*>* result,short layer, short group , WorldObject* omit)
 {
 	Gridunit* gu=0;
-	ServerWObject* wo=0;
-	ServerWObject** arr=0;
+	WorldObject* wo=0;
+	WorldObject** arr=0;
 	WorldObject::Geometry* wob=0;
 	Shape* s=0;
 	int k;
@@ -565,7 +565,7 @@
 	}
 }
 
-bool Region::insertSWObject (ServerWObject* object, float x, float y)
+bool Region::insertSWObject (WorldObject* object, float x, float y)
 {
 	bool result = true;
 	
@@ -654,7 +654,7 @@
 	return true;
 }
 
-bool  Region::deleteSWObject (ServerWObject* object)
+bool  Region::deleteSWObject (WorldObject* object)
 {
 	bool result = true;
 	 
@@ -694,7 +694,7 @@
 	return result;
 }
 
-bool Region::moveSWObject(ServerWObject* object, float x, float y)
+bool Region::moveSWObject(WorldObject* object, float x, float y)
 {
 	bool result = true;
 	// Wenn NULL Zeiger übergeben -> Fehler anzeigen
@@ -737,7 +737,7 @@
 }
 
 
-bool Region::changeObjectGroup(ServerWObject* object,WorldObject::Group group )
+bool Region::changeObjectGroup(WorldObject* object,WorldObject::Group group )
 {
 	bool result = true;
 	 
@@ -769,8 +769,8 @@
 	DEBUG5("\nUpdate aller WeltObjekte starten\n");
 	//DEBUG("m_players %p",m_players);
 	// Iterator zum durchmustern einer solchen Liste
-	map<int,ServerWObject*>::iterator iter;
-	ServerWObject* object;
+	map<int,WorldObject*>::iterator iter;
+	WorldObject* object;
 	WorldObject::Geometry* wob;
 	map<int,DmgProjectile*>::iterator it3;
 	
@@ -786,7 +786,7 @@
 		it3->second->clearEventMask();
 	}
 	
-	// Durchmustern aller ServerWObjects
+	// Durchmustern aller WorldObjects
 	for (iter =m_objects->begin(); iter!=m_objects->end(); )
 	{
 		object = iter->second;
@@ -919,7 +919,7 @@
 	cv->toBuffer<short>((short) m_static_objects->size());
 	
 	// statische Objekte in den Puffer eintragen
-	map<int,ServerWObject*>::iterator it;
+	map<int,WorldObject*>::iterator it;
 	for (it = m_static_objects->begin();it!=m_static_objects->end();++it)
 	{
 		(it->second)->toString(cv);
@@ -932,7 +932,7 @@
 	cv->toBuffer<short>((short) m_objects->size());
 	
 	// nicht statische Objekte in den Puffer eintragen
-	map<int,ServerWObject*>::iterator jt;
+	map<int,WorldObject*>::iterator jt;
 	for (jt = m_objects->begin();jt!=m_objects->end();++jt)
 	{
 		DEBUG5("write offset: %i",cv->getBitStream()->GetNumberOfBitsUsed());
@@ -966,14 +966,14 @@
 }
 
 
-void Region::createObjectFromString(CharConv* cv, map<int,ServerWObject*>* players)
+void Region::createObjectFromString(CharConv* cv, map<int,WorldObject*>* players)
 {
 	char type;
 	char subt[11];
 	subt[10] ='\0';
 	int id;
 	
-	ServerWObject* obj;
+	WorldObject* obj;
 	float x,y;
 	
 	
@@ -1065,7 +1065,7 @@
 }
 
 
-void Region::setRegionData(CharConv* cv,map<int,ServerWObject*>* players)
+void Region::setRegionData(CharConv* cv,map<int,WorldObject*>* players)
 {
 	// Groesse der Region wird schon vorher eingelesen
 	// Tiles eintragen
@@ -1080,7 +1080,7 @@
 	
 	
 	// alle bisherigen statischen Objekte entfernen
-	map<int,ServerWObject*>::iterator it;
+	map<int,WorldObject*>::iterator it;
 	for (it = m_static_objects->begin();it!=m_static_objects->end();it++)
 	{
 		it->second->destroy();
@@ -1091,7 +1091,7 @@
 	
 	// alle bisherigen nichtstatischen Objekte entfernen
 	// die SpielerObjekte bleiben erhalten, alle anderen werden geloescht
-	map<int,ServerWObject*>::iterator jt;
+	map<int,WorldObject*>::iterator jt;
 	for (jt = m_objects->begin();jt!=m_objects->end();jt++)
 	{
 		if (jt->second->getTypeInfo()->m_type != WorldObject::TypeInfo::TYPE_PLAYER)
@@ -1178,7 +1178,7 @@
 	s.m_extent_x = 0.5;
 	s.m_extent_y = 0.5;
 	
-	list<ServerWObject*> res;
+	list<WorldObject*> res;
 	
 	// eine Stelle suchen an der das Item fallen gelassen werden kann
 	while (!fields.empty())
--- a/src/core/region.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/region.h	Sat Oct 04 11:14:54 2008 +0000
@@ -2,10 +2,11 @@
 #define REGION_H
 
 #include "matrix2d.h"
-#include "serverwobject.h"
+#include "worldobject.h"
 #include "tiles.h"
 #include "dropitem.h"
 #include "event.h"
+#include "dmgprojectile.h"
 
 
 #include <string>
@@ -65,19 +66,19 @@
 		~Region();
 		
 		/**
-		 * \fn insertSWObject (ServerWObject* object, float x, float y)
-		 * \brief F&uuml;gt ServerWObject ein
+		 * \fn insertSWObject (WorldObject* object, float x, float y)
+		 * \brief F&uuml;gt WorldObject ein
 		 * \param object Zeiger auf das Objekt, welches eingef&uuml;gt werden soll
 		 * \return bool, der angibt, ob die Operation erfolgreich war
 		 * 
-		 * F&uuml;gt das ServerWObject in die internen Datenstrukturen ein. Wenn das Einf&uuml;gen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
+		 * F&uuml;gt das WorldObject in die internen Datenstrukturen ein. Wenn das Einf&uuml;gen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
 		 * Wenn ein NULL-Zeiger &uuml;bergeben wird, so wird false ausgegeben.
 		 */
-		bool  insertSWObject (ServerWObject* object, float x, float y);
+		bool  insertSWObject (WorldObject* object, float x, float y);
 		
 		/**
-		 * \fn bool getSWObjectsInShape( Shape* shape,  list<ServerWObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, ServerWObject* omit=0, bool empty_test = false );
-		 * \brief Sucht ServerWObjects innerhalb eines Gebietes
+		 * \fn bool getSWObjectsInShape( Shape* shape,  list<WorldObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, WorldObject* omit=0, bool empty_test = false );
+		 * \brief Sucht WorldObjects innerhalb eines Gebietes
 		 * \param shape Form des Gebietes
 		 * \param layer Ebene in der gesucht wird
 		 * \param result Liste, an die die gefundenen Objekte angehangen werden
@@ -90,7 +91,7 @@
 		 * Wenn f&uuml;r selector ein NULL-Zeiger &uuml;bergeben wird, so werden die Objekte nicht selektiert.
 		 * Wenn f&uuml;r result ein NULL-Zeiger &uuml;bergeben wird, oder ein anderer Fehler auftritt, so wird false zur&uuml;ckgegeben, sonst true.
  		 */
-		bool getSWObjectsInShape( Shape* shape,  list<ServerWObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, ServerWObject* omit=0, bool empty_test = false );
+		bool getSWObjectsInShape( Shape* shape,  list<WorldObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, WorldObject* omit=0, bool empty_test = false );
 		
 		/**
 		 * \fn bool getFreePlace(Shape* shape, short layer, float& x, float&y)
@@ -104,7 +105,7 @@
 		bool getFreePlace(Shape* shape, short layer, float& x, float&y);
 		
 		/**
-		 * \fn bool addObjectsInShapeFromGridunit(Shape* shape, Gridunit* gu, list<ServerWObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,ServerWObject* omit=0, bool empty_test = false )
+		 * \fn bool addObjectsInShapeFromGridunit(Shape* shape, Gridunit* gu, list<WorldObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,WorldObject* omit=0, bool empty_test = false )
 		 * \brief Fuegt alle Objekte aus der Gridunit, die sich mit dem Gebiet befinden zu der Liste hinzu
 		 * \param layer Ebene in der gesucht wird
 		 * \param result Liste, an die die gefundenen Objekte angehangen werden
@@ -113,10 +114,10 @@
 		 * \param group Gruppen die durchsucht werden sollen
 		 * \return bool, der angibt, ob die Operation erfolgreich war
 		 **/
-		bool addObjectsInShapeFromGridunit(Shape* shape, Gridunit* gu, list<ServerWObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,ServerWObject* omit=0, bool empty_test = false );
+		bool addObjectsInShapeFromGridunit(Shape* shape, Gridunit* gu, list<WorldObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,WorldObject* omit=0, bool empty_test = false );
 		
 		/**
-		 * \fn bool addObjectsOnLineFromGridunit(float xstart, float ystart, float xend,float yend, Gridunit* gu, list<ServerWObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,ServerWObject* omit=0, bool empty_test = false )
+		 * \fn bool addObjectsOnLineFromGridunit(float xstart, float ystart, float xend,float yend, Gridunit* gu, list<WorldObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,WorldObject* omit=0, bool empty_test = false )
 		 * \brief Fuegt alle Objekte aus der Gridunit, die sich auf der Linie befinden zu der Liste hinzu
 		 *  \param layer Ebene in der gesucht wird
 		 * \param result Liste, an die die gefundenen Objekte angehangen werden
@@ -125,36 +126,36 @@
 		 * \param group Gruppen die durchsucht werden sollen
 		 * \return bool, der angibt, ob die Operation erfolgreich war
 		 **/
-		bool addObjectsOnLineFromGridunit(float xstart, float ystart, float xend,float yend, Gridunit* gu, list<ServerWObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,ServerWObject* omit=0, bool empty_test = false );
+		bool addObjectsOnLineFromGridunit(float xstart, float ystart, float xend,float yend, Gridunit* gu, list<WorldObject*>* result, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL,WorldObject* omit=0, bool empty_test = false );
 		
 		/**
-		 * \fn bool changeObjectGroup(ServerWObject* object,WorldObject::Group group )
+		 * \fn bool changeObjectGroup(WorldObject* object,WorldObject::Group group )
 		 * \brief Veraendert die Gruppe des Objektes
 		 * \param object Objekt fuer das die Gruppe geaendert werden soll
 		 * \param group neue Gruppe des Objektes
 		 */
-		bool changeObjectGroup(ServerWObject* object,WorldObject::Group group );
+		bool changeObjectGroup(WorldObject* object,WorldObject::Group group );
 		
 		/**
-		 * \fn ServerWObject* getSWObject ( int id)
+		 * \fn WorldObject* getSWObject ( int id)
 		 * \brief Sucht Objekt anhand seiner ID heraus
 		 * \return Objekt, Nullzeiger wenn das Objekt nicht existiert
 		 */
-		ServerWObject* getSWObject ( int id);
+		WorldObject* getSWObject ( int id);
 		
 		/** 
-		 * \fn ServerWObject* getSWObjectAt(float x_coordinate, float y_coordinate, short layer=WorldObject::Geomety::LAYER_ALL, short group = WorldObject::GROUP_ALL);
-		 * \brief Sucht ServerWObject an den gegebenen Koordinaten
+		 * \fn WorldObject* getSWObjectAt(float x_coordinate, float y_coordinate, short layer=WorldObject::Geomety::LAYER_ALL, short group = WorldObject::GROUP_ALL);
+		 * \brief Sucht WorldObject an den gegebenen Koordinaten
 		 * \param x_coordinate x-Koordinate des Punktes
 		 * \param y_coordinate y-Koordinate des Punktes
 		 * \param layer Ebene in der gesucht wird
 		 * \param group Gruppen die durchsucht werden sollen
-		 * \return Zeiger auf das ServerWObject, wenn sich an dem Punkt eines befindet, sonst NULL
+		 * \return Zeiger auf das WorldObject, wenn sich an dem Punkt eines befindet, sonst NULL
 		 */
-		ServerWObject* getSWObjectAt(float x_coordinate, float y_coordinate, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL);
+		WorldObject* getSWObjectAt(float x_coordinate, float y_coordinate, short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL);
 		
 		/**
-		 * \fn void getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  list<ServerWObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, ServerWObject* omit=0 )
+		 * \fn void getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  list<WorldObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, WorldObject* omit=0 )
 		 * \brief Sucht alle Objekte die auf der angegebenen Linie liegen
 		 * \param xstart x-Koordinate Startpunkt
 		 * \param ystart y-Koordinate Startpunkt
@@ -165,7 +166,7 @@
 		 * \param group Gruppen die durchsucht werden sollen
 		 * \param omit Objekt, das ausgelassen wird
 		 */
-		void getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  list<ServerWObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, ServerWObject* omit=0 );
+		void getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  list<WorldObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, WorldObject* omit=0 );
 		
 		/**
 		 * \fn void getProjectilesOnScreen(float center_x,float center_y, list<DmgProjectile*>* result)
@@ -192,33 +193,33 @@
 		DmgProjectile* getProjectile(int id);
 		
 		/**
-		 * \fn deleteServerWObject(ServerWObject* object)
-		 * \brief L&ouml;scht ServerWObject
+		 * \fn deleteWorldObject(WorldObject* object)
+		 * \brief L&ouml;scht WorldObject
 		 * \param object Zeiger auf das Objekt, welches gel&ouml;scht werden soll
 		 * \return bool, der angibt, ob die Operation erfolgreich war
 		 * 
-		 * L&ouml;scht das ServerWObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gel&ouml;scht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das L&ouml;schen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
+		 * L&ouml;scht das WorldObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gel&ouml;scht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das L&ouml;schen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
 		 * Wenn ein NULL-Zeiger &uuml;bergeben wird, so wird false ausgegeben.
 		 */
-		bool  deleteSWObject (ServerWObject* object);
+		bool  deleteSWObject (WorldObject* object);
 		
 		 /**
-		 * \fn moveServerWObject(ServerWObject* object, float x, float y)
-		 * \brief verschiebt ein ServerWObject an den Punkt (x,y)
+		 * \fn moveWorldObject(WorldObject* object, float x, float y)
+		 * \brief verschiebt ein WorldObject an den Punkt (x,y)
 		 * \param object Zeiger auf das Objekt, welches verschoben werden soll
 		 * \param x x-Koordinate des Zielpunktes, zu dem das Objekt verschoben werden soll
 		 * \param y y-Koordinate des Zielpunktes, zu dem das Objekt verschoben werden soll
 		 * \return bool, welcher angibt, ob das Verschieben erfolgreich war
 		  */
-		bool moveSWObject(ServerWObject* object, float x, float y);
+		bool moveSWObject(WorldObject* object, float x, float y);
 		
 		/**
-		 * \fn void createObjectFromString(CharConv* cv, map<int,ServerWObject*>* players)
+		 * \fn void createObjectFromString(CharConv* cv, map<int,WorldObject*>* players)
 		 * \brief liest die Daten zu einem Objekt aus dem Bitstream und erzeugt es
 		 * \param cv Bitstream aus dem die Daten gelesen werden
 		 * \param players Spielerdaten (Spieler werden nicht neu erzeugt sondern nur in die Region verschoben)
 		 */
-		void createObjectFromString(CharConv* cv, map<int,ServerWObject*>* players);
+		void createObjectFromString(CharConv* cv, map<int,WorldObject*>* players);
 		
 		/**
 		 * \fn void createProjectileFromString(CharConv* cv)
@@ -293,7 +294,7 @@
 		 * \fn void setRegionData(CharConv* cv)
 		 * \brief Liest die Objekte, Projektile, Items und Tiles aus einem String ein
 		 */
-		void setRegionData(CharConv* cv, map<int,ServerWObject*>* players);
+		void setRegionData(CharConv* cv, map<int,WorldObject*>* players);
 		
 		/**
 		 * \fn  setTile(Tile tile,short x, short y)
@@ -305,10 +306,10 @@
 		void setTile(Tile tile,short x, short y);
 		
 		/**
-		 * \fn map<int,ServerWObject*>* getPlayers()
+		 * \fn map<int,WorldObject*>* getPlayers()
 		 * \brief Gibt alle Spieler in der Region aus
 		 */
-		map<int,ServerWObject*>* getPlayers()
+		map<int,WorldObject*>* getPlayers()
 		{
 			return m_players;
 		}
@@ -383,7 +384,7 @@
 	 * \var m_players
 	 * Liste der Spieler in der Region
 	 */
-	map<int,ServerWObject*>* m_players;
+	map<int,WorldObject*>* m_players;
 	
 	/**
 	 * \var map<int, DmgProjectile>* m_projectiles
@@ -392,16 +393,16 @@
 	map<int,DmgProjectile*>* m_projectiles;
 	
 	/**
-	 * \var map<int,ServerWObject*>* m_object_bintree
+	 * \var map<int,WorldObject*>* m_object_bintree
 	 * \brief organisiert alle nicht statischen Objekte in einem Bin&auml;rbaum
 	 */
-	map<int,ServerWObject*>* m_objects;
+	map<int,WorldObject*>* m_objects;
 	
 	/**
-	 * \var map<int,ServerWObject*>* m_object_bintree
+	 * \var map<int,WorldObject*>* m_object_bintree
 	 * \brief organisiert statische Objekte in einem Bin&auml;rbaum
 	 */
-	map<int,ServerWObject*>* m_static_objects;
+	map<int,WorldObject*>* m_static_objects;
 	
 	/**
 	 * \var map<int,DropItem*>* m_drop_items
--- a/src/core/spawnpoint.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/spawnpoint.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -1,6 +1,6 @@
 #include "spawnpoint.h"
 
-Spawnpoint::Spawnpoint(World* world, int id) : ServerWObject(world, id)
+Spawnpoint::Spawnpoint(World* world, int id) : WorldObject(world, id)
 {
 	bool tmp=Spawnpoint::init();
 	
@@ -37,7 +37,7 @@
 {
 	m_time -= time;
 	int i;
-	ServerWObject* wo;
+	WorldObject* wo;
 	float x,y;
 	bool ret;
 	if (m_time <= 0)
--- a/src/core/spawnpoint.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/spawnpoint.h	Sat Oct 04 11:14:54 2008 +0000
@@ -2,7 +2,7 @@
 #define SPAWNPOINT_H
 #include <string>
 
-#include "serverwobject.h"
+#include "worldobject.h"
 #include "random.h"
 #include "objectfactory.h"
 #include <list>
@@ -11,7 +11,7 @@
  * \class Spawnpoint
  * \brief Dieses Objekt stellt einen Ort dar, an dem Monster die Welt betreten
  */
-class Spawnpoint : public ServerWObject {
+class Spawnpoint : public WorldObject {
 /**
 	 * Public stuff
  */
--- a/src/core/world.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/world.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -33,8 +33,8 @@
 	
 	// diverse Initialisierungen
 	
-	m_player_slots = new map<int,ServerWObject*>;
-	m_players = new map<int,ServerWObject*>;;
+	m_player_slots = new map<int,WorldObject*>;
+	m_players = new map<int,WorldObject*>;;
 	
 	// Baum fuer die Handelsvorgaenge anlegen	
 	m_trades = new map<int, Trade* >;
@@ -113,7 +113,7 @@
 
 
 		// Objekte anlegen
-		ServerWObject* wo=0,*wo2=0;
+		WorldObject* wo=0,*wo2=0;
 		WorldObject::Geometry* wob=0;
 		Shape* sp=0;
 
@@ -342,7 +342,7 @@
 	
 }
 
-WorldObject::Relation World::getRelation(WorldObject::TypeInfo::Fraction frac, ServerWObject* wo)
+WorldObject::Relation World::getRelation(WorldObject::TypeInfo::Fraction frac, WorldObject* wo)
 {
 	WorldObject::TypeInfo::Fraction f = wo->getTypeInfo()->m_fraction;
 	
@@ -487,7 +487,7 @@
 
 
 
-ServerWObject* World::getSWObject ( int id,short rid) 
+WorldObject* World::getSWObject ( int id,short rid) 
 {
 	return m_regions[rid]->getSWObject(id);
 }
@@ -542,7 +542,7 @@
 }
 
 
-bool World:: getSWObjectsInShape( Shape* shape, short region, list<ServerWObject*>* result,short layer, short group, ServerWObject* omit )
+bool World:: getSWObjectsInShape( Shape* shape, short region, list<WorldObject*>* result,short layer, short group, WorldObject* omit )
 {
 
 	 
@@ -561,7 +561,7 @@
 }
 
 
-ServerWObject* World::getSWObjectAt(float x_coordinate, float y_coordinate,  short region,short layer, short group )
+WorldObject* World::getSWObjectAt(float x_coordinate, float y_coordinate,  short region,short layer, short group )
 {
 	// Region ermitteln, wenn gleich 0, Fehler ausgeben
 	Region* r = m_regions[region];
@@ -574,7 +574,7 @@
 	return r->getSWObjectAt(x_coordinate,y_coordinate,layer,group);
 }
 
-void World::getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  short region, list<ServerWObject*>* result,short layer, short group, ServerWObject* omit)
+void World::getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  short region, list<WorldObject*>* result,short layer, short group, WorldObject* omit)
 {
 	// Region ermitteln, wenn gleich 0 beenden
 	Region* r = m_regions[region];
@@ -696,17 +696,17 @@
 	queue<int>* quy = new queue<int>;
 	
 	// Liste für Objekte die im Weg sind
-	list<ServerWObject*>* ret = new  list<ServerWObject*>;
+	list<WorldObject*>* ret = new  list<WorldObject*>;
 	
 
 	// Selektor für fixe Objekte
-	ServerWObjectSelector* fixsel = new ServerWObjectSelector;
+	WorldObjectSelector* fixsel = new WorldObjectSelector;
 	fixsel->getObjectType().setObjectType(OBJECTTYPE_FIXED_OBJECT);
 	fixsel->setSelectObjectType(true);
 	
 	
 	// nach Objekten suchen die im Weg sind
-	getServerWObjectsInRect(x+px-0.9999,y+py-0.9999,x+px+0.9999,y+py+0.99990,0, ret);
+	getWorldObjectsInRect(x+px-0.9999,y+py-0.9999,x+px+0.9999,y+py+0.99990,0, ret);
 	
 	qux->push(px);
 	quy->push(py);	
@@ -721,7 +721,7 @@
 		quy->pop();
 		
 		// nach fixen Objekten suchen die im Weg sind
-		getServerWObjectsInRect(x+px-0.9999,y+py-0.9999,x+px+0.9999,y+py+0.99990,fixsel, ret);
+		getWorldObjectsInRect(x+px-0.9999,y+py-0.9999,x+px+0.9999,y+py+0.99990,fixsel, ret);
 		
 		DEBUG5("untersuche: %f , %f",x+px,y+py);
 
@@ -729,7 +729,7 @@
 		if (ret->empty() || (px==0 && py ==0))
 		{
 			// allgemein nach Hindernissen suchen
-			getServerWObjectsInRect(x+px-0.9999,y+py-0.9999,x+px+0.9999,y+py+0.99990,0, ret);
+			getWorldObjectsInRect(x+px-0.9999,y+py-0.9999,x+px+0.9999,y+py+0.99990,0, ret);
 			
 			// umliegende Felder in die Queue schieben, wenn sie noch nicht untersucht wurden
 			if (px < 10 && field[px+11][py+10]==false)
@@ -787,7 +787,7 @@
 */
 
 
- bool World::insertSWObject (ServerWObject* object, float x, float y, short region) 
+ bool World::insertSWObject (WorldObject* object, float x, float y, short region) 
 {
 	DEBUG5("inserting Object at %f %f into region %i",x,y,region);
 	 bool result=true;
@@ -815,7 +815,7 @@
 }
 
 
-bool World::insertPlayer(ServerWObject* player, int slot)
+bool World::insertPlayer(WorldObject* player, int slot)
 {
 	if (slot != NOSLOT)
 	{
@@ -825,7 +825,7 @@
 	
 	/*
 	DEBUG("all players: ");
-	map<int,ServerWObject*>::iterator it;
+	map<int,WorldObject*>::iterator it;
 	
 	for (it = m_players->begin(); it != m_players->end(); ++it)
 	{
@@ -835,7 +835,7 @@
 }
 
 
-bool World::moveSWObject(ServerWObject* object, float x, float y)
+bool World::moveSWObject(WorldObject* object, float x, float y)
 {
 	bool result;
 
@@ -853,7 +853,7 @@
 }
 
 
- bool World::deleteSWObject (ServerWObject* object) {
+ bool World::deleteSWObject (WorldObject* object) {
 	 
 	 bool result=true;
 	 
@@ -878,7 +878,7 @@
 		
 }
 
-bool World::insertPlayerIntoRegion(ServerWObject* player, short region)
+bool World::insertPlayerIntoRegion(WorldObject* player, short region)
 {
 	Region* reg = m_regions[region];
 	
@@ -982,7 +982,7 @@
 	tmp[10] = '\0';
 	cv->fromBuffer(tmp,10);
 	ot = tmp;
-	ServerWObject* pl =0;
+	WorldObject* pl =0;
 
 	DEBUG("type %s",tmp);	
 	pl=ObjectFactory::createObject(WorldObject::TypeInfo::TYPE_PLAYER, ot);
@@ -1026,7 +1026,7 @@
 
 		if (m_server)
 		{
-			map<int,ServerWObject*>::iterator it;
+			map<int,WorldObject*>::iterator it;
 			
 			if (slot != LOCAL_SLOT)
 			{
@@ -1243,7 +1243,7 @@
 void World::updatePlayers()
 {
 	// Schleife ueber die Spieler
-	map<int,ServerWObject*>::iterator it;
+	map<int,WorldObject*>::iterator it;
 	Player* pl;
 	int slot;
 	for (it = m_player_slots->begin(); it != m_player_slots->end(); )
@@ -1413,7 +1413,7 @@
 						
 						int id;
 						cv->fromBuffer(id);
-						ServerWObject* player;
+						WorldObject* player;
 						
 						DEBUG("got data for player %s id %i",subt,id);
 						
@@ -1566,7 +1566,7 @@
 	DEBUG5("sending event %i  id %i  data %i",event->m_type, event->m_id, event->m_data);
 	
 	
-	ServerWObject* object;
+	WorldObject* object;
 	DmgProjectile* proj;
 	Item* item;
 	if (region !=0)
@@ -1647,7 +1647,7 @@
 	
 	DEBUG5("got event %i  id %i  data %i",event.m_type, event.m_id, event.m_data);
 	
-	ServerWObject* object;
+	WorldObject* object;
 	DmgProjectile* proj;
 	
 	switch(event.m_type)
@@ -1738,7 +1738,7 @@
 					deleteSWObject(object);
 					m_players->erase( object->getId());
 					
-					map<int,ServerWObject*>::iterator it;
+					map<int,WorldObject*>::iterator it;
 					for (it = m_player_slots->begin(); it != m_player_slots->end(); ++it)
 					{
 						if (it->second == object)
@@ -1838,7 +1838,7 @@
 void World::handleDataRequest(ClientDataRequest* request, int slot )
 {
 	// Spieler von dem die Anfrage ausging
-	ServerWObject* player;
+	WorldObject* player;
 
 	// Spieler in dem betreffenden Slot aktivieren
 	if (m_player_slots->count(slot)==0)
@@ -1880,8 +1880,8 @@
 bool World::calcBlockmat(PathfindInfo * pathinfo)
 {
 	float sqs = pathinfo->m_base_size / pathinfo->m_quality;
-	list<ServerWObject*> ret;
-	list<ServerWObject*>::iterator it;
+	list<WorldObject*> ret;
+	list<WorldObject*>::iterator it;
 	int i,j,is,ie,js,je;
 	Shape s;
 	s.m_coordinate_x = pathinfo->m_center_x;
@@ -1907,7 +1907,7 @@
 	
 	// Alle Objekte in dem Gebiet suchen
 	getSWObjectsInShape(&s, pathinfo->m_region, &ret,pathinfo->m_layer);
-	ServerWObject* wo=0;
+	WorldObject* wo=0;
 	pathinfo->m_block->clear();
 	
 	// durchmustern der Objekte
--- a/src/core/world.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/world.h	Sat Oct 04 11:14:54 2008 +0000
@@ -34,7 +34,7 @@
 #include <iostream>
 #include <queue>
 
-#include "serverwobject.h"
+#include "worldobject.h"
 #include "dmgprojectile.h"
 #include "trade.h"
 #include "servernetwork.h"
@@ -70,7 +70,7 @@
  * \class World
  * \brief Hauptobjekt der Anwendung
  *
- * Dieses Objekt ist das Hauptobjekt der Anwendung. Die wesentliche Aufgabe liegt in der Verwaltung der ServerWObject Objekte.
+ * Dieses Objekt ist das Hauptobjekt der Anwendung. Die wesentliche Aufgabe liegt in der Verwaltung der WorldObject Objekte.
  */
 class World {
 //Public stuff
@@ -126,10 +126,10 @@
 	short insertRegion(Region* region, int rnr);
 	
 	/**
-	 * \fn bool insertPlayerIntoRegion(ServerWObject* player, short region)
+	 * \fn bool insertPlayerIntoRegion(WorldObject* player, short region)
 	 * \brief Versucht einen Spieler in eine Region einzufuegen
 	 */
-	bool insertPlayerIntoRegion(ServerWObject* player, short region);
+	bool insertPlayerIntoRegion(WorldObject* player, short region);
 
 	//Operations
 	/**
@@ -163,20 +163,20 @@
 	int newTrade(int trader1_id, int trader2_id);
 
 	/**
-	 * \fn ServerWObject*  getSWObject ( int id);
-	 * \brief Sucht ServerWObject anhand seiner ID
-	 * \param id ID des gesuchten ServerWObjects
+	 * \fn WorldObject*  getSWObject ( int id);
+	 * \brief Sucht WorldObject anhand seiner ID
+	 * \param id ID des gesuchten WorldObjects
 	 * \param rid ID der Region
-	 * \return Zeiger auf das gefundene ServerWObject
+	 * \return Zeiger auf das gefundene WorldObject
 	 *
-	 * W&auml;hlt ein ServerWObject anhand seiner ID aus. Gibt einen Zeiger auf das Objekt zur&uuml;ck, beziehungsweise NULL wenn das Objekt nicht gefunden wurde.
+	 * W&auml;hlt ein WorldObject anhand seiner ID aus. Gibt einen Zeiger auf das Objekt zur&uuml;ck, beziehungsweise NULL wenn das Objekt nicht gefunden wurde.
 	 */
-	ServerWObject* getSWObject ( int id, short rid);
+	WorldObject* getSWObject ( int id, short rid);
 
 
 	/**
-	 * \fn bool getSWObjectsInShape( Shape* shape, short region, list<ServerWObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, ServerWObject* omit=0 )
-	 * \brief Sucht ServerWObjects innerhalb eines Gebietes
+	 * \fn bool getSWObjectsInShape( Shape* shape, short region, list<WorldObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, WorldObject* omit=0 )
+	 * \brief Sucht WorldObjects innerhalb eines Gebietes
 	 * \param shape Form des Gebietes
 	 * \param layer Ebene in der gesucht wird
 	 * \param region Region in der gesucht wird
@@ -190,24 +190,24 @@
 	 * Wenn f&uuml;r selector ein NULL-Zeiger &uuml;bergeben wird, so werden die Objekte nicht selektiert.
 	 * Wenn f&uuml;r result ein NULL-Zeiger &uuml;bergeben wird, oder ein anderer Fehler auftritt, so wird false zur&uuml;ckgegeben, sonst true.
 	 */
-	bool getSWObjectsInShape( Shape* shape, short region, list<ServerWObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, ServerWObject* omit=0 );
+	bool getSWObjectsInShape( Shape* shape, short region, list<WorldObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, WorldObject* omit=0 );
 
 
 	/**
-	 * \fn ServerWObject* getSWObjectAt(float x_coordinate, float y_coordinate,  short region,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL)
-	 * \brief Sucht ServerWObject an den gegebenen Koordinaten
+	 * \fn WorldObject* getSWObjectAt(float x_coordinate, float y_coordinate,  short region,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL)
+	 * \brief Sucht WorldObject an den gegebenen Koordinaten
 	 * \param x_coordinate x-Koordinate des Punktes
 	 * \param y_coordinate y-Koordinate des Punktes
 	 * \param layer Ebene in der gesucht wird
 	 * \param region Region in der gesucht wird
 	 * \param layer Ebene in der gesucht wird
 	 * \param group Gruppen die durchsucht werden sollen
-	 * \return Zeiger auf das ServerWObject, wenn sich an dem Punkt eines befindet, sonst NULL
+	 * \return Zeiger auf das WorldObject, wenn sich an dem Punkt eines befindet, sonst NULL
 	 */
-	ServerWObject* getSWObjectAt(float x_coordinate, float y_coordinate,  short region,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL);
+	WorldObject* getSWObjectAt(float x_coordinate, float y_coordinate,  short region,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL);
 
 	/**
-	 * \fn getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  short region, list<ServerWObject*>* result,,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL ServerWObject* omit=0 )
+	 * \fn getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  short region, list<WorldObject*>* result,,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL WorldObject* omit=0 )
 	 * \brief Sucht alle Objekte die auf der angegebenen Linie liegen
 	 * \param xstart x-Koordinate Startpunkt
 	 * \param ystart y-Koordinate Startpunkt
@@ -219,7 +219,7 @@
 	 * \param group Gruppen die durchsucht werden sollen
 	 * \param omit Objekt, das ausgelassen wird
 	 */
-	void getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  short region, list<ServerWObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, ServerWObject* omit=0 );
+	void getSWObjectsOnLine( float xstart, float ystart, float xend, float yend,  short region, list<WorldObject*>* result,short layer=WorldObject::Geometry::LAYER_ALL, short group = WorldObject::GROUP_ALL, WorldObject* omit=0 );
 
 	/**
 	 * \fn void getProjectilesOnScreen(float center_x,float center_y,short region, list<DmgProjectile*>* result)
@@ -246,21 +246,21 @@
 
 
 	/**
-	 * \fn insertSWObject(ServerWObject* object)
-	 * \brief F&uuml;gt ServerWObject ein
+	 * \fn insertSWObject(WorldObject* object)
+	 * \brief F&uuml;gt WorldObject ein
 	 * \param object Zeiger auf das Objekt, welches eingef&uuml;gt werden soll
 	 * \return bool, der angibt, ob die Operation erfolgreich war
 	 *
-	 * F&uuml;gt das ServerWObject in die internen Datenstrukturen ein. Wenn das Einf&uuml;gen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
+	 * F&uuml;gt das WorldObject in die internen Datenstrukturen ein. Wenn das Einf&uuml;gen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
 	 * Wenn ein NULL-Zeiger &uuml;bergeben wird, so wird false ausgegeben.
 	 */
-	bool  insertSWObject (ServerWObject* object, float x, float y, short region);
+	bool  insertSWObject (WorldObject* object, float x, float y, short region);
 	
 	/**
-	 * \fn bool insertPlayer(ServerWObject* player, int slot = NOSLOT)
+	 * \fn bool insertPlayer(WorldObject* player, int slot = NOSLOT)
 	 * \brief Fuegt einen neuen Spieler hinzu
 	 */
-	bool insertPlayer(ServerWObject* player, int slot= NOSLOT);
+	bool insertPlayer(WorldObject* player, int slot= NOSLOT);
 
 	/**
 	 * \fn bool  insertProjectile(DmgProjectile* object, float x, float y, short region)
@@ -274,25 +274,25 @@
 	
 	
 	/**
-	 * \fn deleteServerWObject(ServerWObject* object)
-	 * \brief L&ouml;scht ServerWObject
+	 * \fn deleteWorldObject(WorldObject* object)
+	 * \brief L&ouml;scht WorldObject
 	 * \param object Zeiger auf das Objekt, welches gel&ouml;scht werden soll
 	 * \return bool, der angibt, ob die Operation erfolgreich war
 	 *
-	 * L&ouml;scht das ServerWObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gel&ouml;scht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das L&ouml;schen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
+	 * L&ouml;scht das WorldObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gel&ouml;scht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das L&ouml;schen erfolgreich war, so wird true zur&uuml;ckgegeben, sonst false.
 	 * Wenn ein NULL-Zeiger &uuml;bergeben wird, so wird false ausgegeben.
 	 */
-	bool  deleteSWObject (ServerWObject* object);
+	bool  deleteSWObject (WorldObject* object);
 
 	 /**
-	  * \fn moveServerWObject(ServerWObject* object, float x, float y)
-	  * \brief verschiebt ein ServerWObject an den Punkt (x,y)
+	  * \fn moveWorldObject(WorldObject* object, float x, float y)
+	  * \brief verschiebt ein WorldObject an den Punkt (x,y)
 	  * \param object Zeiger auf das Objekt, welches verschoben werden soll
 	  * \param x x-Koordinate des Zielpunktes, zu dem das Objekt verschoben werden soll
 	  * \param y y-Koordinate des Zielpunktes, zu dem das Objekt verschoben werden soll
 	  * \return bool, welcher angibt, ob das Verschieben erfolgreich war
 	  */
-	bool moveSWObject(ServerWObject* object, float x, float y);
+	bool moveSWObject(WorldObject* object, float x, float y);
 
 	/**
 	 * \fn bool lineIntersect(float xstart, float xstart, float xend,float yend float dir[2],Shape* s)
@@ -335,8 +335,8 @@
 
 	/**
 	 * \fn getValidId()
-	 * \brief Gibt eine zul&auml;ssige ID f&uuml;r ein ServerWObject aus
-	 * \return zul&auml;ssige ID f&uuml;r ein ServerWObject
+	 * \brief Gibt eine zul&auml;ssige ID f&uuml;r ein WorldObject aus
+	 * \return zul&auml;ssige ID f&uuml;r ein WorldObject
 	 */
 	int getValidId();
 
@@ -428,10 +428,10 @@
 	}
 
 	/**
-	 * \fn ServerWObject* getLocalPlayer()
+	 * \fn WorldObject* getLocalPlayer()
 	 * \brief Gibt den Spieler aus, der sich an dem Rechner befindet, auf dem diese Welt simuliert wird
 	 */
-	ServerWObject* getLocalPlayer()
+	WorldObject* getLocalPlayer()
 	{
 		return m_local_player;
 	}
@@ -443,12 +443,12 @@
 	Party* getEmptyParty();
 
 	/**
-	 * \fn Party::Relation getRelation(WorldObject::TypeInfo::Fraction frac, ServerWObject* wo)
+	 * \fn Party::Relation getRelation(WorldObject::TypeInfo::Fraction frac, WorldObject* wo)
 	 * \brief Gibt die Beziehung eines Lebewesens zu einer Fraktion
 	 * \param frac Fraktion
 	 * \param wo Objekt
 	 */
-	WorldObject::Relation getRelation(WorldObject::TypeInfo::Fraction frac, ServerWObject* wo);
+	WorldObject::Relation getRelation(WorldObject::TypeInfo::Fraction frac, WorldObject* wo);
 
 	/**
 	 * \brief Gibt die Distanz zwischen den beiden Flaechen quadriert aus
@@ -539,13 +539,13 @@
 	 * \var m_players
 	 * \brief Liste der Spieler in der Welt mit ihren Slots
 	 */
-	map<int,ServerWObject*>* m_player_slots;
+	map<int,WorldObject*>* m_player_slots;
 	
 	/**
-	 * \var map<int,ServerWObject*>* m_players
+	 * \var map<int,WorldObject*>* m_players
 	 * \brief Liste der Spieler in der Welt sortiert nach ID
 	 */
-	map<int,ServerWObject*>* m_players;
+	map<int,WorldObject*>* m_players;
 	
 
 	/**
@@ -561,9 +561,9 @@
 	Network* m_network;
 	
 	/**
-	 * \var ServerWObject* m_local_player
+	 * \var WorldObject* m_local_player
 	 */
-	ServerWObject* m_local_player;
+	WorldObject* m_local_player;
 	
 	/**
 	 * \var list<int> m_logins
--- a/src/core/worldobject.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/worldobject.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -1,4 +1,38 @@
 #include "worldobject.h"
+#include "world.h"
+
+WorldObject::WorldObject(World* world, int id)
+{
+	m_id = id;
+	m_state = STATE_ACTIVE;
+	m_world = world;
+	init();
+}
+
+bool WorldObject::moveTo(float x, float y)
+{
+	if (m_world==0)
+	{
+		WorldObject::Geometry* geom = getGeometry();
+		geom->m_shape.m_coordinate_x=x;
+		geom->m_shape.m_coordinate_y=y;
+		return true;
+	}
+	else
+	{
+		return m_world->moveSWObject(this, x,y);
+	}
+}
+
+Region* WorldObject::getRegion()
+{
+	return m_world->getRegion(m_grid_location.m_region);
+}
+
+bool  WorldObject::destroy()
+{
+	return true;
+}
 
 void WorldObject::toString(CharConv* cv)
 {
@@ -50,6 +84,8 @@
 	cv->fromBuffer<int>(m_id);
 	
 	*/
+	
+	
 	cv->fromBuffer<float>(m_geometry.m_shape.m_coordinate_x) ;
 	cv->fromBuffer<float>(m_geometry.m_shape.m_coordinate_y);
 	cv->fromBuffer<char>(ctmp);
@@ -74,26 +110,6 @@
 
 string WorldObject::getName()
 {
-	/*
-	if (m_type_info.m_type==TypeInfo::TYPE_MONSTER)
-	{
-		switch (m_type_info.m_subtype)
-		{
-			case TypeInfo::SUBTYPE_GOBLIN:
-				return "Goblin";
-				break;
-		}
-		return "Monster";
-	}
-	else if (m_type_info.m_type==TypeInfo::TYPE_PLAYER)
-	{
-		return "Player";
-	}
-	else if (m_type_info.m_type==TypeInfo::TYPE_FIXED_OBJECT)
-	{
-		return "Fixed";
-	}
-	*/
 	
 	return m_type_info.m_subtype;
 }
--- a/src/core/worldobject.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/core/worldobject.h	Sat Oct 04 11:14:54 2008 +0000
@@ -25,8 +25,11 @@
 #include <sstream>
 #include "debug.h"
 #include "charconv.h"
+#include "event.h"
 
-using namespace std;
+class World;
+class Region;
+struct Damage;
 
 
 /**
@@ -40,6 +43,32 @@
  * \note Bietet der Welt das WorldObject an
  */
 
+/**
+ * \struct GridLocation
+ * \brief Informationen zur Position eines Objektes in der Grid-Datenstruktur der Welt
+ */
+struct GridLocation
+{
+	
+	/**
+	 * \var m_region
+	 * \brief Region in der sich das Objekt befindet
+	 */
+	short m_region;
+	
+	/**
+	 * \var m_grid_x
+	 * \brief Index des Objektes im Grid in x-Richtung
+	 */
+	int m_grid_x;
+	
+	/**
+	 * \var m_grid_y
+	 * \brief Index des Objektes im Grid in y-Richtung
+	 */
+	int m_grid_y;
+};
+
 
 
 /**
@@ -131,8 +160,8 @@
 	};
 	
 	/**
-	* \struct WOBaseInformation
-	* \brief Beinhaltet alle grundlegenen Eigenschaften eines WorldObject.
+	* \struct Geometry
+	* \brief Informationen zur Geometrie eines Objektes
 	*/
 	struct Geometry
 	{
@@ -202,25 +231,6 @@
 		 * \brief genauere Unterteilung von Objekten
 		 */
 		typedef std::string ObjectSubtype;
-		/*
-		enum ObjectSubtype
-		{
-			SUBTYPE_NONE=0,
-
-			SUBTYPE_WARRIOR = 1,
-			SUBTYPE_ARCHER =2,
-			SUBTYPE_PRIEST = 3,
-			SUBTYPE_MAGE =4,
-
-			SUBTYPE_GOBLIN = 10,
-			SUBTYPE_GOBLIN_DOG = 11,
-			SUBTYPE_LICH = 20,
-
-			SUBTYPE_FENCE = 1000,
-			SUBTYPE_TREE = 1010,
-
-		};
-		*/
 
 		/**
 		 * \enum Category
@@ -350,19 +360,14 @@
 	//Fields
 	//Constructors
 	/**
- 	 * \fn WorldObject(unsigned int id)
+	 * \fn WorldObject(World* world,int id)
 	 * \brief Konstruktor
 	 * \param world World Objekt, in dem sich das neue WorldObject befindet
 	 * \param id ID des WorlObject
 	 *
 	 * Erstellt ein neues WorldObject
 	 */
-	WorldObject(int id)
-	{
-		m_id = id;
-		m_state = STATE_ACTIVE;
-	}
-
+	WorldObject(World* world, int id);
 
 	/**
 	 * \fn virtual ~WorldObject()
@@ -371,6 +376,158 @@
 	virtual ~WorldObject()
 	{
 	}
+	
+	/**
+	 * \fn getWorld()
+	 * \brief Gibt einen Zeiger auf die Welt zurueck
+	 * \return Zeiger auf die Welt
+	 */
+	World* getWorld()
+	{
+		return m_world;
+	}
+	
+	/**
+	 * \fn Region* getRegion()
+	 * \brief Gibt die Region aus, in der sich das Objekt befindet
+	 */
+	Region* getRegion();
+	
+	/**
+	 * \fn GridLocation* getGridLocation()
+	 * \brief Gibt den Ort des Objektes im Grid aus
+	 * \return Ort des Objektes im Grid
+	 */
+	GridLocation* getGridLocation()
+	{
+		return &m_grid_location;
+	}
+	
+	/**
+	 * \fn MoveInfo* getMoveInfo()
+	 * \brief Gibt Zeiger auf aktuellen Bewegungszustand zurueck
+	 * \return aktueller Bewegungszustand
+	 */
+	MoveInfo* getMoveInfo()
+	{
+		return &m_move_info;
+	}
+	
+	//Operations
+	/**
+	 * \fn virtual bool init ()
+	 * \brief Initialisiert das WorldObject. Die Funktion ist virtuell und wird durch die abgeleiteten Klassen &uuml;berschrieben.
+	 * \return bool, der angibt ob die initialisierung erfolgreich war
+	 */
+	virtual  bool  init ()
+	{
+		m_destroyed=false;
+		return true;
+	}
+	
+	
+	/**
+	 * \fn virtual bool update ( float time)
+	 * \brief Aktualisiert das WorldObject, nachdem eine bestimmte Zeit vergangen ist. Alle Aktionen des Objekts werden auf diesem Weg ausgel&ouml;st. Die Funktion ist virtuell und wird von den abgeleiteten Klassen &uuml;berschrieben
+	 * \param time Menge der vergangenen Zeit in Millisekunden
+	 * \return bool, der angibt, ob die Aktualisierung fehlerfrei verlaufen ist
+	 */
+	virtual  bool  update ( float time) 
+	{
+		return true;
+	}
+	
+	
+	/**
+	 * \fn virtual bool destroy()
+	 * \brief Zerst&ouml;rt das WorldObject.  Die Funktion ist virtuell und wird von den abgeleiteten Klassen &uuml;berschrieben
+	 * \return bool der angibt, ob die Zerst&ouml;rung erfolgreich war
+	 */
+	virtual  bool  destroy ();
+	
+	/**
+	 * \fn bool getDestroyed()
+	 * \brief Gibt zurueck ob das Objekt zerstoert ist
+	 */
+	bool getDestroyed()
+	{
+		return m_destroyed;
+	}
+	
+	/**
+	 * \fn void setDestroyed(bool d)
+	 * \brief Setzt den Status zerstoert
+	 * \param d neuer Status
+	 */
+	void setDestroyed(bool d)
+	{
+		m_destroyed =d;
+	}
+	
+	/**
+	 * \fn void moveTo(float x, float y)
+	 * \brief setzt die x- und die y-Koordinate
+	 * \param x x-Koordinate
+	 * \param y y-Koordinate
+	 * 
+	 * Diese Funktion verschiebt das Objekt an einen anderen Ort. Wenn das Objekt in einem Quadtree eingeordnet ist, so muss bei jeder &Auml;nderung der Koordinaten getestet werden, ob das Objekt im Quadtree neu angeordnet werden muss. Diese Funktion teilt dem Quadtree die &Auml;nderung der Koordinanten mit und l&ouml;st damit ebentuell eine Reorganisation aus. Daher sollte ausserhalb des Quadtree diese Funktion zum ver&auml;ndern der Koordinaten verwendet werden.
+	 */
+	bool moveTo(float x, float y);
+	
+	/**
+	 * \fn void takeDamage(Damage* damage)
+	 * \brief Das Objekt nimmt Schaden in der in damage angegebenen Art und Hoehe.
+	 * \param damage Schadensart und -hoehe
+	 */
+	virtual void takeDamage(Damage* damage)
+	{
+	}
+	
+	/**
+	 * \fn virtual void writeEvent(Event* event, CharConv* cv)
+	 * \brief Schreibt die Daten zu einem Event in den Bitstream
+	 * \param event Event das beschrieben wird
+	 * \param cv Bitstream
+	 */
+	virtual void writeEvent(Event* event, CharConv* cv)
+	{
+	}
+	
+	/**
+	 * \fn virtual void processEvent(Event* event, CharConv* cv)
+	 * \brief Fuehrt die Wirkung eines Events auf das Objekt aus. Weitere Daten werden aus dem Bitstream gelesen
+	 */
+	virtual void processEvent(Event* event, CharConv* cv)
+	{
+	}
+	
+	/**
+	 * \fn virtual bool reactOnUse (int id)
+	 * \brief Diese Funktion behandelt die Reaktion eines Worldobject, wenn auf es eine Aktion ausgef&uuml;hrt wird.
+	 * \param id Id des Spielers, der die Aktion ausf&uuml;hrt
+	 * \return bool, der angibt, ob die Behandlung der Aktion erfolgreich war
+	 */
+	virtual  bool  reactOnUse (int id)
+	{
+		return true;
+	}
+	
+	/**
+	 * \fn int getEventMask()
+	 * \brief Gibt die Bitmaske der Events aus#
+	 */
+	int getEventMask()
+	{
+		return m_event_mask;
+	}
+	
+	/**
+	 * \fn void clearEventMask()
+	 */
+	void clearEventMask()
+	{
+		m_event_mask =0;
+	}
 
 	//Accessor Methods
     /**
@@ -461,19 +618,26 @@
 	virtual void fromString(CharConv* cv);
 
 	/**
-	 * \fn String getName()
+	 * \fn std::string getName()
 	 * \brief Gibt den Name des Objektes aus
 	 */
-	virtual string getName();
+	virtual std::string getName();
 
 
 	/**
-	 * \fn String getNameId()
+	 * \fn std::string getNameId()
 	 * \brief Gibt Name mit angehaengter ID aus
 	 */
-	string getNameId();
+	std::string getNameId();
 
-
+	protected:
+		
+	/**
+	 * \var int m_event_mask
+	 * \brief Bitmaske mit den Events die das Objekt seit dem letzten Update erlebt hat
+	 */
+	int m_event_mask;
+		
 //Private stuff
 private:
 
@@ -501,8 +665,32 @@
 	 */
 	int m_id;
 
+	/**
+	 * \var GridLocation m_grid_location
+	 * \brief Ort des Objektes in der internen Struktur
+	 */
+	
+	GridLocation m_grid_location;
+	 /**
+	 * \var m_move_info
+	 * \brief Information ueber den Bewegungszustand
+	  **/
+	MoveInfo m_move_info;
+	
+	/**
+	 * \var m_destroyed
+	 * \brief Information, ob das Objekt zerst&ouml;rt ist
+	 */
+	bool m_destroyed;
+	
+	/**
+	 * \var m_world
+	 * \brief Zeiger auf das World Objekt, in dem das aktuelle Objekt eingeordnet ist
+	 */
+	World* m_world;
 
 };
 
+#include "damage.h"
 
 #endif //WORLDOBJECT_H
--- a/src/gl_gui/window_main_gl.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/gl_gui/window_main_gl.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -309,9 +309,9 @@
 	}
 */
 
-	list<ServerWObject*> stat_objs;
-	list<ServerWObject*> obj;
-	list<ServerWObject*>::iterator it;
+	list<WorldObject*> stat_objs;
+	list<WorldObject*> obj;
+	list<WorldObject*>::iterator it;
 	Shape s;
 	s.m_coordinate_x = x;
 	s.m_coordinate_y = y;
@@ -319,7 +319,7 @@
 	s.m_extent_x = 10;
 	s.m_extent_y = 10;
 	
-	ServerWObject* wo, *cwo;
+	WorldObject* wo, *cwo;
 	Creature* cr;
 	
 	region->getSWObjectsInShape(&s,&stat_objs, WorldObject::Geometry::LAYER_ALL,WorldObject::FIXED);
--- a/src/gui/mainwindow.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/gui/mainwindow.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -2969,7 +2969,7 @@
 		string_stream<<name;
 
 		// zur ID gehoerendes Objekt
-		ServerWObject* cwo;
+		WorldObject* cwo;
 		cwo = m_document->getWorld()->getSWObject(id,rid);
 		Creature* cr;
 
--- a/src/gui/scene.cpp	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/gui/scene.cpp	Sat Oct 04 11:14:54 2008 +0000
@@ -337,9 +337,9 @@
 	x = player->getGeometry()->m_shape.m_coordinate_x;
 	y = player->getGeometry()->m_shape.m_coordinate_y;
 
-	list<ServerWObject*> objs;
-	ServerWObject* obj;
-	list<ServerWObject*>::iterator it;
+	list<WorldObject*> objs;
+	WorldObject* obj;
+	list<WorldObject*>::iterator it;
 	Shape s;
 	s.m_coordinate_x = x;
 	s.m_coordinate_y = y;
@@ -347,7 +347,7 @@
 	s.m_extent_x = 20;
 	s.m_extent_y = 20;
 
-	ServerWObject* wo, *cwo;
+	WorldObject* wo, *cwo;
 	Creature* cr;
 
 	player->getRegion()->getSWObjectsInShape(&s,&objs, WorldObject::Geometry::LAYER_ALL,WorldObject::CREATURE);
@@ -451,7 +451,7 @@
 	}
 }
 
-void Scene::updateObject(ServerWObject* obj)
+void Scene::updateObject(WorldObject* obj)
 {
 	std::string name = obj->getNameId();
 	DEBUG5("handle obj %s",name.c_str());
@@ -1158,7 +1158,7 @@
 	clearObjects();
 
 	// Liste der statischen Objekte
-	list<ServerWObject*> stat_objs;
+	list<WorldObject*> stat_objs;
 
 	Region* region = m_document->getLocalPlayer()->getRegion();
 
@@ -1170,7 +1170,7 @@
 	s.m_extent_y = 10000;
 
 	region->getSWObjectsInShape(&s,&stat_objs, WorldObject::Geometry::LAYER_ALL,WorldObject::FIXED);
-	list<ServerWObject*>::iterator it;
+	list<WorldObject*>::iterator it;
 	std::string name;
 	for (it = stat_objs.begin(); it !=stat_objs.end();++it)
 	{
--- a/src/gui/scene.h	Sat Oct 04 10:45:24 2008 +0000
+++ b/src/gui/scene.h	Sat Oct 04 11:14:54 2008 +0000
@@ -8,7 +8,7 @@
 #include "itemloader.h"
 #include "objectloader.h"
 #include "document.h"
-#include "serverwobject.h"
+#include "worldobject.h"
 // TODO : include anpassen (es wird nur ein Spieler allgemein benoetigt)
 
 
@@ -135,10 +135,10 @@
 	void updateObjects();
 
 	/**
-	 * \fn void updateObject(ServerWObject* obj);
+	 * \fn void updateObject(WorldObject* obj);
 	 * \brief Fuegt das Objekt in die Szene ein
 	 */
-	void updateObject(ServerWObject* obj);
+	void updateObject(WorldObject* obj);
 
 
 	/**