sound_dug = SimpleSoundSpec();
}
-void ContentFeatures::serialize(std::ostream &os, u16 protocol_version)
+void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) const
{
if(protocol_version < 24){
serializeOld(os, protocol_version);
virtual content_t allocateDummy(const std::string &name);
virtual void updateAliases(IItemDefManager *idef);
virtual void updateTextures(IGameDef *gamedef,
- /*argument: */void (*progress_callback)(void *progress_args, u32 progress, u32 max_progress),
- /*argument: */void *progress_callback_args);
- void serialize(std::ostream &os, u16 protocol_version);
+ void (*progress_cbk)(void *progress_args, u32 progress, u32 max_progress),
+ void *progress_cbk_args);
+ void serialize(std::ostream &os, u16 protocol_version) const;
void deSerialize(std::istream &is);
inline virtual bool getNodeRegistrationStatus() const;
virtual void pendNodeResolve(NodeResolver *nr, NodeResolveMethod how);
virtual bool cancelNodeResolveCallback(NodeResolver *nr);
virtual void runNodeResolveCallbacks();
+ virtual void resetNodeResolveState();
private:
void addNameIdMapping(content_t i, std::string name);
m_group_to_items.clear();
m_next_id = 0;
- m_node_registration_complete = false;
- m_pending_resolve_callbacks.clear();
+ resetNodeResolveState();
u32 initial_length = 0;
initial_length = MYMAX(initial_length, CONTENT_UNKNOWN + 1);
#endif
-void CNodeDefManager::serialize(std::ostream &os, u16 protocol_version)
+void CNodeDefManager::serialize(std::ostream &os, u16 protocol_version) const
{
writeU8(os, 1); // version
u16 count = 0;
if (i == CONTENT_IGNORE || i == CONTENT_AIR
|| i == CONTENT_UNKNOWN)
continue;
- ContentFeatures *f = &m_content_features[i];
+ const ContentFeatures *f = &m_content_features[i];
if (f->name == "")
continue;
writeU16(os2, i);
//// Serialization of old ContentFeatures formats
-void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version)
+void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version) const
{
if (protocol_version == 13)
{
}
+void CNodeDefManager::resetNodeResolveState()
+{
+ m_node_registration_complete = false;
+ m_pending_resolve_callbacks.clear();
+}
+
+
////
//// NodeResolver
////
ContentFeatures();
~ContentFeatures();
void reset();
- void serialize(std::ostream &os, u16 protocol_version);
+ void serialize(std::ostream &os, u16 protocol_version) const;
void deSerialize(std::istream &is);
- void serializeOld(std::ostream &os, u16 protocol_version);
+ void serializeOld(std::ostream &os, u16 protocol_version) const;
void deSerializeOld(std::istream &is, int version);
/*
NODE_RESOLVE_DEFERRED,
};
-class INodeDefManager
-{
+class INodeDefManager {
public:
INodeDefManager(){}
virtual ~INodeDefManager(){}
// Get node definition
- virtual const ContentFeatures& get(content_t c) const=0;
- virtual const ContentFeatures& get(const MapNode &n) const=0;
+ virtual const ContentFeatures &get(content_t c) const=0;
+ virtual const ContentFeatures &get(const MapNode &n) const=0;
virtual bool getId(const std::string &name, content_t &result) const=0;
virtual content_t getId(const std::string &name) const=0;
// Allows "group:name" in addition to regular node names
virtual void getIds(const std::string &name, std::set<content_t> &result)
const=0;
- virtual const ContentFeatures& get(const std::string &name) const=0;
+ virtual const ContentFeatures &get(const std::string &name) const=0;
- virtual void serialize(std::ostream &os, u16 protocol_version)=0;
+ virtual void serialize(std::ostream &os, u16 protocol_version) const=0;
virtual bool getNodeRegistrationStatus() const=0;
- virtual void setNodeRegistrationStatus(bool completed)=0;
virtual void pendNodeResolve(NodeResolver *nr, NodeResolveMethod how)=0;
virtual bool cancelNodeResolveCallback(NodeResolver *nr)=0;
- virtual void runNodeResolveCallbacks()=0;
};
-class IWritableNodeDefManager : public INodeDefManager
-{
+class IWritableNodeDefManager : public INodeDefManager {
public:
IWritableNodeDefManager(){}
virtual ~IWritableNodeDefManager(){}
virtual IWritableNodeDefManager* clone()=0;
// Get node definition
- virtual const ContentFeatures& get(content_t c) const=0;
- virtual const ContentFeatures& get(const MapNode &n) const=0;
+ virtual const ContentFeatures &get(content_t c) const=0;
+ virtual const ContentFeatures &get(const MapNode &n) const=0;
virtual bool getId(const std::string &name, content_t &result) const=0;
// If not found, returns CONTENT_IGNORE
virtual content_t getId(const std::string &name) const=0;
// Allows "group:name" in addition to regular node names
virtual void getIds(const std::string &name, std::set<content_t> &result)
- const=0;
+ const=0;
// If not found, returns the features of CONTENT_UNKNOWN
- virtual const ContentFeatures& get(const std::string &name) const=0;
+ virtual const ContentFeatures &get(const std::string &name) const=0;
// Register node definition by name (allocate an id)
// If returns CONTENT_IGNORE, could not allocate id
Update tile textures to latest return values of TextueSource.
*/
virtual void updateTextures(IGameDef *gamedef,
- /*argument: */void (*progress_callback)(void *progress_args, u32 progress, u32 max_progress),
- /*argument: */void *progress_callback_args)=0;
+ void (*progress_cbk)(void *progress_args, u32 progress, u32 max_progress),
+ void *progress_cbk_args)=0;
- virtual void serialize(std::ostream &os, u16 protocol_version)=0;
+ virtual void serialize(std::ostream &os, u16 protocol_version) const=0;
virtual void deSerialize(std::istream &is)=0;
virtual bool getNodeRegistrationStatus() const=0;
virtual void pendNodeResolve(NodeResolver *nr, NodeResolveMethod how)=0;
virtual bool cancelNodeResolveCallback(NodeResolver *nr)=0;
virtual void runNodeResolveCallbacks()=0;
+ virtual void resetNodeResolveState()=0;
};
IWritableNodeDefManager *createNodeDefManager();
void runTests(IGameDef *gamedef);
- void testNodeResolving(INodeDefManager *ndef);
- void testPendingResolveCancellation(INodeDefManager *ndef);
- void testDirectResolveMethod(INodeDefManager *ndef);
- void testNoneResolveMethod(INodeDefManager *ndef);
+ void testNodeResolving(IWritableNodeDefManager *ndef);
+ void testPendingResolveCancellation(IWritableNodeDefManager *ndef);
+ void testDirectResolveMethod(IWritableNodeDefManager *ndef);
+ void testNoneResolveMethod(IWritableNodeDefManager *ndef);
};
static TestNodeResolver g_test_instance;
void TestNodeResolver::runTests(IGameDef *gamedef)
{
- IWritableNodeDefManager *parent_ndef;
- INodeDefManager *ndef;
+ IWritableNodeDefManager *ndef =
+ (IWritableNodeDefManager *)gamedef->getNodeDefManager();
- parent_ndef = (IWritableNodeDefManager *)gamedef->getNodeDefManager();
-
- ndef = parent_ndef->clone();
+ ndef->resetNodeResolveState();
TEST(testNodeResolving, ndef);
- delete ndef;
- ndef = parent_ndef->clone();
+ ndef->resetNodeResolveState();
TEST(testPendingResolveCancellation, ndef);
- delete ndef;
- ndef = parent_ndef->clone();
+ ndef->resetNodeResolveState();
TEST(testDirectResolveMethod, ndef);
- delete ndef;
- ndef = parent_ndef->clone();
+ ndef->resetNodeResolveState();
TEST(testNoneResolveMethod, ndef);
- delete ndef;
}
class Foobar : public NodeResolver {
}
-void TestNodeResolver::testNodeResolving(INodeDefManager *ndef)
+void TestNodeResolver::testNodeResolving(IWritableNodeDefManager *ndef)
{
Foobar foobar;
size_t i;
}
-void TestNodeResolver::testPendingResolveCancellation(INodeDefManager *ndef)
+void TestNodeResolver::testPendingResolveCancellation(IWritableNodeDefManager *ndef)
{
Foobaz foobaz1;
foobaz1.test_content1 = 1234;
}
-void TestNodeResolver::testDirectResolveMethod(INodeDefManager *ndef)
+void TestNodeResolver::testDirectResolveMethod(IWritableNodeDefManager *ndef)
{
Foobaz foobaz;
}
-void TestNodeResolver::testNoneResolveMethod(INodeDefManager *ndef)
+void TestNodeResolver::testNoneResolveMethod(IWritableNodeDefManager *ndef)
{
Foobaz foobaz;