1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-01 17:15:34 +00:00

Remove some unnecessary fields from Ptr

This commit is contained in:
Chris Robinson 2013-08-14 17:05:42 -07:00
parent 74f855e948
commit 48c07fbd98
7 changed files with 27 additions and 31 deletions

View file

@ -389,7 +389,7 @@ namespace MWGui
// Unset OnPCEquip Variable on item's script, if it has a script with that variable declared // Unset OnPCEquip Variable on item's script, if it has a script with that variable declared
if(script != "") if(script != "")
(*it).mRefData->getLocals().setVarByInt(script, "onpcequip", 0); (*it).getRefData().getLocals().setVarByInt(script, "onpcequip", 0);
return; return;
} }

View file

@ -82,6 +82,6 @@ namespace MWWorld
/* Set OnPCEquip Variable on item's script, if the player is equipping it, and it has a script with that variable declared */ /* Set OnPCEquip Variable on item's script, if the player is equipping it, and it has a script with that variable declared */
if(equipped && actor == MWBase::Environment::get().getWorld()->getPlayer().getPlayer() && script != "") if(equipped && actor == MWBase::Environment::get().getWorld()->getPlayer().getPlayer() && script != "")
(object).mRefData->getLocals().setVarByInt(script, "onpcequip", 1); object.getRefData().getLocals().setVarByInt(script, "onpcequip", 1);
} }
} }

View file

@ -59,16 +59,16 @@ MWWorld::ContainerStoreIterator MWWorld::ContainerStore::end()
bool MWWorld::ContainerStore::stacks(const Ptr& ptr1, const Ptr& ptr2) bool MWWorld::ContainerStore::stacks(const Ptr& ptr1, const Ptr& ptr2)
{ {
/// \todo add current enchantment charge here when it is implemented /// \todo add current enchantment charge here when it is implemented
if ( ptr1.mCellRef->mRefID == ptr2.mCellRef->mRefID if ( ptr1.getCellRef().mRefID == ptr2.getCellRef().mRefID
&& MWWorld::Class::get(ptr1).getScript(ptr1) == "" // item with a script never stacks && MWWorld::Class::get(ptr1).getScript(ptr1) == "" // item with a script never stacks
&& MWWorld::Class::get(ptr1).getEnchantment(ptr1) == "" // item with enchantment never stacks (we could revisit this later, but for now it makes selecting items in the spell window much easier) && MWWorld::Class::get(ptr1).getEnchantment(ptr1) == "" // item with enchantment never stacks (we could revisit this later, but for now it makes selecting items in the spell window much easier)
&& ptr1.mCellRef->mOwner == ptr2.mCellRef->mOwner && ptr1.getCellRef().mOwner == ptr2.getCellRef().mOwner
&& ptr1.mCellRef->mSoul == ptr2.mCellRef->mSoul && ptr1.getCellRef().mSoul == ptr2.getCellRef().mSoul
// item that is already partly used up never stacks // item that is already partly used up never stacks
&& (!MWWorld::Class::get(ptr1).hasItemHealth(ptr1) || ptr1.mCellRef->mCharge == -1 && (!MWWorld::Class::get(ptr1).hasItemHealth(ptr1) || ptr1.getCellRef().mCharge == -1
|| MWWorld::Class::get(ptr1).getItemMaxHealth(ptr1) == ptr1.mCellRef->mCharge) || MWWorld::Class::get(ptr1).getItemMaxHealth(ptr1) == ptr1.getCellRef().mCharge)
&& (!MWWorld::Class::get(ptr2).hasItemHealth(ptr2) || ptr2.mCellRef->mCharge == -1 && (!MWWorld::Class::get(ptr2).hasItemHealth(ptr2) || ptr2.getCellRef().mCharge == -1
|| MWWorld::Class::get(ptr2).getItemMaxHealth(ptr2) == ptr2.mCellRef->mCharge)) || MWWorld::Class::get(ptr2).getItemMaxHealth(ptr2) == ptr2.getCellRef().mCharge))
return true; return true;
return false; return false;
@ -91,7 +91,7 @@ MWWorld::ContainerStoreIterator MWWorld::ContainerStore::add (const Ptr& itemPtr
cell = 0; // Items in player's inventory have cell set to 0, so their scripts will never be removed cell = 0; // Items in player's inventory have cell set to 0, so their scripts will never be removed
// Set OnPCAdd special variable, if it is declared // Set OnPCAdd special variable, if it is declared
item.mRefData->getLocals().setVarByInt(script, "onpcadd", 1); item.getRefData().getLocals().setVarByInt(script, "onpcadd", 1);
} }
else else
cell = player.getCell(); cell = player.getCell();

View file

@ -138,7 +138,7 @@ void MWWorld::InventoryStore::unequipAll(const MWWorld::Ptr& actor)
// Unset OnPCEquip Variable on item's script, if it has a script with that variable declared // Unset OnPCEquip Variable on item's script, if it has a script with that variable declared
if((actor.getRefData().getHandle() == "player") && (script != "")) if((actor.getRefData().getHandle() == "player") && (script != ""))
(*it).mRefData->getLocals().setVarByInt(script, "onpcequip", 0); (*it).getRefData().getLocals().setVarByInt(script, "onpcequip", 0);
} }
} }
} }

View file

@ -9,22 +9,22 @@ const std::string MWWorld::Ptr::sEmptyString;
ESM::CellRef& MWWorld::Ptr::getCellRef() const ESM::CellRef& MWWorld::Ptr::getCellRef() const
{ {
assert (mCellRef); assert(mRef);
if (mContainerStore) if (mContainerStore)
mContainerStore->flagAsModified(); mContainerStore->flagAsModified();
return *mCellRef; return mRef->mRef;
} }
MWWorld::RefData& MWWorld::Ptr::getRefData() const MWWorld::RefData& MWWorld::Ptr::getRefData() const
{ {
assert (mRefData); assert(mRef);
if (mContainerStore) if (mContainerStore)
mContainerStore->flagAsModified(); mContainerStore->flagAsModified();
return *mRefData; return mRef->mData;
} }
void MWWorld::Ptr::setContainerStore (ContainerStore *store) void MWWorld::Ptr::setContainerStore (ContainerStore *store)

View file

@ -18,44 +18,40 @@ namespace MWWorld
typedef MWWorld::CellStore CellStore; typedef MWWorld::CellStore CellStore;
///< \deprecated ///< \deprecated
MWWorld::LiveCellRefBase *mPtr; MWWorld::LiveCellRefBase *mRef;
ESM::CellRef *mCellRef;
RefData *mRefData;
CellStore *mCell; CellStore *mCell;
ContainerStore *mContainerStore; ContainerStore *mContainerStore;
public: public:
Ptr() : mPtr (0), mCellRef (0), mRefData (0), mCell (0), mContainerStore (0) {} Ptr() : mRef(0), mCell(0), mContainerStore(0) { }
bool isEmpty() const bool isEmpty() const
{ {
return mPtr == 0; return mRef == 0;
} }
const std::string& getTypeName() const const std::string& getTypeName() const
{ {
return mPtr ? mPtr->mTypeName : sEmptyString; return mRef ? mRef->mTypeName : sEmptyString;
} }
Ptr (MWWorld::LiveCellRefBase *liveCellRef, CellStore *cell) Ptr (MWWorld::LiveCellRefBase *liveCellRef, CellStore *cell)
: mContainerStore (0) : mContainerStore (0)
{ {
mPtr = liveCellRef; mRef = liveCellRef;
mCellRef = &liveCellRef->mRef;
mRefData = &liveCellRef->mData;
mCell = cell; mCell = cell;
} }
template<typename T> template<typename T>
MWWorld::LiveCellRef<T> *get() const MWWorld::LiveCellRef<T> *get() const
{ {
if(mPtr && mPtr->mTypeName == typeid(T).name()) if(mRef && mRef->mTypeName == typeid(T).name())
return static_cast<MWWorld::LiveCellRef<T>*>(mPtr); return static_cast<MWWorld::LiveCellRef<T>*>(mRef);
std::stringstream str; std::stringstream str;
str<< "Bad LiveCellRef cast to "<<typeid(T).name()<<" from "; str<< "Bad LiveCellRef cast to "<<typeid(T).name()<<" from ";
if(mPtr != 0) str<< mPtr->mTypeName; if(mRef != 0) str<< mRef->mTypeName;
else str<< "an empty object"; else str<< "an empty object";
throw std::runtime_error(str.str()); throw std::runtime_error(str.str());
@ -85,7 +81,7 @@ namespace MWWorld
inline bool operator== (const Ptr& left, const Ptr& right) inline bool operator== (const Ptr& left, const Ptr& right)
{ {
return left.mRefData==right.mRefData; return left.mRef==right.mRef;
} }
inline bool operator!= (const Ptr& left, const Ptr& right) inline bool operator!= (const Ptr& left, const Ptr& right)
@ -95,7 +91,7 @@ namespace MWWorld
inline bool operator< (const Ptr& left, const Ptr& right) inline bool operator< (const Ptr& left, const Ptr& right)
{ {
return left.mRefData<right.mRefData; return left.mRef<right.mRef;
} }
inline bool operator>= (const Ptr& left, const Ptr& right) inline bool operator>= (const Ptr& left, const Ptr& right)

View file

@ -1446,7 +1446,7 @@ namespace MWWorld
// Set OnPCDrop Variable on item's script, if it has a script with that variable declared // Set OnPCDrop Variable on item's script, if it has a script with that variable declared
if(script != "") if(script != "")
item.mRefData->getLocals().setVarByInt(script, "onpcdrop", 1); item.getRefData().getLocals().setVarByInt(script, "onpcdrop", 1);
} }
bool World::placeObject (const Ptr& object, float cursorX, float cursorY) bool World::placeObject (const Ptr& object, float cursorX, float cursorY)
@ -1764,7 +1764,7 @@ namespace MWWorld
(*cellIt)->forEach<ListHandlesFunctor>(functor); (*cellIt)->forEach<ListHandlesFunctor>(functor);
for (std::vector<std::string>::iterator it = functor.mHandles.begin(); it != functor.mHandles.end(); ++it) for (std::vector<std::string>::iterator it = functor.mHandles.begin(); it != functor.mHandles.end(); ++it)
if (Misc::StringUtils::ciEqual(searchPtrViaHandle(*it).mCellRef->mOwner, npc.getCellRef().mRefID)) if (Misc::StringUtils::ciEqual(searchPtrViaHandle(*it).getCellRef().mOwner, npc.getCellRef().mRefID))
out.push_back(searchPtrViaHandle(*it)); out.push_back(searchPtrViaHandle(*it));
} }
} }