1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-07 16:48:40 +00:00

sao prototype global variables no longer depend on link order to be correctly added to factory

This commit is contained in:
sapier 2012-01-15 19:43:31 +01:00
parent 569156b013
commit de166e75a1
2 changed files with 12 additions and 9 deletions

View file

@ -43,8 +43,8 @@ ServerActiveObject* ServerActiveObject::create(u8 type,
const std::string &data)
{
// Find factory function
core::map<u16, Factory>::Node *n;
n = m_types.find(type);
core::map<u8, Factory>::Node *n;
n = ServerActiveObject::getTypes().find(type);
if(n == NULL)
{
// If factory is not found, just return.
@ -58,13 +58,13 @@ ServerActiveObject* ServerActiveObject::create(u8 type,
return object;
}
void ServerActiveObject::registerType(u16 type, Factory f)
void ServerActiveObject::registerType(u8 type, Factory f)
{
core::map<u16, Factory>::Node *n;
n = m_types.find(type);
core::map<u8, Factory>::Node *n;
n = ServerActiveObject::getTypes().find(type);
if(n)
return;
m_types.insert(type, f);
ServerActiveObject::getTypes().insert(type, f);
}
void ServerActiveObject::getWieldDiggingProperties(ToolDiggingProperties *dst)

View file

@ -200,14 +200,17 @@ protected:
typedef ServerActiveObject* (*Factory)
(ServerEnvironment *env, v3f pos,
const std::string &data);
static void registerType(u16 type, Factory f);
static void registerType(u8 type, Factory f);
ServerEnvironment *m_env;
v3f m_base_position;
private:
// Used for creating objects based on type
static core::map<u16, Factory> m_types;
static core::map<u8, Factory>& getTypes()
{
static core::map<u8, Factory> types;
return types;
}
};
#endif