diff options
author | maximius <none@none> | 2009-10-17 15:35:07 -0700 |
---|---|---|
committer | maximius <none@none> | 2009-10-17 15:35:07 -0700 |
commit | 26b5e033ffde3d161382fc9addbfa99738379641 (patch) | |
tree | a344f369ca32945f787a02dee35c3dbe342bed7e /src/game/Corpse.cpp | |
parent | f21f47005dcb6b76e1abc9f35fbcd03eed191bff (diff) |
*Massive cleanup (\n\n -> \n, *\n -> \n, cleanup for(...) to for (...), and some other cleanups by hand)
*Fix a possible crash in Spell::DoAllEffectOnTarget
--HG--
branch : trunk
Diffstat (limited to 'src/game/Corpse.cpp')
-rw-r--r-- | src/game/Corpse.cpp | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/src/game/Corpse.cpp b/src/game/Corpse.cpp index 16e52ef46aa..350e314152d 100644 --- a/src/game/Corpse.cpp +++ b/src/game/Corpse.cpp @@ -17,7 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - #include "Common.h" #include "Corpse.h" #include "Player.h" @@ -27,87 +26,65 @@ #include "Opcodes.h" #include "GossipDef.h" #include "World.h" - Corpse::Corpse(CorpseType type) : WorldObject() , m_type(type) { m_objectType |= TYPEMASK_CORPSE; m_objectTypeId = TYPEID_CORPSE; - m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_POSITION); - m_valuesCount = CORPSE_END; - m_time = time(NULL); - lootForBody = false; - if(type != CORPSE_BONES) m_isWorldObject = true; } - Corpse::~Corpse() { } - void Corpse::AddToWorld() { ///- Register the corpse for guid lookup if(!IsInWorld()) ObjectAccessor::Instance().AddObject(this); - Object::AddToWorld(); } - void Corpse::RemoveFromWorld() { ///- Remove the corpse from the accessor if(IsInWorld()) ObjectAccessor::Instance().RemoveObject(this); - Object::RemoveFromWorld(); } - bool Corpse::Create( uint32 guidlow, Map *map ) { SetMap(map); Object::_Create(guidlow, 0, HIGHGUID_CORPSE); return true; } - bool Corpse::Create( uint32 guidlow, Player *owner) { ASSERT(owner); - Relocate(owner->GetPositionX(), owner->GetPositionY(), owner->GetPositionZ(), owner->GetOrientation()); - if(!IsPositionValid()) { sLog.outError("Corpse (guidlow %d, owner %s) not created. Suggested coordinates isn't valid (X: %f Y: %f)", guidlow, owner->GetName(), owner->GetPositionX(), owner->GetPositionY()); return false; } - //we need to assign owner's map for corpse //in other way we will get a crash in Corpse::SaveToDB() SetMap(owner->GetMap()); - WorldObject::_Create(guidlow, HIGHGUID_CORPSE, owner->GetPhaseMask()); - SetFloatValue( OBJECT_FIELD_SCALE_X, 1 ); SetUInt64Value( CORPSE_FIELD_OWNER, owner->GetGUID() ); - m_grid = Trinity::ComputeGridPair(GetPositionX(), GetPositionY()); - return true; } - void Corpse::SaveToDB() { // prevent DB data inconsistence problems and duplicates CharacterDatabase.BeginTransaction(); DeleteFromDB(); - std::ostringstream ss; ss << "INSERT INTO corpse (guid,player,position_x,position_y,position_z,orientation,zone,map,data,time,corpse_type,instance,phaseMask) VALUES (" << GetGUIDLow() << ", " @@ -128,21 +105,17 @@ void Corpse::SaveToDB() CharacterDatabase.Execute( ss.str().c_str() ); CharacterDatabase.CommitTransaction(); } - void Corpse::DeleteBonesFromWorld() { assert(GetType() == CORPSE_BONES); Corpse* corpse = ObjectAccessor::GetCorpse(*this, GetGUID()); - if (!corpse) { sLog.outError("Bones %u not found in world.", GetGUIDLow()); return; } - AddObjectToRemoveList(); } - void Corpse::DeleteFromDB() { if(GetType() == CORPSE_BONES) @@ -152,7 +125,6 @@ void Corpse::DeleteFromDB() // all corpses (not bones) CharacterDatabase.PExecute("DELETE FROM corpse WHERE player = '%d' AND corpse_type <> '0'", GUID_LOPART(GetOwnerGUID())); } - /* bool Corpse::LoadFromDB(uint32 guid, QueryResult *result, uint32 InstanceId) { @@ -160,29 +132,22 @@ bool Corpse::LoadFromDB(uint32 guid, QueryResult *result, uint32 InstanceId) if (!external) // 0 1 2 3 4 5 6 7 8 9 result = CharacterDatabase.PQuery("SELECT position_x,position_y,position_z,orientation,map,data,time,corpse_type,instance,phaseMask FROM corpse WHERE guid = '%u'",guid); - if( !result ) { sLog.outError("Corpse (GUID: %u) not found in table `corpse`, can't load. ",guid); return false; } - Field *fields = result->Fetch(); - if(!LoadFromDB(guid, fields)) { if (!external) delete result; - return false; } - if (!external) delete result; - return true; }*/ - bool Corpse::LoadFromDB(uint32 guid, Field *fields) { // 0 1 2 3 4 5 6 7 8 9 @@ -192,52 +157,39 @@ bool Corpse::LoadFromDB(uint32 guid, Field *fields) float positionZ = fields[2].GetFloat(); float ort = fields[3].GetFloat(); uint32 mapid = fields[4].GetUInt32(); - Object::_Create(guid, 0, HIGHGUID_CORPSE); - if(!LoadValues( fields[5].GetString() )) { sLog.outError("Corpse #%d have broken data in `data` field. Can't be loaded.",guid); return false; } - m_time = time_t(fields[6].GetUInt64()); m_type = CorpseType(fields[7].GetUInt32()); - if(m_type >= MAX_CORPSE_TYPE) { sLog.outError("Corpse (guidlow %d, owner %d) have wrong corpse type, not load.",GetGUIDLow(),GUID_LOPART(GetOwnerGUID())); return false; } - if(m_type != CORPSE_BONES) m_isWorldObject = true; - uint32 instanceid = fields[8].GetUInt32(); - uint32 phaseMask = fields[9].GetUInt32(); - // overwrite possible wrong/corrupted guid SetUInt64Value(OBJECT_FIELD_GUID, MAKE_NEW_GUID(guid, 0, HIGHGUID_CORPSE)); - // place SetLocationInstanceId(instanceid); SetLocationMapId(mapid); SetPhaseMask(phaseMask, false); Relocate(positionX, positionY, positionZ, ort); - if(!IsPositionValid()) { sLog.outError("Corpse (guidlow %d, owner %d) not created. Suggested coordinates isn't valid (X: %f Y: %f)", GetGUIDLow(), GUID_LOPART(GetOwnerGUID()), GetPositionX(), GetPositionY()); return false; } - m_grid = Trinity::ComputeGridPair(GetPositionX(), GetPositionY()); - return true; } - bool Corpse::isVisibleForInState(Player const* u, bool inVisibleList) const { return IsInWorld() && u->IsInWorld() && IsWithinDistInMap(u->m_seer, World::GetMaxVisibleDistanceForObject() + (inVisibleList ? World::GetVisibleObjectGreyDistance() : 0.0f), false); |