mirror of
https://github.com/TES3MP/TES3MP.git
synced 2025-09-25 14:03:33 -04:00
Use CRTP to define CustomData clone function
This commit is contained in:
parent
e380470558
commit
bd33fa76b6
@ -46,11 +46,6 @@ namespace MWClass
|
|||||||
mStore.readState(inventory);
|
mStore.readState(inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> ContainerCustomData::clone() const
|
|
||||||
{
|
|
||||||
return std::make_unique<ContainerCustomData>(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
ContainerCustomData& ContainerCustomData::asContainerCustomData()
|
ContainerCustomData& ContainerCustomData::asContainerCustomData()
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -13,15 +13,13 @@ namespace ESM
|
|||||||
|
|
||||||
namespace MWClass
|
namespace MWClass
|
||||||
{
|
{
|
||||||
class ContainerCustomData : public MWWorld::CustomData
|
class ContainerCustomData : public MWWorld::TypedCustomData<ContainerCustomData>
|
||||||
{
|
{
|
||||||
MWWorld::ContainerStore mStore;
|
MWWorld::ContainerStore mStore;
|
||||||
public:
|
public:
|
||||||
ContainerCustomData(const ESM::Container& container, MWWorld::CellStore* cell);
|
ContainerCustomData(const ESM::Container& container, MWWorld::CellStore* cell);
|
||||||
ContainerCustomData(const ESM::InventoryState& inventory);
|
ContainerCustomData(const ESM::InventoryState& inventory);
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> clone() const override;
|
|
||||||
|
|
||||||
ContainerCustomData& asContainerCustomData() override;
|
ContainerCustomData& asContainerCustomData() override;
|
||||||
const ContainerCustomData& asContainerCustomData() const override;
|
const ContainerCustomData& asContainerCustomData() const override;
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ namespace
|
|||||||
namespace MWClass
|
namespace MWClass
|
||||||
{
|
{
|
||||||
|
|
||||||
class CreatureCustomData : public MWWorld::CustomData
|
class CreatureCustomData : public MWWorld::TypedCustomData<CreatureCustomData>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MWMechanics::CreatureStats mCreatureStats;
|
MWMechanics::CreatureStats mCreatureStats;
|
||||||
@ -62,8 +62,6 @@ namespace MWClass
|
|||||||
CreatureCustomData(const CreatureCustomData& other);
|
CreatureCustomData(const CreatureCustomData& other);
|
||||||
CreatureCustomData(CreatureCustomData&& other) noexcept = default;
|
CreatureCustomData(CreatureCustomData&& other) noexcept = default;
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> clone() const override;
|
|
||||||
|
|
||||||
CreatureCustomData& asCreatureCustomData() override
|
CreatureCustomData& asCreatureCustomData() override
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
@ -81,11 +79,6 @@ namespace MWClass
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> CreatureCustomData::clone() const
|
|
||||||
{
|
|
||||||
return std::make_unique<CreatureCustomData>(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
const Creature::GMST& Creature::getGmst()
|
const Creature::GMST& Creature::getGmst()
|
||||||
{
|
{
|
||||||
static GMST gmst;
|
static GMST gmst;
|
||||||
|
@ -10,15 +10,13 @@
|
|||||||
|
|
||||||
namespace MWClass
|
namespace MWClass
|
||||||
{
|
{
|
||||||
class CreatureLevListCustomData : public MWWorld::CustomData
|
class CreatureLevListCustomData : public MWWorld::TypedCustomData<CreatureLevListCustomData>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// actorId of the creature we spawned
|
// actorId of the creature we spawned
|
||||||
int mSpawnActorId;
|
int mSpawnActorId;
|
||||||
bool mSpawn; // Should a new creature be spawned?
|
bool mSpawn; // Should a new creature be spawned?
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> clone() const override;
|
|
||||||
|
|
||||||
CreatureLevListCustomData& asCreatureLevListCustomData() override
|
CreatureLevListCustomData& asCreatureLevListCustomData() override
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
@ -29,11 +27,6 @@ namespace MWClass
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> CreatureLevListCustomData::clone() const
|
|
||||||
{
|
|
||||||
return std::make_unique<CreatureLevListCustomData>(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string CreatureLevList::getName (const MWWorld::ConstPtr& ptr) const
|
std::string CreatureLevList::getName (const MWWorld::ConstPtr& ptr) const
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
|
@ -31,13 +31,11 @@
|
|||||||
|
|
||||||
namespace MWClass
|
namespace MWClass
|
||||||
{
|
{
|
||||||
class DoorCustomData : public MWWorld::CustomData
|
class DoorCustomData : public MWWorld::TypedCustomData<DoorCustomData>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MWWorld::DoorState mDoorState = MWWorld::DoorState::Idle;
|
MWWorld::DoorState mDoorState = MWWorld::DoorState::Idle;
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> clone() const override;
|
|
||||||
|
|
||||||
DoorCustomData& asDoorCustomData() override
|
DoorCustomData& asDoorCustomData() override
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
@ -48,11 +46,6 @@ namespace MWClass
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> DoorCustomData::clone() const
|
|
||||||
{
|
|
||||||
return std::make_unique<DoorCustomData>(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Door::insertObjectRendering (const MWWorld::Ptr& ptr, const std::string& model, MWRender::RenderingInterface& renderingInterface) const
|
void Door::insertObjectRendering (const MWWorld::Ptr& ptr, const std::string& model, MWRender::RenderingInterface& renderingInterface) const
|
||||||
{
|
{
|
||||||
if (!model.empty())
|
if (!model.empty())
|
||||||
|
@ -246,15 +246,13 @@ namespace
|
|||||||
namespace MWClass
|
namespace MWClass
|
||||||
{
|
{
|
||||||
|
|
||||||
class NpcCustomData : public MWWorld::CustomData
|
class NpcCustomData : public MWWorld::TypedCustomData<NpcCustomData>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MWMechanics::NpcStats mNpcStats;
|
MWMechanics::NpcStats mNpcStats;
|
||||||
MWMechanics::Movement mMovement;
|
MWMechanics::Movement mMovement;
|
||||||
MWWorld::InventoryStore mInventoryStore;
|
MWWorld::InventoryStore mInventoryStore;
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> clone() const override;
|
|
||||||
|
|
||||||
NpcCustomData& asNpcCustomData() override
|
NpcCustomData& asNpcCustomData() override
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
@ -265,11 +263,6 @@ namespace MWClass
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::unique_ptr<MWWorld::CustomData> NpcCustomData::clone() const
|
|
||||||
{
|
|
||||||
return std::make_unique<NpcCustomData>(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
const Npc::GMST& Npc::getGmst()
|
const Npc::GMST& Npc::getGmst()
|
||||||
{
|
{
|
||||||
static GMST gmst;
|
static GMST gmst;
|
||||||
|
@ -40,6 +40,15 @@ namespace MWWorld
|
|||||||
virtual MWClass::CreatureLevListCustomData& asCreatureLevListCustomData();
|
virtual MWClass::CreatureLevListCustomData& asCreatureLevListCustomData();
|
||||||
virtual const MWClass::CreatureLevListCustomData& asCreatureLevListCustomData() const;
|
virtual const MWClass::CreatureLevListCustomData& asCreatureLevListCustomData() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct TypedCustomData : CustomData
|
||||||
|
{
|
||||||
|
std::unique_ptr<CustomData> clone() const final
|
||||||
|
{
|
||||||
|
return std::make_unique<T>(*static_cast<const T*>(this));
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user