mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-31 19:45:32 +00:00
Restore support for inserting objects into a cell
This commit is contained in:
parent
0975f60d59
commit
fc449233be
19 changed files with 145 additions and 38 deletions
|
@ -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…
Reference in a new issue