Restore support for inserting objects into a cell

openmw-38
scrawl 9 years ago
parent 0975f60d59
commit fc449233be

@ -130,7 +130,6 @@ namespace MWClass
MWWorld::LiveCellRef<ESM::Activator> *ref =
ptr.get<ESM::Activator>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Activator>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
}

@ -147,9 +147,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Apparatus> *ref =
ptr.get<ESM::Apparatus>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Apparatus>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
bool Apparatus::canSell (const MWWorld::Ptr& item, int npcServices) const

@ -381,9 +381,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Armor> *ref =
ptr.get<ESM::Armor>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Armor>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
int Armor::getEnchantmentPoints (const MWWorld::Ptr& ptr) const

@ -186,9 +186,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Book> *ref =
ptr.get<ESM::Book>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Book>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
int Book::getEnchantmentPoints (const MWWorld::Ptr& ptr) const

@ -275,9 +275,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Clothing> *ref =
ptr.get<ESM::Clothing>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Clothing>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
int Clothing::getEnchantmentPoints (const MWWorld::Ptr& ptr) const

@ -292,9 +292,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Container> *ref =
ptr.get<ESM::Container>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Container>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
void Container::readAdditionalState (const MWWorld::Ptr& ptr, const ESM::ObjectState& state) const

@ -599,9 +599,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Creature> *ref =
ptr.get<ESM::Creature>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Creature>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
bool Creature::isBipedal(const MWWorld::Ptr &ptr) const

@ -309,9 +309,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Door> *ref =
ptr.get<ESM::Door>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Door>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
void Door::ensureCustomData(const MWWorld::Ptr &ptr) const

@ -184,9 +184,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Ingredient> *ref =
ptr.get<ESM::Ingredient>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Ingredient>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
bool Ingredient::canSell (const MWWorld::Ptr& item, int npcServices) const

@ -216,9 +216,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Light> *ref =
ptr.get<ESM::Light>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Light>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
bool Light::canSell (const MWWorld::Ptr& item, int npcServices) const

@ -165,9 +165,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Lockpick> *ref =
ptr.get<ESM::Lockpick>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Lockpick>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
bool Lockpick::canSell (const MWWorld::Ptr& item, int npcServices) const

@ -194,7 +194,6 @@ namespace MWClass
{
MWWorld::Ptr newPtr;
/*
const MWWorld::ESMStore &store =
MWBase::Environment::get().getWorld()->getStore();
@ -216,15 +215,15 @@ namespace MWClass
MWWorld::ManualRef newRef(store, base);
MWWorld::LiveCellRef<ESM::Miscellaneous> *ref =
newRef.getPtr().get<ESM::Miscellaneous>();
newPtr = MWWorld::Ptr(&cell.get<ESM::Miscellaneous>().insert(*ref), &cell);
newPtr = MWWorld::Ptr(cell.insert(ref), &cell);
newPtr.getCellRef().setGoldValue(goldAmount);
newPtr.getRefData().setCount(1);
} else {
MWWorld::LiveCellRef<ESM::Miscellaneous> *ref =
ptr.get<ESM::Miscellaneous>();
newPtr = MWWorld::Ptr(&cell.get<ESM::Miscellaneous>().insert(*ref), &cell);
newPtr = MWWorld::Ptr(cell.insert(ref), &cell);
}
*/
return newPtr;
}

@ -1129,9 +1129,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::NPC> *ref =
ptr.get<ESM::NPC>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::NPC>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
int Npc::getSkill(const MWWorld::Ptr& ptr, int skill) const

@ -177,9 +177,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Potion> *ref =
ptr.get<ESM::Potion>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Potion>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
bool Potion::canSell (const MWWorld::Ptr& item, int npcServices) const

@ -164,9 +164,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Probe> *ref =
ptr.get<ESM::Probe>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Probe>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
bool Probe::canSell (const MWWorld::Ptr& item, int npcServices) const

@ -159,9 +159,8 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Repair> *ref =
ptr.get<ESM::Repair>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Repair>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
boost::shared_ptr<MWWorld::Action> Repair::use (const MWWorld::Ptr& ptr) const

@ -59,8 +59,7 @@ namespace MWClass
{
MWWorld::LiveCellRef<ESM::Static> *ref =
ptr.get<ESM::Static>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Static>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
}

@ -417,8 +417,7 @@ namespace MWClass
MWWorld::LiveCellRef<ESM::Weapon> *ref =
ptr.get<ESM::Weapon>();
return MWWorld::Ptr();
//return MWWorld::Ptr(&cell.get<ESM::Weapon>().insert(*ref), &cell);
return MWWorld::Ptr(cell.insert(ref), &cell);
}
int Weapon::getEnchantmentPoints (const MWWorld::Ptr& ptr) const

@ -97,6 +97,9 @@ namespace MWWorld
public:
template <typename T>
LiveCellRefBase* insert(const LiveCellRef<T>* ref);
CellStore (const ESM::Cell *cell_);
const ESM::Cell *getCell() const;
@ -234,6 +237,128 @@ namespace MWWorld
MWMechanics::PathgridGraph mPathgridGraph;
};
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Activator>(const LiveCellRef<ESM::Activator>* ref)
{
mHasState = true;
return &mActivators.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Potion>(const LiveCellRef<ESM::Potion>* ref)
{
mHasState = true;
return &mPotions.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Apparatus>(const LiveCellRef<ESM::Apparatus>* ref)
{
mHasState = true;
return &mAppas.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Armor>(const LiveCellRef<ESM::Armor>* ref)
{
mHasState = true;
return &mArmors.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Book>(const LiveCellRef<ESM::Book>* ref)
{
mHasState = true;
return &mBooks.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Clothing>(const LiveCellRef<ESM::Clothing>* ref)
{
mHasState = true;
return &mClothes.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Container>(const LiveCellRef<ESM::Container>* ref)
{
mHasState = true;
return &mContainers.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Creature>(const LiveCellRef<ESM::Creature>* ref)
{
mHasState = true;
return &mCreatures.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Door>(const LiveCellRef<ESM::Door>* ref)
{
mHasState = true;
return &mDoors.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Ingredient>(const LiveCellRef<ESM::Ingredient>* ref)
{
mHasState = true;
return &mIngreds.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::CreatureLevList>(const LiveCellRef<ESM::CreatureLevList>* ref)
{
mHasState = true;
return &mCreatureLists.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::ItemLevList>(const LiveCellRef<ESM::ItemLevList>* ref)
{
mHasState = true;
return &mItemLists.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Light>(const LiveCellRef<ESM::Light>* ref)
{
mHasState = true;
return &mLights.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Lockpick>(const LiveCellRef<ESM::Lockpick>* ref)
{
mHasState = true;
return &mLockpicks.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Miscellaneous>(const LiveCellRef<ESM::Miscellaneous>* ref)
{
mHasState = true;
return &mMiscItems.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::NPC>(const LiveCellRef<ESM::NPC>* ref)
{
mHasState = true;
return &mNpcs.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Probe>(const LiveCellRef<ESM::Probe>* ref)
{
mHasState = true;
return &mProbes.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Repair>(const LiveCellRef<ESM::Repair>* ref)
{
mHasState = true;
return &mRepairs.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Static>(const LiveCellRef<ESM::Static>* ref)
{
mHasState = true;
return &mStatics.insert(*ref);
}
template<>
inline LiveCellRefBase* CellStore::insert<ESM::Weapon>(const LiveCellRef<ESM::Weapon>* ref)
{
mHasState = true;
return &mWeapons.insert(*ref);
}
bool operator== (const CellStore& left, const CellStore& right);
bool operator!= (const CellStore& left, const CellStore& right);
}

Loading…
Cancel
Save