Mercurial > sumwars
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ä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ügt ServerWObject ein + * \fn insertSWObject (WorldObject* object, float x, float y) + * \brief Fügt WorldObject ein * \param object Zeiger auf das Objekt, welches eingefügt werden soll * \return bool, der angibt, ob die Operation erfolgreich war * - * Fügt das ServerWObject in die internen Datenstrukturen ein. Wenn das Einfügen erfolgreich war, so wird true zurückgegeben, sonst false. + * Fügt das WorldObject in die internen Datenstrukturen ein. Wenn das Einfügen erfolgreich war, so wird true zurückgegeben, sonst false. * Wenn ein NULL-Zeiger ü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ür selector ein NULL-Zeiger übergeben wird, so werden die Objekte nicht selektiert. * Wenn für result ein NULL-Zeiger übergeben wird, oder ein anderer Fehler auftritt, so wird false zurü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öscht ServerWObject + * \fn deleteWorldObject(WorldObject* object) + * \brief Löscht WorldObject * \param object Zeiger auf das Objekt, welches gelöscht werden soll * \return bool, der angibt, ob die Operation erfolgreich war * - * Löscht das ServerWObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gelöscht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das Löschen erfolgreich war, so wird true zurückgegeben, sonst false. + * Löscht das WorldObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gelöscht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das Löschen erfolgreich war, so wird true zurückgegeben, sonst false. * Wenn ein NULL-Zeiger ü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ä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ä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ählt ein ServerWObject anhand seiner ID aus. Gibt einen Zeiger auf das Objekt zurück, beziehungsweise NULL wenn das Objekt nicht gefunden wurde. + * Wählt ein WorldObject anhand seiner ID aus. Gibt einen Zeiger auf das Objekt zurü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ür selector ein NULL-Zeiger übergeben wird, so werden die Objekte nicht selektiert. * Wenn für result ein NULL-Zeiger übergeben wird, oder ein anderer Fehler auftritt, so wird false zurü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ügt ServerWObject ein + * \fn insertSWObject(WorldObject* object) + * \brief Fügt WorldObject ein * \param object Zeiger auf das Objekt, welches eingefügt werden soll * \return bool, der angibt, ob die Operation erfolgreich war * - * Fügt das ServerWObject in die internen Datenstrukturen ein. Wenn das Einfügen erfolgreich war, so wird true zurückgegeben, sonst false. + * Fügt das WorldObject in die internen Datenstrukturen ein. Wenn das Einfügen erfolgreich war, so wird true zurückgegeben, sonst false. * Wenn ein NULL-Zeiger ü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öscht ServerWObject + * \fn deleteWorldObject(WorldObject* object) + * \brief Löscht WorldObject * \param object Zeiger auf das Objekt, welches gelöscht werden soll * \return bool, der angibt, ob die Operation erfolgreich war * - * Löscht das ServerWObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gelöscht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das Löschen erfolgreich war, so wird true zurückgegeben, sonst false. + * Löscht das WorldObject aus den internen Datenstrukturen. Das Objekt selbst wird nicht gelöscht, es wird nur die Einbindung in die Datenstrukturen entfernt. Wenn das Löschen erfolgreich war, so wird true zurückgegeben, sonst false. * Wenn ein NULL-Zeiger ü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ässige ID für ein ServerWObject aus - * \return zulässige ID für ein ServerWObject + * \brief Gibt eine zulässige ID für ein WorldObject aus + * \return zulässige ID fü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 ü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öst. Die Funktion ist virtuell und wird von den abgeleiteten Klassen ü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ört das WorldObject. Die Funktion ist virtuell und wird von den abgeleiteten Klassen überschrieben + * \return bool der angibt, ob die Zerstö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 Änderung der Koordinaten getestet werden, ob das Objekt im Quadtree neu angeordnet werden muss. Diese Funktion teilt dem Quadtree die Änderung der Koordinanten mit und löst damit ebentuell eine Reorganisation aus. Daher sollte ausserhalb des Quadtree diese Funktion zum verä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ührt wird. + * \param id Id des Spielers, der die Aktion ausfü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ö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); /**