* fixed exception when deleting objects from the ObjMgr.
* fixed(?) some problems with including SDL, which should be excluded * no more quit at crpt error, please test
This commit is contained in:
parent
605fbd2df5
commit
1da69e7873
@ -3,7 +3,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PseuWoW", "src\PseuWoW.vcpr
|
|||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{8F1DEA42-6A5B-4B62-839D-C141A7BFACF2} = {8F1DEA42-6A5B-4B62-839D-C141A7BFACF2}
|
{8F1DEA42-6A5B-4B62-839D-C141A7BFACF2} = {8F1DEA42-6A5B-4B62-839D-C141A7BFACF2}
|
||||||
{F548FC51-24A4-45FF-A381-BEBC39F18270} = {F548FC51-24A4-45FF-A381-BEBC39F18270}
|
{F548FC51-24A4-45FF-A381-BEBC39F18270} = {F548FC51-24A4-45FF-A381-BEBC39F18270}
|
||||||
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}
|
|
||||||
{262199E8-EEDF-4700-A1D1-E9CC901CF480} = {262199E8-EEDF-4700-A1D1-E9CC901CF480}
|
{262199E8-EEDF-4700-A1D1-E9CC901CF480} = {262199E8-EEDF-4700-A1D1-E9CC901CF480}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
|||||||
@ -17,8 +17,8 @@ void ObjMgr::Remove(uint64 guid)
|
|||||||
for(ObjectList::iterator i = _obj.begin(); i!=_obj.end(); i++)
|
for(ObjectList::iterator i = _obj.begin(); i!=_obj.end(); i++)
|
||||||
if((*i)->GetGUID() == guid)
|
if((*i)->GetGUID() == guid)
|
||||||
{
|
{
|
||||||
_obj.erase(i);
|
|
||||||
delete *i;
|
delete *i;
|
||||||
|
_obj.erase(i);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,8 @@ Object::Object()
|
|||||||
|
|
||||||
Object::~Object()
|
Object::~Object()
|
||||||
{
|
{
|
||||||
DEBUG(logdebug("~Object() id=%u ptr=0x%X valuesptr=0x%X",this->GetTypeId(),this,_uint32values));
|
ASSERT(_valuescount > 0);
|
||||||
|
DEBUG(logdebug("~Object() GUID="I64FMT,GetGUID()));
|
||||||
if(_uint32values)
|
if(_uint32values)
|
||||||
delete [] _uint32values;
|
delete [] _uint32values;
|
||||||
}
|
}
|
||||||
@ -26,7 +27,7 @@ void Object::_InitValues()
|
|||||||
|
|
||||||
void Object::Create( uint64 guid )
|
void Object::Create( uint64 guid )
|
||||||
{
|
{
|
||||||
//ASSERT(_valuescount > 0);
|
ASSERT(_valuescount > 0);
|
||||||
if(!_uint32values)
|
if(!_uint32values)
|
||||||
_InitValues();
|
_InitValues();
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,6 @@ enum TYPEID
|
|||||||
class Object
|
class Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Object();
|
|
||||||
virtual ~Object();
|
virtual ~Object();
|
||||||
inline const uint64 GetGUID() const { return GetUInt64Value(0); }
|
inline const uint64 GetGUID() const { return GetUInt64Value(0); }
|
||||||
inline const uint32 GetGUIDLow() const { return GetUInt32Value(0); }
|
inline const uint32 GetGUIDLow() const { return GetUInt32Value(0); }
|
||||||
@ -75,7 +74,7 @@ public:
|
|||||||
void Create(uint64 guid);
|
void Create(uint64 guid);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Object();
|
||||||
void _InitValues(void);
|
void _InitValues(void);
|
||||||
|
|
||||||
uint16 _valuescount;
|
uint16 _valuescount;
|
||||||
@ -91,13 +90,14 @@ protected:
|
|||||||
class WorldObject : public Object
|
class WorldObject : public Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WorldObject();
|
virtual ~WorldObject ( ) {}
|
||||||
void SetPosition(float x, float y, float z, float o, uint16 _map);
|
void SetPosition(float x, float y, float z, float o, uint16 _map);
|
||||||
inline float GetX(void) { return _x; }
|
inline float GetX(void) { return _x; }
|
||||||
inline float GetY(void) { return _y; }
|
inline float GetY(void) { return _y; }
|
||||||
inline float GetZ(void) { return _z; }
|
inline float GetZ(void) { return _z; }
|
||||||
inline float GetO(void) { return _o; }
|
inline float GetO(void) { return _o; }
|
||||||
protected:
|
protected:
|
||||||
|
WorldObject();
|
||||||
float _x,_y,_z,_o; // coords, orientation
|
float _x,_y,_z,_o; // coords, orientation
|
||||||
uint16 _m; // map
|
uint16 _m; // map
|
||||||
|
|
||||||
|
|||||||
@ -82,10 +82,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
|
|||||||
{
|
{
|
||||||
case TYPEID_OBJECT: // no data to read
|
case TYPEID_OBJECT: // no data to read
|
||||||
{
|
{
|
||||||
Object *obj = new Object();
|
logerror("Recieved wrong UPDATETYPE_CREATE_OBJECT to create Object base type!");
|
||||||
obj->Create(uguid);
|
|
||||||
objmgr.Add(obj);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case TYPEID_ITEM:
|
case TYPEID_ITEM:
|
||||||
{
|
{
|
||||||
|
|||||||
@ -72,10 +72,11 @@ void WorldSocket::OnRead()
|
|||||||
if(_opcode > 800) // no opcode has yet a number over 800
|
if(_opcode > 800) // no opcode has yet a number over 800
|
||||||
{
|
{
|
||||||
logcritical("CRYPT ERROR: opcode=%u, remain=%u",_opcode,_remaining);
|
logcritical("CRYPT ERROR: opcode=%u, remain=%u",_opcode,_remaining);
|
||||||
GetSession()->GetInstance()->SetError();
|
//GetSession()->GetInstance()->SetError(); // please test if this is stable!!!
|
||||||
// if the crypt gets messy its hardly possible to recover it, especially if we dont know
|
// if the crypt gets messy its hardly possible to recover it, especially if we dont know
|
||||||
// the lentgh of the following data part
|
// the lentgh of the following data part
|
||||||
// TODO: invent some way how to recover the crypt (reconnect?)
|
// TODO: invent some way how to recover the crypt (reconnect?)
|
||||||
|
delete [] buf; // drop the current queue content
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user